2。2。2仿真软件 MATLAB 介绍
MATLAB(matrix laboratory)是一个可以进行多维数值运算的运算环境,也是第四代编程 语言。是由 Mathworks 公司开发的专用编程语言,它允许矩阵操作、数据和函数的绘图、算 法的实现、用户界面的创建和与其他编程语言进行程序接口,例如 C 语言、C++、JAVA、Fortran 和 Python 等。
经过多年的发展,MATLAB 已经成为一个系列产品。除了主函数包之外,其内容包括了 各种功能性以及科学性工具包,可以进行各种符号的计算、图形仿真、文字处理等运算[10]。
2。2。3MATLAB 实现 为了能够更好的总结上面的算法,我们可以用MATLAB语言进行描述,具体程序如下: function y=myfft(x)
%对输入序列x实现基二DIT FFT运算,所取点数为大于等于x长度的2的幂次 m=nextpow2(x);
N=2^m;文献综述
if length(x)<N
x=[x,zeros(1,N-length(x))];
%若长度不是2的幂次则补零 end
dxx=bin2dec(filplr(dec2bin([1:N]-1,m)))+1; y=x(dxx);
本科毕业设计说明书第 5 页
for M=1:m
%将DFT做m次基2分解,分别做DFT运算 Nmr=2^M;
u=1;
WN=exp(-i*2*pi/Nmr); for j=1:Nmr/2
for k=j:Nmr:N kp=k+Nmr/2; t=y(kp)*u; y(kp)=y(t)-t;
y(k)=y(t)+t; end
u=u*WN; end
end
第 6 页本科毕业设计说明书
3FFT 算法的频谱误差分析
3。1连续信号的频谱计算
当我们对一个非周期连续信号进行快速傅里叶变换时,需要对信号进行采样,使连续信 号变成离散的时间序列。设 xa(t )为一连续的绝对可积的信号,采样序列为x(nT)。假设T 取
得足够小,那么有可以通过快速傅里叶变换求出它的数字频谱 X() X(T ),所以我们就可以通过式(3-1)
求出连续信号的频谱。考虑正时间信号,即在t小于0的区间内,该信号的取值均为0。时刻t=0 是相对的,可以把开始研究某信号的时刻看作t=0。因此在实际的应用中,我们可以把所有的 信号都看作正时间信号。设该信号在时域上的长度为L,采样周期为T,样本数是N。为了便于 计算我们把时间长度的记录区间选为[0,L),由此可以得到时域长度和采样周期以及样本数之 间的关系是L=TN。
3。2 连续信号的频谱分析
根据式(3-1),我们可以计算出 xa(t )的频谱,可以分析出存在三个问题。
3。2。1频率混叠
如果信号 xa(t )是有限带宽的,并且上限频率小于采样频率的一半,即 fH
么经过冲击采样后可得到的频谱即为原信号的频谱随着周期进行重复。如果信号 xa(t )的带宽
不是有限的,或者上限频率小于采样频率的一半,即fH
/ 2 ,那么经采样得到的频谱将
不是简单的周期重复,而是在频谱间会出现重叠的部分。我们把这种现象叫做频率混叠。此 时采样周期 T 的选择就需要使由采样所造成的混叠减小到最小,应该选择的尽量小一些。 3。2。2频率分辨率和栅栏效应来,自,优.尔:论;文*网www.youerw.com +QQ752018766-
在进行 FFT 运算时,我们也需要对频率函数进行采样使之变为离散序列,而频率分辨率 指的就是在频率轴上所得的最小频率间隔 f [11]。显然,所取的相邻频率之间间隔越小,则 频率的分辨率就越高。而频率间隔与时域长度为 L,采样周期为 T,样本数为 N 之间的关系是
可以看出,频率分辨率和时域截取长度成反比关系,即信号的截取长度越长,所得到的频率 分辨率就越好。而在给定的采样频率下,可以采取增加样本数 N 的方式来优化频率分辨率。 但是,N 取得太大会增加计算机的数据量减缓计算的速度。在给定的样本数 N 的情况下,可 以通过减小采样频率的方式来提高频率分辨率。但是,这样会对频率上限的选择产生限制, 减小了频率上限的选择范围。因此,在提高频率分辨率的时候,要综合考虑采样频率和样本 数的选择。