Python ifft
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python ifft相关的知识,希望对你有一定的参考价值。
参考技术A 1.傅利叶逆变换得到原始信号注意fft的结果是个复数,这时取绝对值得到频率对应的振幅。ifft的结果也是复数,有正有负,因为原始信号也是有正有负,这时不能取绝对值,而应取实数部分。虚数部分都接近于0.当然如果原始信号没有负数,也可取绝对值。
2.模拟去除高频噪声
现在原始信号中加入了频率为450,500的两个小幅的高频信号,模拟高频噪声,可以发现信号波形中有很多毛刺。fft的结果频率是正频率从0到最高,然后负频率再从最高到0,所以去除高频信号就是让中间那部分为0。
我在哪里可以找到真正的 FFT 和 iFFT 实现? [关闭]
【中文标题】我在哪里可以找到真正的 FFT 和 iFFT 实现? [关闭]【英文标题】:Where can I find a real to real FFT and iFFT implementation? [closed] 【发布时间】:2012-04-23 23:01:55 【问题描述】:我有一个复杂到复杂的 FFT,但我需要一个真实到真实的 FFT 实现......
这是因为我的噪声消除算法适用于频域中的实数,而不是复数。
【问题讨论】:
在频域中采用实数听起来很可疑。能给个链接或参考吗? 如果您在频域中处理数据并忽略或归零虚部,IFFT 的结果可能看起来与原始数据完全不同。 从您最近在 SO 上提出的性质和大量问题中可以清楚地看出,您正在尝试解决噪音消除问题,但您缺少一些概念构建块为此需要。没有办法解决这个问题,只能研究:复数(基础数学)和一些通用的 DSP 主题(采样理论、滤波器、FFT 等)。您可能会考虑获取 MATLAB 克隆,例如 Octave,这样您就可以在学习(以及最终的噪声消除算法)时使用 DSP 概念,而无需编写(和调试)一堆 C 代码。 【参考方案1】:唯一适用实数到实数 FFT 的情况是您的时域信号是对称的 (x(n) = x(N-n), n=1...N-1
)。这是 FFT 的实际输入导致实际输出的唯一情况。否则,实际输入仍会导致 FFT 的复数输出。
实数到实数 FFT 非常罕见,通常不会专门实施。它们只是使用实数到复数 FFT 执行,丢弃了虚输出,因为它无论如何都是零。
您正在使用的需要真实频域数据的噪声消除算法是什么?它是否期望复杂样本的大小?我们需要进一步了解噪声消除算法的作用。
【讨论】:
【参考方案2】:FFTW3 库有一个真正的 2 个真正的 FFT 实现。 fftw_plan fftw_plan_r2r_1d()
http://www.fftw.org/fftw3_doc/Real_002dto_002dReal-Transforms.html
【讨论】:
请不要发布仅链接的答案。解释链接的内容以及它与问题的关系。以上是关于Python ifft的主要内容,如果未能解决你的问题,请参考以下文章