从功率谱密度构造时间序列的问题?
应该如何从功率谱密度构造时间序列?我有一个信号a,使用spectrum.welch方法得到a的功率谱密度,
然后用此功率谱密度生成一个新的时域上的序列b(采用波叠加法),再次用spectrum.welch方法得到b的功率谱密度
前后两个功率谱密度按理说应该吻合才对,但是我得到的误差挺大,这是为什么?
是不是波叠加法的问题?有没有更好的生成时间序列的方法? “波叠加法”是否指overadd?又LZ把程序贴出可能更方便一些。
回复 沙发 songzy41 的帖子
如下的一段程序,其中pr是spectrum.welch计算出来的功率谱密度Fs=2000;
a=sin(2*pi*50*(1:1000)/Fs);
h = spectrum.welch;
Hpsd = psd(h,a(500:1000),'Fs',Fs,'NFFT',512);
pr=10*log10(Hpsd.data);
以下是波叠加法,功率谱密度生成时间序列的程序
NFFT=512;
t=(1:1000)/Fs;
num=length(t);
NN=length(pr);
deta=1000/(NFFT/2);
omega=deta*(0:NFFT/2);
theta=2*pi*rand(1,NN);
for j=1:num
for i=1:NN
ff(i)=sqrt(2*pr(i)*deta)*cos(2*pi*omega(i)*t(j)-theta(i));
end
f(j)=sum(ff);
end
f就是生成的时间序列
请指教
[ 本帖最后由 yametw 于 2009-5-28 22:21 编辑 ] 在程序中LZ求了对数频谱:
pr=10*log10(Hpsd.data);
而在波叠加法中应用线性频谱,而不应用对数频谱值。 非常感谢,确实是这样的
页:
[1]