基4-FFT算法编程Word格式.docx
《基4-FFT算法编程Word格式.docx》由会员分享,可在线阅读,更多相关《基4-FFT算法编程Word格式.docx(6页珍藏版)》请在冰点文库上搜索。
基4-FFT是混合基FFT的一个特例。
通过编写基4-FFT算法程序,加深对FFT思路、算法结构的理解。
二、实验内容和步骤
编写16点基4-FFT算法的MATLAB程序(studentname.m文件)。
产生16点输入序列x,出生年月日(8位)+自己学号后八位产生。
算出16点频谱序列X,用stem(X)显示频谱图形。
三、主要仪器设备
用MATLAB。
四、操作方法和实验步骤
(参见“二、实验内容和步骤”)
五、实验数据记录和处理
5.1基4-FFT算法思路、流图结构简述如下
5.1.1.算法思路:
在时域上按n的特点对序列x(n)进行不断的以4为基数的分组以及位序调整,进而通过逐级的蝶形复合处理,间接地完成高点数DFT的计算,由此达到降低运算量以及节省存储空间的目的。
令序列x(n)的N点DFT结果为X(k),且有N=4m,按(n)4的结果对序列x(n)分组如下:
x0n=x4nX0k=DFT4m-1{x0(n)}
x1n=x(4n+1) X1k=DFT4m-1{x1(n)}
x2n=x(4n+2) X2k=DFT4m-1{x2(n)}
x3n=x(4n+3) X3k=DFT4m-1{x3(n)}
0≤n≤N4-1 0≤k≤N-1=4m-1
则有:
Xk=X0k+WNkX1k+WN2kX2k+WN3kX3k
Xk+4m-1=X0k-jWNkX1k-WN2kX2k+jWN3kX3k
Xk+2×
4m-1=X0k-WNkX1k+WN2kX2k-WN3kX3k
Xk+3×
4m-1=X0k+jWNkX1k-WN2kX2k-jWN3kX3k
5.1.2蝶形图如下:
对于N/4个点继续进行分组和蝶形复合处理,由原序列x(n)出发,完成位序调整后,经过m级蝶形复合便可求得序列X(k)。
总体过程如下图:
5.216点基4-FFT算法的流图绘出如下(后面省略了系数-1,-j,j,具体系数对应项见上一蝶形图)
-j
-1
j
5.316点基4-FFT算法的MATLAB程序(studentname.m)列出如下
x=[1,9,9,5,0,3,2,5,3,0,1,0,4,7,2,3];
X=fft4_16(x);
X1=fft(x);
n=1:
1:
16;
figure
(1)
stem(n,x,'
filled'
);
title('
InputSequence'
axis([017010]);
figure
(2)
stem(n,X,'
OutputSequence'
axis([017-2060]);
figure(3)
stem(n,X1,'
OutputFFTSequence'
function[X]=fft4_16(x)
X=zeros(1,16);
%初始化输出的频谱序列
N=16;
W=exp(-1j*2*pi/N);
W4=dftmtx(4);
%求出蝶形运算的系数矩阵
x0=[x
(1);
x(5);
x(9);
x(13)];
%先对原序列进行位序调整
x1=[x
(2);
x(6);
x(10);
x(14)];
x2=[x(3);
x(7);
x(11);
x(15)];
x3=[x(4);
x(8);
x(12);
x(16)];
X0=W4*x0;
%第一级蝶形运算
X1=W4*x1;
X2=W4*x2;
X3=W4*x3;
fork=0:
3%第二级蝶形运算
t=W4*[X0(k+1);
(W^k)*X1(k+1);
(W^(2*k))*X2(k+1);
(W^(3*k))*X3(k+1)];
X(k+1)=t
(1);
X(k+4+1)=t
(2);
X(k+2*4+1)=t(3);
X(k+3*4+1)=t(4);
end
5.4用自己的学号构成的输入序列为(列出数值,插入图形)
x1=[1,9,9,5,0,3,2,5,3,0,1,0,4,7,2,3];
5.5对应的输出频谱序列为(列出数值,插入图形)
X={54.0000+0.0000i13.5682-6.7903i1.4142-3.1716i-13.2930-19.4368i
-6.0000-6.0000i-2.0207-0.1231i-1.4142+8.8284i-6.2545-3.4765i
-10.0000-0.0000i-6.2545+3.4765i-1.4142-8.8284i-2.0207+0.1231i
-6.0000+6.0000i-13.2930+19.4368i1.4142+3.1716i13.5682+6.7903i}
六、实验结果与分析
1.基4-FFT计算结果与matlab自带fft函数计算结果对比
以下是matlab自带fft函数的计算结果
由上述序列和图像比较可以看到,matlab自带的函数fft所得结果与我的基于4-FFT算法和代码所得结果是一直的,说明我的基于4-FFT算法和代码是正确的,此外可以看出,基于4与基于2(matlab)的FFT算法的运算结果是一致,即其本质是一致的。
6