问题标签 [ifft]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 高斯功率谱的 IFFT - Python
我想计算高斯功率谱的傅里叶逆变换,从而再次获得高斯。我想用这个事实来检查我的高斯功率谱的 IFFT 是否合理,因为它产生了一组以高斯方式有效分布的数据。现在,事实证明,IFFT 必须乘以因子 2*pi*N,其中 N 是数组的维数,才能恢复解析相关函数(即功率谱的傅里叶逆变换)。有人可以解释为什么吗?
这是一段代码,它首先用高斯功率谱填充数组,然后对功率谱进行 IFFT。
其中功率谱的对称性来自需要获得真正的相关函数,同时遵循使用 numpy.ifft 的规则(引用自文档:
“输入的排序方式应与 fft 返回的方式相同,即 a[0] 应包含零频率项,a[1:n/2+1] 应包含正频率项,而 a[ n/2+1:] 应该包含负频率项,按负频率递减的顺序”。)
python - numpy fft-如何选择时域和频域
我试图对一组数据使用 np.fft.ifft 执行傅里叶逆变换,但我对如何创建适当的域感到困惑。我做了一个关于 np.fft.fft 的示例,它将函数从时域转换为(角)频率,这是我构建的域:
我在这里乘以 2pi 的原因是因为我认为 Python 给了我 f 和 w = 2*pi*f 的输出,并且一切正常。但是,当我针对不同的物理问题从 k 域到 r 域进行 ifft 时,我感到很困惑(我假设这里的 k 是波数,而 r 可能是径向距离):
在这里,我没有将 k 与 2*np.pi 相乘,因为我们没有 w 和 f 那样的关系,但是我得到了错误的结果,显然如果我确实将 k 乘以 2pi,就像我对 w 所做的那样,那么我有正确的结果. 有人可以解释吗?
(我能想到在其中获得 2pi 的唯一原因是关系 k = 2pi/lambda,但它并不真正适合)
math - 基于时间 t 从初始频谱生成实时海浪的运动
过去一周左右,我使用 gerstner 波渲染了一个简单的海洋,但遇到了平铺问题,所以我决定开始“正确”渲染它们,并将我的脚趾浸入使用 iFFT 渲染高度场的浑水。
有很多论文解释了基本要点 -
1) 计算频谱
2) 使用 ifft 创建一个高度场,将频域转换为空间域 - 使用时间 t 进行动画处理
自从这次旅程开始以来,我已经了解了复平面、复指数方程、更详细的 FFT 等内容,但在创建初始频谱的初始步骤之后(渲染一个充满高斯数的纹理,均值为 0 和 sd 1,由菲利普斯谱过滤)我仍然完全迷失了。
我创建初始数据的代码在这里(GLSL):
它创建了这样的纹理:
现在我完全迷失了如何:a)从初始纹理中获得三个方向的光谱
b) 根据幻灯片 5中提到的时间 t 制作动画(https://developer.nvidia.com/sites/default/files/akamai/gamedev/files/sdk/11/OceanCS_Slides.pdf )
我可能完全愚蠢,忽略了一些非常明显的东西——我看过一堆论文,即使在熟悉了它们的含义之后,也只是迷失在公式中。请帮忙。
fft - 我无法在 Vivado 中进行合成
我在 Vivado HLS 工作,我想用测试台制作 IFFT 代码。谁能帮我?
matlab - 逆傅立叶变换
我正在尝试编写 IFT 算法。这是我的代码:
它有什么问题(我知道 Matlab 有 ifft() 函数,但我想自己写)?我用这个代码:
结果应如下所示(EN 为错误):
其中黑色图为 xN,蓝色图为 x。我的结果是直线。
matlab - Matlab FFT - 结果不理解
我试图理解我使用 Matlab FFT 得到的结果,尤其是使用 fftshift 函数
我首先计算一个简单信号的 FFT (y = cos (2 * pi * f_signal * t) 和逆变换以尝试找到原始信号。
我通过在执行 FFT 之前在起始信号处增加 100 个点来比较有和没有“零填充”的结果。
这是代码:
我不明白图 5 上的结果(带 fftshift 的移位频谱的逆变换)
这是获得的第一个频谱(未移动)(图(3)):
这是使用 fftshift 的第一个移位频谱(图(2)):
和上面移位频谱的逆傅立叶变换(图(5)):
我不明白后一个数字。如果我采用这个理论,使用 fftshift 移动频谱的事实导致获得以 f_sampling / 2 为中心的两个狄拉克,更准确地说是在 f_sampling / 2-f_signal 和 f_sampling / 2 + f_signal 上。
所以我有这两个狄拉克的总和,我做这个总和的反 FFT:所以我应该得到频率非常接近的反 FFT 2 余弦:看起来我在图 (5) 上得到两个余弦信号的乘积,但是我看不出我的误解在哪里......
如果有人可以解释这个结果?
先感谢您
python - 使用 Numpy 的 ifft 时类型不匹配
伙计们。
我在 python 中执行一些 FFT 来测试声码器算法,但是在这个代码行中
它产生错误消息:TypeError:返回数组必须是 ArrayType
这不是大小不匹配的问题,我把它掩盖了(另外,错误消息明确表示它是类型不匹配)。有任何想法吗?
python - 将 FFT 函数从 Python 2.x 转换为 Python 3.x,并从中计算 IFFT
我在 Python 中有一个用于 2.x 版本的快速傅立叶变换函数。我想在 Python 3.x 中实现它,但是“xrange”和列表标识符存在一些问题(正如我的编译器所说)。我也不知道如何在不使用任何非标准库的情况下从我的 FFT 计算逆 FFT。代码如下。提前致谢...
UPD:由于您的建议,完全重建了我的 FFT 和构建的 IFFT。PS如何关闭帖子?
python - FFT乘法Python 3.4.3
我有 FFT 和 IFFT 函数。我知道
A*B = IFFT(FFT(A)*FFT(B))
在哪里
FFT(A) FFT(B)=[q w for q,w in zip(A,B)]
但是当我输入: 10 10 => 输出: [(0.5+0j), (0.5+0j)] 我做错了什么?这是我的代码:
c++ - 快速傅立叶逆变换:不同的相位
RosettaCode 在这里给出了 Cooley–Tukey FFT 算法的简单实现。问题如下,从数学和编程的角度来看。假设一个程序的输入是一个信号的频谱,我们想要生成一个具有这样一个频谱的信号。如果正确,我们需要对输入频谱进行逆 FFT。
RosettaCode 给出的代码如下:
但这只能产生一个信号。但是几个信号可以有相同的频谱。那么如何添加一个参数才能产生这些不同的信号呢?