我有一个简单的窦信号,有一些噪音。 如果我尝试一个简单的FFT算法,我得到信号(23)和频率(2)的幅度。 如果我尝试使用Matlab和hanning窗口的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);
答案 0 :(得分:1)
恕我直言,你不能因为spectral leakage。如果您看到正在使用的汉宁窗口,则它是低通滤波器(当居中和标准化时)。它将降低主频率的功率,并将在其他频率引入功率,即平滑。但是,它是一个在频域无限期的非周期信号,无法计算。
figure;
plot(w);
title(['Hanning window with ', num2str(M), 'points']);
您可以阅读更多here。