【问题标题】:Scale output of FFT (MATLAB)FFT的比例输出(MATLAB)
【发布时间】:2015-12-06 00:08:11
【问题描述】:

我正在使用 MATLAB 中的 FFT 命令对音频 (.wav) 数据进行一些傅立叶变换。输入值是介于 -1.0 和 1.0 之间的数字

我的理解是,在取 FFT 输出的绝对值(模数)之后,我应该得到具有幅度单位的值,但实际值在数千个数量级。这没有任何意义,因为理论上我应该能够对傅立叶分量求和以获得原始信号。我觉得输出也应该在 0 和 1 之间,那么这里发生了什么?我的猜测是 FFT 算法使它不成比例,但我不确定使用什么值来缩小它。

【问题讨论】:

    标签: matlab signal-processing fft dft


    【解决方案1】:

    在 Matlab 中使用以下代码从 1 缩放到(大致)0。

    dataDFT=abs(fft(data)); % Take the complex magnitude of the fft of your data
    dataDFTScaled=dataDFT/max(dataDFT); % Divide by the maximum value
    

    您不希望它缩放到零,因为这会导致无法在对数图上查看。

    【讨论】:

      【解决方案2】:

      FFT 是一种用于计算离散傅里叶变换 (DFT) 的算法。 inverse DFT (IDFT) 在其定义中具有 1/N 个比例因子。也许这就是让你感到困惑的地方。来自维基百科:

      • DFT(从有限序列x到傅里叶系数X):

      • IDFT(从 X 回到 x):

      所以,只需将ifft 应用于fft 的结果,您就会得到原始结果。例如:

      >> x = linspace(-1,1,5)
      x =
         -1.0000   -0.5000         0    0.5000    1.0000
      
      >> y = fft(x)
      y =
              0            -1.2500 + 1.7205i  -1.2500 + 0.4061i  -1.2500 - 0.4061i  -1.2500 - 1.7205i
      
      >> abs(y)
      ans =
               0    2.1266    1.3143    1.3143    2.1266 %// note values greater than 1
      
      >> ifft(y)
      ans =
         -1.0000   -0.5000    0.0000    0.5000    1.0000
      

      事实上,IDFT 可以是expressed in terms of the DFT,应用复共轭和参考的比例因子。用F表示DFT,用F-1表示IDFT,用*表示复共轭,

      在上面的例子中,

      >> 1/numel(y) * conj(fft(conj(y)))
      ans =
         -1.0000   -0.5000    0.0000    0.5000    1.0000
      

      【讨论】:

      • 当然,另一个(同样有效的)定义在 DFT 和 IDFT 中都有一个 sqrt(1/N) 术语——这可能给出了 OP 所期望的结果
      • @BenVoigt 好点。但是,至少在我的经验中,DFT 的 1 缩放和 IDFT 的 1/N 缩放是最常见的定义
      • 我想我知道由于对每个 X_k 求和超过 n 会导致比例失真,但是有没有办法恢复正确的比例?也就是说,如果输入类似于方波,则在分析完成后,输出将是奇次谐波与
      • **抱歉评论还没写完就发了:
      • 我的意思是:我想我理解由于每个 X_k 对 n 求和而导致比例失真(如果这是错误的,请纠正我),但是有没有办法恢复“有意义的”缩放?即每个傅立叶分量对信号的贡献比例?如果 F.T.分析完成并且输入是方波,输出将是具有系数(1 / n)的奇次谐波(也许我也对此感到困惑?)并且这些系数都不会超过函数的原始幅度。那么如何在 DFT 中恢复呢?
      猜你喜欢
      • 2012-06-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多