0

我正在尝试使用 matlab 找到一个需要我计算输入信号的傅立叶变换的因子。问题是这样向我说明的:

fbin = 50HZ
0 <= n <= 1999
alpha = F {Blackman[2000] . cos[-2pi . fbin . n/2000]} (f)

where F is the Continous Time Fourier Transform operator.

我的 matlab 代码如下所示:

blackman_v = blackman(2000);
signal_x = cos(-2 * pi() .* fbin * (0:(1999)) ./ 2000) .* blackman_v';
fft_real = abs(fft(signal_x, 2000));
alpha = fft_real(51); %51 is the bin for 50hz => or {(f * N/Fs)+1}==51

我的问题是,对于 49hz,我应该得到大约 412 的值,但我得到大约 250(我实际上是在验证以前的一些结果)。我是否错误地翻译了问题?我已经战斗了很长时间,我真的看不出这里有什么问题。认为50Hz(430)的值是可以的。

真的很感激任何提示!


编辑

blackman_v = blackman(2000);
signal_x = cos(-2 * pi() .* fbin * (0:(1999)) ./ 2000) .* blackman_v';
alpha = abs(freqz(signal_x , 1, 2*pi*50/10000))

你知道频率是什么吗?我阅读了matlab doc,但我的脑海中仍然没有清楚。

4

1 回答 1

1

也许我误解了你的问题,但 Matlab 不适用于连续时间分析。它仅用于数值分析,具有离散值。但是,您可以计算信号的离散时间傅里叶变换 (DFT),其分辨率取决于信号的长度。您是否使用 Blackmann 窗口,因为您的信号是非周期性的?

如何在 Matlab 中计算 FFT(DFT):http: //www.mathworks.se/help/matlab/ref/fft.html

任何离散傅立叶变换都会假设您的信号是周期性的。如果不是这样,您将获得频谱泄漏,其中某些频率峰值将其能量“泄漏”到两侧,从而导致频率值模糊不清的峰值。因此,优选地在计算DFT之前使时域信号成为周期性的——周期性到重复一般模式的程度,值不必在周期之间精确,因为噪声可以/将是信号中固有的。在计算 DFT 之前将窗函数应用于时域信号将使信号具有周期性,但您将改变幅度值并引入低频分量。

于 2012-10-26T10:46:02.583 回答