假设 FFT 结果错误

Posted

技术标签:

【中文标题】假设 FFT 结果错误【英文标题】:Assumingly faulty FFT result 【发布时间】:2015-04-07 06:32:52 【问题描述】:

我有一个混频器,我想从输出时域信号中提取频率。输出时域信号为:

Vd = (Rd/(33e3+Rd))*(Vrf*sin(Wrf*t)+Vlo*sin(Wlo*t));
y_t = 11*Vd;
func_ = y_t;

地点:

Vrf=27e-3;
Vlo=140e-3;
Frf=10e6;
Flo=9.9e6;
Wrf=Frf*2*pi;
Wlo=Flo*2*pi;
Rd = 70;

我正在尝试通过以下循环从时域信号中计算傅立叶系数:

order_max=10;
f_ = 0;
for m = -1*order_max:order_max
    for n = -1*order_max:order_max
        if (m*Wrf+n*Wlo <= 0);
        continue;
    end

    k = (m*Frf+n*Flo)*T0;

    f_ = f_ + 1;

    Func(f_) = integral(@(t)subs(func_).*exp(-1i*2*pi*k*t/T0), -T0/2, T0/2)/T0;
    f(f_) = k/T0;

end

时域信号如下: 1

系数为: 2

从傅里叶系数可以看出,与时域信号相比,1e5的频率幅度非常低。

我认为傅里叶系数和时域信号不匹配!

你能帮我找出问题吗?

【问题讨论】:

除了这不是FFT 之外,1e5 的幅度非常低,因为信号不包含该频率的频率分量。您可能正在考虑的时间信号中的 1e5 分量很可能是在该频率下显示为正弦包络的节拍效应,但这是两个相似频率(10e6 和 9.9e6)的音调的结果。这些音调似乎确实出现在您的傅立叶系数图中(尽管在您选择的对数刻度中重叠)。 【参考方案1】:

1e5 频率分量的幅度非常低,因为信号在该频率不包含显着的能量, 该信号实际上由参数Flo=9.9e6Frf=10e6 指定的频率处的两个频率分量组成。 请注意,这两个频率确实出现在您的频率图中,并且它们的幅度似乎也对应于由下式给出的时间信号正弦系数:

> 11*(Rd/(33e3+Rd))*[Vrf Vlo]
ans =

  6.2867e-004  3.2598e-003

相应地,频率分量为:

> abs(Func(find(abs(f-10e6)<1)))  % Frf component
ans =   6.2867e-004
> abs(Func(find(abs(f-9.9e6)<1))) % Flo component
ans =   0.0032598

您可能认为时间信号中的 1e5 分量很可能来自信号的包络,该信号显示为频率为 1e5 的节拍。

作为一个例子,如果我们用一个非常简单的Envelope detector来计算包络:

func y = envelopedetector(x)
  k = 0.999; % decay factor
  y(1) = x(1);
  for i=2:length(x)
    if (x(i) > y(i-1))
      y(i) = x(i);
    else
      y(i) = k*y(i-1);
    end
  end
end

我们得到了我在你的时间信号图上覆盖的红色曲线:

如果我们随后计算包络信号的傅立叶系数,我们确实得到了 1e5 处的分量(请注意,该图没有显示对应于 DC 偏置的另一个重要分量 0):

现在既然您提到了 FFT,就可以使用 FFT 获得傅里叶系数的近似值。 回忆一下傅立叶系数由下式给出:

将基本周期T0分成N个样本,积分可以近似为(随着N的增加,近似值越来越精确)为:

这与离散傅里叶变换密切相关。因此,给定func_ 在基本周期内进行评估,傅立叶系数约为:

T0      = 1e-5;
t       = [0:N-1]*T0/N;
y       = func_(t);
Func    = fft(y)*2/N;
Func(1) = 0.5*Func(1); % scaling factor is 1/N (instead of 2/N) for f=0

【讨论】:

以上是关于假设 FFT 结果错误的主要内容,如果未能解决你的问题,请参考以下文章

FFT算法得到错误的声音频率值

内存要求:N 点 FFT(出现错误)

Matlab fft 和 Scipy fft 的 FFT 结果略有不同

Numpy FFT错误 - 带信封的梳状滤波器

通过对 FFT 结果进行共轭来使用 FFT 进行 IFFT

iOS Accelerate低通FFT滤波器镜像结果