私は信号のパワースペクトルを見つけようとしています。信号の長さは100000
、サンプル周波数は1000Hz
、ポイント数は100000
です。私は2つのアプローチを使ってパワースペクトルを見つけました。最初の1つは、すべての長さを1つの部分として取り、そのパワースペクトルを見つけ、2番目の方法は、信号を100*1000
に分割し、各行のスペクトルを見つけてすべての行の平均を取得することです。私の問題は、両方のアプローチで同じ答えを得なければならないということですが、私は別の答えを得ました。私は自分のコードで何がエラーなのか分かりません。2つのアプローチを使用して信号のパワースペクトルを見つける
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);
コードを更新するだけです。私は分かりませんが、ノイズを加えて2つのプロットがシフトしたように見えます。
ありがとうございました。私は知らないが、信号にノイズを加えたとき、2つのプロットはシフトして見える。私はそれを見るためにコードを更新するだけです。 – user6052232
この問題は再現できません。あなたのコードから、以下の 'bin 'の全てを削除し、私が投稿したコードを置き換えてください。 (明らかに 'A'から' Y'に改名されます) – mpaskov