在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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 形状上没啥差异,无非是缺省用的窗不一样,但是这个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');得的图如下: |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论