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

恕我直言,由于光谱泄漏,您不能。如果您看到您正在使用的 Hanning 窗口,则它是一个低通滤波器(当居中并归一化时)。它将降低主频率的功率,并将引入其他频率的功率,即平滑。但是,它是一个在频域中具有无限持续时间的非周期信号,无法计算。

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

在此处输入图像描述

你可以在这里阅读更多。

于 2014-10-15T11:51:54.420 回答