📄 arotineoffft2.txt
字号:
function y=dft(x,N)
%x为输入信号
%N为所取的点数
y=zeros(1,N);
for k=1:N
for m=1:N
y(k)=y(k)+x(m)*exp(-j*2*pi*(k-1)*(m-1)/N);
end;
end;function y=dft(x,N)
%x为输入信号
%N为所取的点数
y=zeros(1,N);
for k=1:N
for m=1:N
y(k)=y(k)+x(m)*exp(-j*2*pi*(k-1)*(m-1)/N);
end;
end;
N=256;
x1=[1 1 1 1];
x=[x1 zeros(1,N-length(x1))];
L=1;
M=log2(N);
while L<=M
LE=2^L;
LE1=LE/2;
U=1;
W=exp(-j*2*pi/LE);
J=0;
while J<=LE1-1;
I=J;
while I<=N-1
IP=I+LE1;
T=x(I+1)+x(IP+1);
x(IP+1)=(x(I+1)-x(IP+1))*U;
x(I+1)=T;
I=I+LE;
end
U=U*W;
J=J+1;
end
L=L+1;
end
x;
NV2=N/2;
NM1=N-1;
I=0;
J=0;
while I<NM1
if I<J
T=x(J+1);
x(J+1)=x(I+1);
x(I+1)=T;
end
K=NV2;
while K<=J
J=J-K;
K=K/2;
end
J=J+K;
I=I+1;
end
x;
n=0:N-1;
q=n*2*pi/N;
stem(q,angle(x),'.')
---------------------------------------------
这是DIT-FFT的程序,我就是根据这个来修改的,测试通过,而DIF-FFT则波形不对。
N=256;
x1=[1 1 1 1];
x=[x1 zeros(1,N-length(x1))];
NV2=N/2;
NM1=N-1;
I=0;
J=0;
while I<NM1
if I<J
T=x(J+1);
x(J+1)=x(I+1);
x(I+1)=T;
end
K=NV2;
while K<=J
J=J-K;
K=K/2;
end
J=J+K;
I=I+1;
end
x;
L=1;
M=log2(N);
while L<=M
LE=2^L;
LE1=LE/2;
U=1;
W=exp(-j*2*pi/LE);
J=0;
while J<=LE1-1;
I=J;
while I<=N-1
IP=I+LE1;
T=x(IP+1)*U;
x(IP+1)=x(I+1)-T;
x(I+1)=x(I+1)+T;
I=I+LE;
end
U=U*W;
J=J+1;
end
L=L+1;
end
x;
n=0:N-1;
q=n*2*pi/N;
stem(q,abs(x),'.')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -