基于MATLAB的快速傅立叶分析程序设计Word文档下载推荐.docx
- 文档编号:20795756
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:14
- 大小:116.33KB
基于MATLAB的快速傅立叶分析程序设计Word文档下载推荐.docx
《基于MATLAB的快速傅立叶分析程序设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的快速傅立叶分析程序设计Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
4.采用不同窗函数时的谱结果(矩形窗函数,汉宁窗函数,汉明窗等等)
5.典型函数的频谱(矩形窗函数,汉宁窗函数,三角窗函数,切比雪夫窗)
6.整周期和非整周期比较
已知信号x(n)=120.0*COS(2*3.14*SF*n/FS)
n=0,1,2……N-1SF---信号频率FS---采样频率
图1余弦函数的时域波形图
图2余弦函数的幅频谱波形
图3余弦函数的功率谱密度波形
上面三图的程序如下所示:
fs=200;
N=512;
n=0:
N-1;
t=n/fs;
sf=10;
%设定正弦信号频率
%生成信号
x=120.0*cos(2*3.14*sf*t);
figure;
plot(t,x);
%作余弦信号的时域波形
xlabel('
t'
);
ylabel('
y'
title('
x=120.0*cos(2*3.14*sf*t)时域波形'
grid;
%进行FFT变换并做频谱图
y=fft(x,N);
%进行fft变换
mag=abs(y);
%求幅值
f=(0:
length(y)-1)'
*fs/length(y);
%进行对应的频率转换
plot(f,mag);
%做频谱图
频率(Hz)'
幅值'
x=120.0*cos(2*3.14*sf*t)幅频谱图N=512'
Py=2*(y.*conj(y))/N;
%计算功率谱密度Py
plot(f,Py);
功率谱密度'
x=120.0*cos(2*3.14*sf*t)功率谱密度'
图4余弦函数均值化处理后的时频域波形
结论:
经过均值化处理的波形发生上下移动,但是频谱不变。
1)采用矩形窗函数时信号的频谱分析结果
图
图5矩形窗函数处理信号时域波形
图6矩形窗函数处理信号频域波形
2)采用汉明窗函数时信号的频谱分析结果
图7汉明窗函数处理信号时域波形
图8汉明窗函数处理信号频域波形
3)采用汉宁窗函数时信号的频谱分析结果
图9汉宁窗函数处理信号时域波形
图10汉宁窗函数处理信号频域波形
4)采用三角窗函数时信号的频谱分析结果
图11三角窗函数处理信号时域波形
图12三角窗函数处理信号频域波形
5)采用Blackman窗函数时信号的频谱分析结果
图13Blackman窗函数处理信号时域波形
图14Blackman窗函数处理信号频域波形
在前面程序的基础上,继续输入加窗处理程序,可以得到上面所示的结果,其加窗处理程序如下:
w_han=(hanning(N))'
;
y1=x.*w_han;
plot(t,y1);
y2=mag.*w_han;
plot(f,y2);
w_box=(boxcar(N))'
y3=x.*w_box;
plot(t,y3);
y4=mag.*w_box;
plot(f,y4)
w_ham=(hamming(N))'
y5=x.*w_ham;
plot(t,y5);
y6=mag.*w_ham;
plot(f,y6)
w_tri=(triang(N))'
y7=x.*w_tri;
plot(t,y7);
y8=mag.*w_tri;
plot(f,y8)
w_black=(blackman(N))'
y9=x.*w_black;
plot(t,y9);
y10=mag.*w_black;
plot(f,y10)
设计方法:
主要应用了MALTAB中的交互式图形用户界面以及直接编程来做信号的处理过程,其设计过程如下:
1)图形用户界面的启动:
在MATLABCOMMAND窗口下,键入sptool,会弹出一个SPTool窗口。
2)在进行处理之前,我们需要建立一个所要处理的信号公式,即已知信号x(n)=120.0*cos(2*3.14*SF*n/FS),MATLAB提供了编程的代码,其代码如下:
Fs=200;
%设定采样频率
t=n/Fs;
%生成信号
plot(t,x)
grid
savehdata.matxFs%把已知信号保存到了工作空间中,以备调用
这样程序运行结果会生成信号数据文件hdata.mat,存放信号x和采样频率的数据。
3)从SPTool窗口中的File菜单中选择Import命令,弹出ImporttoSPTool窗。
窗口如下所示:
图15信号处理ImporttoSPTool窗口
设置好后,点击OK。
4)这样就可以进行信号的时域分析了,只需要点击下图中Signals中所导入的已知信号就可以了。
图16MATLAB信号处理SPTool窗口
5)如上图所示的Spectra为信号的频谱分析工具栏,选好所导入的已知信号,点击Crate按钮,进入频谱分析的窗口。
窗口图片如下所示:
图17信号的频谱分析工具栏Spectra窗口
通过上面图形所示,我们可以从左边的工具栏上选择各种窗函数,并且可以随意定义Nfft和Nwind的大小,方法比较简单直观。
同样,我们还可以用编程的方法实现上面要求,其各种窗函数及程序代码如下所示:
1)矩形窗函数
图18矩形窗函数频谱图
2)汉宁窗函数
图19汉宁窗函数频谱图
3)三角窗函数
图20三角窗函数频谱图
4)切比雪夫窗函数
图21切比雪夫窗函数频谱图
典型窗函数的频谱程序如下所示:
生成一个长度为50的矩形窗,并观察其频率特性
n=50;
window=boxcar(n);
[h,w]=freqz(window,1);
subplot(2,1,1)
stem(window);
subplot(2,1,2);
plot(w/pi,20*log(abs(h)/abs(h
(1))));
生成一个长度为60的汉宁窗,并观察其频率特性
n=60;
window=hanning(n);
[h,w]=freqz(window,1);
subplot(1,2,1)
stem(window);
subplot(1,2,2);
plot(w/pi,20*log(abs(h)/abs(h
(1))));
生成一个长度为40的三角窗,并观察其频率特性
n=40;
window=triang(n);
plot(w/pi,20*log(abs(h)/abs(h
(1))));
生成一个长度为40的切比雪夫窗,并观察其频率特性
n=50;
r=50;
window=chebwin(n,r);
subplot(1,2,2)
以高度为1的矩形窗w(t)在一个完整周期内截取采样序列,在时域以w(t)截取采样序列,在频域内等效于W(f)和X(f)的卷积。
在f=±
m/T0,处正好是X(f)*W(f)=W(f-f0)的零点处,故在频谱上仅在f0处有单一频线,无‘泄漏”现象。
因此,只要矩形窗宽包含序列的若干完整周期,就都能在f'
=±
m/T0处使采样序列的加窗谱不歪曲其真实谱。
当用矩形窗函数w(t)对周期信号进行非整周期截取,如上图所示产生明显的“泄漏现象”,在W(f)*X(f)的谱图中,在f0≠nΔf,谱线的位置nΔf不尽为频谱的零点重合,W(f)的旁瓣会在频率为±
m/T0处产生,使序列截断后的频谱和真正的频谱不同,有“泄漏”。
因此,在对信号进行周期采样时,采样长度最好是信号周期长度的整数倍,以防采集的信号失真。
非整周期信号处理分析:
图22非整周期信号时域分析
图23非整周期信号频域分析
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 快速 傅立叶 分析 程序设计