楼主的方法我认为非常的不妥,至少在功率谱估计的时候你选择FFT点数为采样数据的长度,那么将会有对应长度的0被补上,这样你得不到准确的功率谱估计结果。
其次,PSD方法基本上是已经淘汰的一种方法了,注意看下matlab中关于PSD方法的一个帮助,有个 NOTE 1: To express the result of PSD, Pxx, in units of Power per Hertz multiply Pxx by 1/Fs [1].
而且,PSD对于实数求得的是单边谱,所以对应结果要乘以2,如果非要用你的方法,可以按如下方式进行:
clc,clear,close all;
fs=200;
t=0:1/fs:15;
A=10*sin(15*2*pi*t);
N=512;
NFFT = 1024;
w = window(@hann,N);
noverlap=20;
figure
plot(t,A)
[P1,P2,f1]=psd(A,NFFT,fs,w,noverlap,'none');
figure
P1 = (P1./fs*2);
plot(f1,P1)
[P2,f2]=pwelch(A,w,noverlap,NFFT,fs);
figure
plot(f2,P2)
|