いくつかのノイズを含む単純な正弦波信号があります。単純な 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);