Floating point 两个实函数的同时快速傅里叶逆变换

Floating point 两个实函数的同时快速傅里叶逆变换,floating-point,signal-processing,fft,ifft,real-datatype,Floating Point,Signal Processing,Fft,Ifft,Real Datatype,我试图用一个IFFT计算两个实函数的傅里叶逆变换。到目前为止,我找到的最好、最直接的解释是: 利用FFT是线性的事实,并形成第一次变换加上i乘以第二次变换的和。 有两个向量,x1和x2,带 离散傅里叶变换X1和X2 分别地然后 x1=Re[IDFT[x1+ix2]] 及 x2=Im[IDFT[X1+ix2]] 问题是我不知道'I'参数来自哪里。 对此的任何暗示都将不胜感激 提前谢谢 编辑: 在做了一些实验之后,我终于让它起作用了,但现在我比以前更困惑了,因为它没有像我预期的那样起作用,不得不用一

我试图用一个IFFT计算两个实函数的傅里叶逆变换。到目前为止,我找到的最好、最直接的解释是:

利用FFT是线性的事实,并形成第一次变换加上i乘以第二次变换的和。 有两个向量,x1和x2,带 离散傅里叶变换X1和X2 分别地然后

x1=Re[IDFT[x1+ix2]]

x2=Im[IDFT[X1+ix2]]

问题是我不知道'I'参数来自哪里。 对此的任何暗示都将不胜感激

提前谢谢

编辑:

在做了一些实验之后,我终于让它起作用了,但现在我比以前更困惑了,因为它没有像我预期的那样起作用,不得不用一些想象力来找出正确的公式

我刚刚制作了一个新的复杂阵列,其中:

Re[n] = X1Re[n] - X2Im[n]
Im[n] = X2Re[n] + X1Im[n]
在对它进行了IFFT之后,x1=Re和x2=Im,这样表达它不是正确的吗

x1 = Re[ IDFT[ X1 - i X2 ] ]
x2 = Im[ IDFT[ X2 + i X1 ] ].

你想知道“我”代表什么吗?在这种情况下,我相信‘I’指的是sqrt(-1),虚单位向量

然后:

将是该转换的“真实”部分(任何没有“i”的内容),并且

将是该变换的“假想”部分(任何与“i”相乘的内容)


我可能误解了你的问题,这个答案太简单了;如果是这样的话,那不是对你的智力的侮辱,我只是误解了你。

如果你想忽略复杂变量的数学,乘以I只是你交换和缩放一对向量以产生另一对向量的符号。并且复数向量X1和X2可以分别被视为仅仅是实值向量对(在感兴趣的变换下具有“复数”关系)。交换和缩放使两个分量向量在经过一些运算和转换后更容易分离为感兴趣的实值向量。

正是“加i乘以第二”部分让我感到疑惑。我不是数学大师,也不是假装的数学大师,我只是想在对FFT库有一点了解的同时,将这个功能添加到我的FFT库中:)这是因为FFT的线性,这意味着它尊重加法和标量乘法。(即F(a+bc)=F(a)+cF(b)。你可以利用这一点将你的2个变换写成1。因此,你不需要先做F(a)然后再做F(a+bi),然后再做F(a)=没有i的任何东西,而F(b)=有i的任何东西。在这种情况下,“i”就像任何常量一样工作。这就像……一种非常先进的将(x-2x+2)重写为(x-2x+1)的方法+1,这样你就可以写(x-1)^2+1。它们都是一样的,只是更容易使用其中一个。出于兴趣,对真实数据进行IFFT的用例是什么?虽然实值时域信号当然非常常见,但我从未见过纯真实的频域信号?IFFT是在一个FFT的输出上进行的,该FFT由两个实数输入对不起,我想我没说清楚:)@eryksun你是对的,我转录错了,谢谢
Re[ IDFT[ X1 + i X2 ] ]
Im[ IDFT[ X1 + i X2 ] ]