0

いくつかのノイズを含む単純な正弦波信号があります。単純な FFT アルゴリズムを試してみると、信号の振幅 (23) と周波数 (2) が得られます。ハニング ウィンドウを使用して Matlab の pwelch を試すと、適切な周波数が得られますが、振幅が間違っています。実際の振幅を取得するにはどうすればよいですか? これは、pwelch に使用しているコードです。

time = 0:0.01:50;
frequency = 2;
amplitude = 23;
y = amplitude * sin (2 * pi * frequency * time);
y= y + 6 * randn(size(time));
y = y - mean(y);
N = length(y);
Fs = 100;
NFFT = 2^nextpow2(N);
M = 4396;
w = hanning(M);
[Pyy,Fy] = pwelch(y, w,[],M,Fs);
plot(Fy,Pyy);
4

1 に答える 1

1

私見、スペクトル漏れのためにできません。使用しているハニング ウィンドウが表示されている場合、それはローパス フィルターです (中央に配置され、正規化されている場合)。それは主な周波数で電力を減らし、他の周波数で電力を導入します。つまり、平滑化です。ただし、これは周波数領域で無限の持続時間を持つ非周期信号であり、計算できません。

figure; 
plot(w);
title(['Hanning window with ', num2str(M), 'points']);

ここに画像の説明を入力

詳しくはこちらをご覧ください

于 2014-10-15T11:51:54.420 に答える