📄 matlabfft.txt
字号:
用函数FFT近似画出x(n)=R10(n)在(-4pi,4pi)上的幅频相应曲线
以下是我在MatLab里写的16点Base-4 FFT.
"%"后面的是我写的注释
xi=[1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0]; %输入序列,按照你的要求是R10(n)
trans=[1,1,1,1;1,-j,-1,j;1,-1,1,-1;1,j,-1,-j]; %系数矩阵
x=zeros(4); %储存 输入序列转换成 Base-4形式后的矩阵
X1=zeros(4); %储存 一次Base-4 FFT蝶形运算后的矩阵
X2=zeros(4); %储存 两次Base-4 FFT蝶形运算后的矩阵
W=zeros(1,4).'; %储存 旋转因子矩阵
y=zeros(1,16); %储存 整序后的结果
for n=1:4
x(n,1:4)=xi(:,4*n-3:4*n); %对输入整序
end
for n=1:4
X1(:,n)=trans*x(:,n); %第一次蝶形运算
end
for n=1:4
for k=1:4
W(k,1)=exp(-j.*2.*pi./16.*(k-1).*(n-1)); %取得第二次蝶形运算的旋转因子矩阵
end
X2(n,:)=(trans*(X1(n,:).'.*W)).'; %第二次蝶形运算
end
for n=1:4
y(:,4*n-3:4*n)=X2(:,n).'; %对输出整序
end
subplot(3,2,1); %以下是输出到屏幕的代码
stem(real(xi));
axis([0,17,0,7]);
title('时域实部');
subplot(3,2,2);
stem(imag(xi));
axis([0,17,0,1]);
title('时域虚部');
subplot(3,2,3);
stem(real(y));
axis([0,17,-24,24]);
title('频域实部');
subplot(3,2,4);
stem(imag(y));
axis([0,17,-10,10]);
title('频域虚部');
subplot(3,2,5);
stem(abs(y));
axis([0,17,0,22]);
title('频域-模');
subplot(3,2,6);
stem(angle(y));
axis([0,17,-2*pi,2*pi]);
title('频域相角');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -