FFT MATLAB 代码出现一点小问题,
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/11 06:20:28
FFT MATLAB 代码出现一点小问题,
clear; clc;
N=16;%离散数组长度
n=0:N-1;%时域采样
xn=cos(pi*n/6);%产生离散数组
M=nextpow2(N);%计算常量M,N
A=[xn,zeros(1,N-length(xn))];
disp('输入到各储存单元的数据:'),disp(A);
J=0;%给倒序数赋初值
for I=0:N-1%使原来数组次序改变
if I=K;
J=J-K; K=K/2;
end
J=J+K;
end
disp('倒序后各储存单元的数据:'),disp(A);%将变换次序以后的数组赋%值给A
WN=exp(-j*2*pi/N);
for L=1:M%%最外层循环为蝴蝶算法的总行数
disp('运算级次:'),disp(L);
B=2^(L-1);%M为第r行的组数
for R=0:B-1;
P=2^(M-L)*R;
for K=R:2^L:N-2;
T=A(K+1)+A(K+B+1)*WN^P;
A(K+B+1)=A(K+1)-A(K+B+1)*WN^P;
A(K+1)=T
end
end
disp('本级运算后储存单元的数据:'),disp(A);
end
disp('输出各储存单元的数据:'),Kx=A%输出运算结果
%telapsed = toc(tstart);
clear; clc;
N=16;%离散数组长度
n=0:N-1;%时域采样
xn=cos(pi*n/6);%产生离散数组
M=nextpow2(N);%计算常量M,N
A=[xn,zeros(1,N-length(xn))];
disp('输入到各储存单元的数据:'),disp(A);
J=0;%给倒序数赋初值
for I=0:N-1%使原来数组次序改变
if I=K;
J=J-K; K=K/2;
end
J=J+K;
end
disp('倒序后各储存单元的数据:'),disp(A);%将变换次序以后的数组赋%值给A
WN=exp(-j*2*pi/N);
for L=1:M%%最外层循环为蝴蝶算法的总行数
disp('运算级次:'),disp(L);
B=2^(L-1);%M为第r行的组数
for R=0:B-1;
P=2^(M-L)*R;
for K=R:2^L:N-2;
T=A(K+1)+A(K+B+1)*WN^P;
A(K+B+1)=A(K+1)-A(K+B+1)*WN^P;
A(K+1)=T
end
end
disp('本级运算后储存单元的数据:'),disp(A);
end
disp('输出各储存单元的数据:'),Kx=A%输出运算结果
%telapsed = toc(tstart);
clear; clc;
N=16; %离散数组长度
n=0:N-1; %时域采样
xn=cos(pi*n/6); %产生离散数组
M=nextpow2(N); %计算常量M,N
A=[xn,zeros(1,N-length(xn))];
disp('输入到各储存单元的数据:'),disp(A);
A=A(:,N:-1:1);
disp('倒序后各储存单元的数据:'),disp(A); %将变换次序以后的数组赋%值给A
WN=exp(-j*2*pi/N);
for L=1:M%%最外层循环为蝴蝶算法的总行数
disp('运算级次:'),disp(L);
B=2^(L-1);%M为第r行的组数
for R=0:B-1;
P=2^(M-L)*R;
for K=R:2^L:N-2;
T=A(K+1)+A(K+B+1)*WN^P;
A(K+B+1)=A(K+1)-A(K+B+1)*WN^P;
A(K+1)=T
end
end
disp('本级运算后储存单元的数据:'),disp(A);
end
disp('输出各储存单元的数据:'),Kx=A%输出运算结果
%telapsed = toc(tstart);
N=16; %离散数组长度
n=0:N-1; %时域采样
xn=cos(pi*n/6); %产生离散数组
M=nextpow2(N); %计算常量M,N
A=[xn,zeros(1,N-length(xn))];
disp('输入到各储存单元的数据:'),disp(A);
A=A(:,N:-1:1);
disp('倒序后各储存单元的数据:'),disp(A); %将变换次序以后的数组赋%值给A
WN=exp(-j*2*pi/N);
for L=1:M%%最外层循环为蝴蝶算法的总行数
disp('运算级次:'),disp(L);
B=2^(L-1);%M为第r行的组数
for R=0:B-1;
P=2^(M-L)*R;
for K=R:2^L:N-2;
T=A(K+1)+A(K+B+1)*WN^P;
A(K+B+1)=A(K+1)-A(K+B+1)*WN^P;
A(K+1)=T
end
end
disp('本级运算后储存单元的数据:'),disp(A);
end
disp('输出各储存单元的数据:'),Kx=A%输出运算结果
%telapsed = toc(tstart);