0
我正試圖找到信號的功率譜。信號長度爲100000
,採樣頻率爲1000Hz
,點數爲100000
。我使用兩種方法找到功率譜。第一種方法是將所有長度作爲一個部分並找到功率譜,而第二種方法是將信號分成100*1000
並找出每一行的頻譜,然後得到所有行的平均值。我的問題是,我必須在兩種方法中得到相同的答案,但我得到了不同的答案。我不知道我的代碼中有什麼錯誤。使用兩種方法找到信號的功率譜
N=100000;
SF=1000;
a=0.1;
b=0.3;
amplitude1=1;
amplitude2=0.5;
t=0:1/SF:100;
f1=SF*a;
f2=SF*b;
A=amplitude1*sin(2*pi*f1*t)+amplitude2*sin(2*pi*f2*t);
Y=2*randn(1,length(A))+A;
bin=[0 :N/2];
fax_Hz=(bin*SF)/N;
FFT=fft(Y);
spectra=2/(SF*length(Y))*(FFT.*conj(FFT));
plot(fax_Hz,spectra(1,1:50001));
D=reshape(Y(1,1:100000),[100,1000]);
M=length(D(1,:));
for i=1:100
FFT_1(i,:)=fft(D(i,:));
S(i,:)=(2/(SF*M))*(FFT_1(i,:).*conj(FFT_1(i,:)));
end
S_f=mean(S);
figure
plot (S_f);
我只是更新了代碼。我不知道,但是當我添加噪音來表明這兩個地塊看起來轉移。
謝謝你的幫助。請,我不知道,但是當我給信號添加噪音時,這兩個地塊看起來轉移了。我只是更新代碼來看看。 – user6052232
我無法重現該問題。從你的代碼中刪除下面'bin'中的所有內容,並將其替換爲我發佈的代碼。 (顯然將'A'重命名爲'Y') – mpaskov