【问题标题】:FFT plot in MatlabMatlab中的FFT图
【发布时间】:2014-03-05 10:50:37
【问题描述】:

我有一个来自信号发生器的 60Hz 正弦波的小输入信号,该信号因 50Hz 电源频率而损坏。我想使用 FFT 测量 60Hz 信号的幅度,因为它在示波器中非常小。
Matlab FFT代码:

y = data;    
Fs = 2048;
[r, L] = size(y);
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2+1);
% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2+1))) 

但 FFT 图在 50 和 60Hz 处没有给出尖锐的峰值。情节如下所示:

连续的点具有交替的高低幅度,这给出了一个锯齿状的图。为什么会这样? 60Hz的幅度是否受此影响?

【问题讨论】:

  • 如果您还添加时域信号图,那就太好了。信号源是什么?

标签: matlab fft


【解决方案1】:

大概有两种效果

  1. 如果测量信号的时间窗口,这将不可避免地导致信号模式的开始和结束之间的相位间隙。间隙或矩形信号的 FFT 会导致高频振荡。这些由边界效应引起的振荡可以通过一个窗口函数来抑制,它可以平滑到边界的信号。

  2. DFT 中有一个离散的频谱。如果测量的信号与这些离散模式中的任何一个都不匹配,则需要更多的频率来重建原始信号。

【讨论】:

    【解决方案2】:

    您的 50 Hz 信号可能不是纯正弦波。与完美正弦波的任何差异(例如削波或失真)都等同于会在频谱中产生边带的调制。

    对周期不是 FFT 长度的精确约数的信号加窗也会使加窗伪影与该信号卷积。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-08
      • 1970-01-01
      相关资源
      最近更新 更多