• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB功率谱函数pwelch 和specture.welch

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

http://www.ilovematlab.cn/thread-218001-1-1.html

http://www.ilovematlab.cn/thread-52799-1-1.html

http://www.ilovematlab.cn/thread-327632-1-1.html
你的版本是什么?从R2013a开始,建议用pwelch,在那之前,建议用spectrum.welch

形状上没啥差异,无非是缺省用的窗不一样,但是这个pwelch的结果没有除采样率



fs = 1000;

t=0:1/fs:1; 

y=cos(2*pi*40*t)+3*cos(2*pi*100*t)+randn(size(t));

nfft = 2^nextpow2(length(y));

subplot(3, 1, 1);

Hs=spectrum.welch;

hpsd = psd(Hs, y,'NFFT',nfft,'Fs',fs);

Pw = hpsd.Data; 

Fw = hpsd.Frequencies;

plot(Fw, Pw)

grid;axis([0 500 0 max(Pw)]);title('psd');

subplot(3, 1, 2);

[Pxx,fxx]=pwelch(y,[],[],[],fs,'twosided'); 

plot(fxx, Pxx);

grid;axis([0 500 0 max(Pxx)]);title('pwelch');

subplot(3, 1, 3);

n = 0 : nfft/2;

f = n * fs / nfft;

Y = fft(y, nfft) / nfft;

plot_Y = 2 * abs(Y(1:nfft/2+1));

plot(f, plot_Y);

grid;axis([0 500 0 max(plot_Y)]);title('fft');


在第8行后面加Hs.SegmentLength = 222;然后在第9行后面加twosided(hpsd);最后在pwelch里第四个输入用nfft这样前两个图应该基本上就一样了。至于fft,那个不是功率谱,而是频谱,所以没有可比性。而且就算你把它除采样频率,换成功率谱,它也是和周期图对应,和welch还是不一样的。



我认为在这两命令中window的含义是不一样的,在[Pxx,f]=pwelch(x,window,noverlap,nfft,fs)中window是一个具体的窗函数,例如window=hanning(256)而在h = spectrum.welch('Hann',window,100*noverlap/window);中window只是窗的长度,例如256。我做了一个试验得到的结果两命令完全一样:x=load('hdata.txt');fs=8000;nfft=256;noverlap=128;window=hanning(nfft);[Pxx,f]=pwelch(x,window,noverlap,nfft,fs);subplot 211; plot(f,Pxx);title('pwelch');window=256;h = spectrum.welch('Hann',window,100*noverlap/window);hpsd = psd(h,x,'NFFT',nfft,'Fs',fs);P=hpsd.Data;ff=hpsd.Frequencies;subplot 212; plot(ff,P);title('spectrum.welch');得的图如下:


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap