课程名称: 现 代 信 号 分 析 考试形式:□专题研究报告 □论文 大作业 □综合考试 学生姓名: 学号:
序 号 1 2 3 4 5 6 7 8 9 10 分 项 类 别 题目1 题目2 题目3 题目4 题目5 题目6 题目7 题目8 题目9 题目10 得 分 评阅人: 时 间: 年 月
总 分
目录
一、FFT算法的特点。 ......................................... - 3 - 二、平稳随机过程 ............................................. - 8 - 三、功率谱估计 .............................................. - 10 - 四、自适应滤波器(LMS和RLS) ............................... - 16 - 五、维纳滤波器 .............................................. - 23 - 六、FIR维纳滤波器 .......................................... - 25 - 七、AR/MA滤波器 ............................................ - 28 - 八、卡尔曼滤波器 ............................................ - 31 - 九、小波分析方法及应用 ...................................... - 37 - 十、其他现代信号分析方法 .................................... - 43 -
现代信号分析
一、FFT算法的特点。
题目:请举例说明FFT算法的特点
计算离散傅里叶变换的一种快速算法,简称FFT。快速傅里叶变换是1965年由J.W.库利和T.W.图基提出的。采用这种算法能使计算机计算离散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计算量的节省就越显著。根据对序列分解与选取方法的不同而产生了FFT的多种算法,基本算法是基2DIT和基2DIF。FFT在离散傅里叶反变换、线性卷积和线性相关等方面也有重要应用。
快速傅氏变换(FFT),是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。有限列长为N的序列x(n)的DFT变换公式在MATLAB中的表达式为
nkX(k)??x(n)WNn?1N?1
k?1,2,...,N?1
其逆变换为
1N?nkx(n)??X(k)WN n?1,2,...,N
Nk?1FFT主要就是利用了WN以下两个特性使长序列的DFT分解为更小点数的DFT来实现的。 (1)
利用WN的对称性使DFT运算中有些项合并
k(N?n)?knkn*WN?WN?(WN)
nknk(2)
利用WN的周期性和对称性使长序列的DFT分解为更小点数的DFT
nkk(n?N)(k?N)nWN?WN?WN
nkFFT算法在应用时能够大大减少计算量,但是也存在着和DFT同样的一些问题,主要有:频谱混
叠,泄露问题以及栅栏效应的问题,下面通过运用MATLAB的FFT相关函数对信号进行变换来进行实际分析。
(1) 频谱混叠
奈奎斯特定理已被众所周知了,所以几乎所有人的都知道为了不让频谱混叠,理论上采样频谱大于等于信号的最高频率。采样周期的倒数是频谱分辨率,最高频率的倒数是采样周期。设定采样点数为N,采样频率fs,最高频率fh,故频谱分辨率f=fs/N,而fs>=2fh,所以可以看出最高频率与频谱分辨率是相互矛盾的,提高频谱分辨率f的同时,在N确定的情况下必定会导致最高频率fh的减小;同样的,提高最高频率fh的同时必会引起f的增大,即分辨率变大,下面举例说明。
设输入信号为s?3cos240?t?5sin300?t,即它的主要频率为120Hz和150Hz。分别取采样频率为400Hz,300Hz,200Hz,100Hz,程序如下: L=1024; %采样点数 NFFT = 2^nextpow2(L); % Next power of 2 from length of y Fs1=400; % 采样频率 - 3 -
t1=(0:L-1)/Fs1; s1=3*cos(2*pi*120*t1)+5*sin(2*pi*150*t1); Y1 = fft(s1,NFFT)/L; f1 = Fs1/2*linspace(0,1,NFFT/2+1); Fs2=300; t2=(0:L-1)/Fs2; s2=3*cos(2*pi*120*t2)+5*sin(2*pi*150*t2); Y2= fft(s2,NFFT)/L; f2=Fs2/2*linspace(0,1,NFFT/2+1); Fs3=200; t3=(0:L-1)/Fs3; s3=3*cos(2*pi*120*t3)+5*sin(2*pi*150*t3); Y3 = fft(s3,NFFT)/L; f3=Fs3/2*linspace(0,1,NFFT/2+1); Fs4=100; t4=(0:L-1)/Fs4; s4=3*cos(2*pi*120*t4)+5*sin(2*pi*150*t4); Y3 = fft(s4,NFFT)/L; f4=Fs4/2*linspace(0,1,NFFT/2+1); subplot(2,2,1); plot(f1,2*abs(Y1(1:NFFT/2+1))); title('采样频率为400Hz'); grid on; xlabel('频率(Hz)'); subplot(2,2,2); plot(f2,2*abs(Y2(1:NFFT/2+1))); title('采样频率为300Hz'); grid on; xlabel('频率(Hz)'); subplot(2,2,3); plot(f3,2*abs(Y3(1:NFFT/2+1))); title('采样频率为200Hz'); grid on; xlabel('频率(Hz)'); subplot(2,2,4); plot(f4,2*abs(Y4(1:NFFT/2+1))); title('采样频率为100Hz'); grid on; xlabel('频率(Hz)'); grid on; 结果如图1-1所示,可见当采样频率为300Hz时,没有发生频率混叠,但当频率小于两倍的信号频率时,经过采样就会发生混叠现象,输入信号中的某些频率就无法辨识出。
- 4 -
现代信号分析
图1-1 FFT的混淆现象
(2) 泄漏现象
实际中的信号序列往往很长,甚至是无限长序列。为了方便,我们往往用截短的序列来近似它们。这样可以使用较短的DFT来对信号进行频谱分析。这种截短等价于给原信号序列乘以一个窗函数。而窗函数的频谱不是有限带宽的,从而它和原信号的频谱进行卷积以后会扩展原信号的频谱。值得一提的是,泄漏是不能和混叠完全分离开的,因为泄露导致频谱的扩展,从而造成混叠。为了减小泄漏的影响,可以选择适当的窗函数使频谱的扩散减到最小。下面举例说明。
设输入信号为s?3cos240?t?5sin300?t,即它的主要频率为120Hz和150Hz。,用MATLAB自带的信号处理工具箱(通过命令sptool调出)分别对信号加矩形窗(boxcar),海明窗(Hamming),汉宁窗(Hanning)和布莱克曼窗(Blackman),分析不同的窗函数对减小泄露现象的影响。
具体操作如下:先生成信号s,然后在sptool工具箱的file菜单中import信号s,Fs为400Hz,如图1-2所示。
图1-2 sptool工具箱界面
然后点create按钮,在patameters栏选择welch方法,Nfft点数1024,Nwind为256,分别加布
- 5 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库现代信号分析课程大作业在线全文阅读。
相关推荐: