我有一个带有一些噪音的简单正弦信号。如果我尝试一个简单的 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);