(最新整理)fft频谱分析_第1页
(最新整理)fft频谱分析_第2页
(最新整理)fft频谱分析_第3页
(最新整理)fft频谱分析_第4页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、(完整)fft频谱分析(完整)fft频谱分析 编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)fft频谱分析)的内容能够给您的工作和学习带来便利。同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快 业绩进步,以下为(完整)fft频谱分析的全部内容。内容1用matlab产生正弦波,矩形波,以及白噪声信号,并显示各自时域波形图2进行fft变换,显示各自频谱图,其中采样率,频率

2、、数据长度自选3做出上述三种信号的均方根图谱,功率图谱,以及对数均方根图谱4用ifft傅立叶反变换恢复信号,并显示恢复的正弦信号时域波形图源程序%*% fft实践及频谱分析 %*1.正弦波*fs=100;%设定采样频率n=128;n=0:n1;t=n/fs;f0=10;设定正弦信号频率生成正弦信号x=sin(2*pi*f0*t);figure(1);subplot(231);plot(t,x);作正弦信号的时域波形xlabel(t);ylabel(y);title(正弦信号y=2pi10t时域波形);grid;进行fft变换并做频谱图y=fft(x,n);进行fft变换mag=abs(y);%

3、求幅值f=(0:length(y)-1)fs/length(y);进行对应的频率转换figure(1);subplot(232);plot(f,mag);做频谱图axis(0,100,0,80);xlabel(频率(hz);ylabel(幅值);title(正弦信号y=2pi*10t幅频谱图n=128);grid;%求均方根谱sq=abs(y);figure(1);subplot(233);plot(f,sq);xlabel(频率(hz));ylabel(均方根谱);title(正弦信号y=2*pi*10t均方根谱);grid;求功率谱power=sq。2;figure(1);subplot(

4、234);plot(f,power);xlabel(频率(hz);ylabel(功率谱);title(正弦信号y=2*pi*10t功率谱);grid;%求对数谱ln=log(sq);figure(1);subplot(235);plot(f,ln);xlabel(频率(hz));ylabel(对数谱);title(正弦信号y=2*pi*10t对数谱);grid;%用ifft恢复原始信号xifft=ifft(y);magx=real(xifft);ti=0:length(xifft)-1/fs;figure(1);subplot(236);plot(ti,magx);xlabel(t);ylab

5、el(y);title(通过ifft转换的正弦信号波形);grid;*2。矩形波*fs=10;设定采样频率t=-5:0.1:5;x=rectpuls(t,2);x=x(1:99);figure(2);subplot(231);plot(t(1:99),x);作矩形波的时域波形xlabel(t);ylabel(y);title(矩形波时域波形);grid;%进行fft变换并做频谱图y=fft(x);%进行fft变换mag=abs(y);求幅值f=(0:length(y)-1)*fs/length(y);%进行对应的频率转换figure(2);subplot(232);plot(f,mag);做频

6、谱图xlabel(频率(hz);ylabel(幅值);title(矩形波幅频谱图);grid;%求均方根谱sq=abs(y);figure(2);subplot(233);plot(f,sq);xlabel(频率(hz);ylabel(均方根谱);title(矩形波均方根谱);grid;%求功率谱power=sq.2;figure(2);subplot(234);plot(f,power);xlabel(频率(hz));ylabel(功率谱);title(矩形波功率谱);grid;%求对数谱ln=log(sq);figure(2);subplot(235);plot(f,ln);xlabel(

7、频率(hz));ylabel(对数谱);title(矩形波对数谱);grid;用ifft恢复原始信号xifft=ifft(y);magx=real(xifft);ti=0:length(xifft)-1/fs;figure(2);subplot(236);plot(ti,magx);xlabel(t);ylabel(y);title(通过ifft转换的矩形波波形);grid;%*3。白噪声*fs=10;%设定采样频率t=-5:0。1:5;x=zeros(1,100);x(50)=100000;figure(3);subplot(231);plot(t(1:100),x);%作白噪声的时域波形x

8、label(t);ylabel(y);title(白噪声时域波形);grid;%进行fft变换并做频谱图y=fft(x);进行fft变换mag=abs(y);%求幅值f=(0:length(y)1)*fs/length(y);%进行对应的频率转换figure(3);subplot(232);plot(f,mag);做频谱图xlabel(频率(hz);ylabel(幅值);title(白噪声幅频谱图);grid;%求均方根谱sq=abs(y);figure(3);subplot(233);plot(f,sq);xlabel(频率(hz));ylabel(均方根谱);title(白噪声均方根谱);

9、grid;求功率谱power=sq.2;figure(3);subplot(234);plot(f,power);xlabel(频率(hz);ylabel(功率谱);title(白噪声功率谱);grid;%求对数谱ln=log(sq);figure(3);subplot(235);plot(f,ln);xlabel(频率(hz);ylabel(对数谱);title(白噪声对数谱);grid;%用ifft恢复原始信号xifft=ifft(y);magx=real(xifft);ti=0:length(xifft)1/fs;figure(3);subplot(236);plot(ti,magx);

10、xlabel(t);ylabel(y);title(通过ifft转换的白噪声波形);grid;fs=1500; %自己设置采样频率n=4000; 自己设置采样点数t = (0:n-1)/fs; 间隔nfft = 2nextpow2(n);转化为2的基数倍f= fs/2linspace(0,1,nfft/2); 求出fft转化频率e=cos(1。9e14).*t).(1900*cos(3e10)。t+pi/2); %函数e_change=fft(e,nfft)/n; 进行fft变换plot(f,2*abs(e_change(1:nfft/2),b);%画出频谱特性图grid on;上面是比较正规

11、的fft变换,有的文章中没有求fft转化频率(这样就少了一些步骤),即没有转化为2的基数倍,虽然可以画图也不会出错,但是如果详细阅读matlab自带的help帮助的话,就可以发现它们还是有差别的。本程序自己可以设置采样频率和采样点数。由于matlab进行fft变换后画出的图是个对称图,这点你可参阅其fft的帮助,根据帮助文献进行了(1:nfft/2)处理,画出一半即可。如果还想画出相频特性图,可以代码后面加上:ph_e=180*angle(en)/pi;plot(f,ph_e(1:nfft/2)); grid on;画出相频特性图还有,你的函数由于不能直接复制到matlab里面运行,在matl

12、ab里1.9e14表示 1。91014关于功率谱密度的方法的讨论及其实现直接法: 直接法又称周期图法,它是把随机序列x(n)的n个观测数据视为一能量有限的序列,直接计算x(n)的离散傅立叶变换,得x(k),然后再取其幅值的平方,并除以n,作为序列x(n)真实功率谱的估计。matlab代码示例:clear; fs=1000; 采样频率 n=0:1/fs:1;%产生含有噪声的序列 xn=cos(2pi*40*n)+3*cos(2pi100n)+randn(size(n);window=boxcar(length(xn); %矩形窗 nfft=1024; pxx,f=periodogram(xn,w

13、indow,nfft,fs); %直接法 plot(f,10log10(pxx);间接法: 间接法先由序列x(n)估计出自相关函数r(n),然后对r(n)进行傅立叶变换,便得到x(n)的功率谱估计.matlab代码示例:clear; fs=1000; 采样频率 n=0:1/fs:1;产生含有噪声的序列 xn=cos(2pi*40n)+3*cos(2pi100n)+randn(size(n));nfft=1024; cxn=xcorr(xn,unbiased); 计算序列的自相关函数 cxk=fft(cxn,nfft); pxx=abs(cxk); index=0:round(nfft/2-1)

14、; k=index*fs/nfft; plot_pxx=10*log10(pxx(index+1); plot(k,plot_pxx);改进的直接法: 对于直接法的功率谱估计,当数据长度n太大时,谱曲线起伏加剧,若n太小,谱的分辨率又不好,因此需要改进。1. bartlett法bartlett平均周期图的方法是将n点的有限长序列x(n)分段求周期图再平均。matlab代码示例:clear; fs=1000; n=0:1/fs:1; xn=cos(2*pi40*n)+3*cos(2pi100n)+randn(size(n)); nfft=1024; window=boxcar(length(n)

15、; 矩形窗 noverlap=0; %数据无重叠 p=0。9; %置信概率pxx,pxxc=psd(xn,nfft,fs,window,noverlap,p);index=0:round(nfft/2-1); k=indexfs/nfft; plot_pxx=10*log10(pxx(index+1); plot_pxxc=10*log10(pxxc(index+1); figure(1) plot(k,plot_pxx);pause;figure(2) plot(k,plot_pxx plot_pxx-plot_pxxc plot_pxx+plot_pxxc);2。 welch法welch法

16、对bartlett法进行了两方面的修正,一是选择适当的窗函数w(n),并再周期图计算前直接加进去,加窗的优点是无论什么样的窗函数均可使谱估计非负。二是在分段时,可使各段之间有重叠,这样会使方差减小。matlab代码示例:clear; fs=1000; n=0:1/fs:1; xn=cos(2*pi*40*n)+3cos(2*pi*100*n)+randn(size(n)); nfft=1024; window=boxcar(100); 矩形窗 window1=hamming(100); %海明窗 window2=blackman(100); %blackman窗 noverlap=20; 数据无重叠 range=half; 频率间隔为0 fs/2,只计算一半的频率pxx,f=pwelch(xn,window,noverlap,nfft,fs,range); pxx1,f=pwe

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论