求大牛指点错误所在(16点基4-FFT实现)
不知道错误在哪里,和MATLAB自带的FFT函数调用的结果不一样,数据似乎是对的,就是顺序不一样,但是似乎倒位序没有错误。求指点x=[3 0 7 0 0 1 1 1 2 8 0 0 0 0 0 0];
X1=zeros(16,1);
W=[1 1 1 1;1 -i -1 i;1 -1 1 -1;1 j -1 -j];
%X1(k0,n0)利用4*k0+n0+1来用一维数组来记录
for n0=0:3 %具体的求解思路在课本P170
X1(n0+1)=W(1,:)*[x(n0+1),x(5+n0),x(9+n0),x(12+n0)]';
X1(n0+5)=W(2,:)*[x(n0+1),x(5+n0),x(9+n0),x(12+n0)]';
X1(n0+9)=W(3,:)*[x(n0+1),x(5+n0),x(9+n0),x(12+n0)]';
X1(n0+13)=W(4,:)*[x(n0+1),x(5+n0),x(9+n0),x(12+n0)]';
end
X2=zeros(16,1);
for k0=0:3 %X2(k0,k1)利用4*k0+k1+1来用一维数组来记录,具体的计算矩阵在课本P171
X2(4*k0+1)=W(1,:)*[X1(4*k0+1),X1(4*k0+2)*exp(-i*pi/8*k0),X1(4*k0+3)*exp(-i*pi/4*k0),X1(4*k0+4)*exp(- i*pi/8*3*k0)]';
X2(4*k0+2)=W(2,:)*[X1(4*k0+1),X1(4*k0+2)*exp(-i*pi/8*k0),X1(4*k0+3)*exp(-i*pi/4*k0),X1(4*k0+4)*exp(- i*pi/8*3*k0)]';
X2(4*k0+3)=W(3,:)*[X1(4*k0+1),X1(4*k0+2)*exp(-i*pi/8*k0),X1(4*k0+3)*exp(-i*pi/4*k0),X1(4*k0+4)*exp(- i*pi/8*3*k0)]';
X2(4*k0+4)=W(4,:)*[X1(4*k0+1),X1(4*k0+2)*exp(-i*pi/8*k0),X1(4*k0+3)*exp(-i*pi/4*k0),X1(4*k0+4)*exp(- i*pi/8*3*k0)]';
end
% 倒位序
X3=zeros(16,1);
for k=1:16
k0=fix((k-1)/4);
k1=k-1-k0*4;
X3(k1*4+k0+1)=X2(k);
end