【问题标题】:Apple FFT Accelerate Framework Inverse FFT from Array of Real NumbersApple FFT 加速实数数组的框架逆 FFT
【发布时间】:2012-04-07 08:13:21
【问题描述】:

我正在使用加速框架 FFT 函数来生成声音样本的频谱图。这部分效果很好。但是,我想(有效地)直接操纵频谱(即操纵实数),然后再次调用逆,我将如何去做呢?看起来 INVERSE 调用需要一个 IMAGINARY 数字数组,但我怎样才能从我操纵的实数中产生它呢?我尝试将 realp 数组设为我的实数,而 imagp 部分为零,但这似乎不起作用。

我问这个的原因是因为我希望对语音音频样本运行 FFT,然后再次运行 FFT,然后提升倒谱的低部分(因此希望将声道分量与音高分开)和然后再次运行逆 FFT 以生成更清晰地显示声道(共振峰)信息的频谱图(即,没有音高信息)。但是,我似乎在逆 FFT 上遇到了问题,我在 realp 数组中传递了我的真实值(倒谱),而 imagp 为零。我认为我在这里做错了,结果出乎意料。

【问题讨论】:

    标签: fft inverse


    【解决方案1】:

    您需要处理复杂的前向 FFT 结果,而不是实际幅度,否则 IFFT 结果频谱的形状会失真。不要将它们视为虚数,将它们视为包含所需角相位信息的 2D 矢量的一部分。

    如果您的倒谱提升器/滤波器仅改变实际幅度,那么您可以尝试使用实际幅度的变化量作为比例因子,在执行复数 IFFT 之前更改前向复数 FFT 结果。

    【讨论】:

    • 感谢您的回复。我会缩放 realp 和 imagp 部分,还是只需要缩放一个?那么,没有办法将幅度转换回“相位信息”吗?
    • 物体的长度与它指向的角度无关。查找 atan2()。
    • 知道了。感谢您用外行的方式为我说清楚。 :)
    • 哦,如果可以的话,还有一个简短的问题。如果复数同时包含大小和方向,是否可以提取两者,操作一个,然后再次重建复数?对不起,如果这是一个愚蠢的问题。
    猜你喜欢
    • 2012-06-04
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2018-03-16
    • 2012-05-17
    • 2012-04-30
    相关资源
    最近更新 更多