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

发布于 2024-11-15 20:04:56 字数 743 浏览 1 评论 0原文

我正在尝试使用单个 IFFT 计算两个实函数的傅里叶逆变换。到目前为止,我发现的最好、最直接的解释是这里,它说:

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

x1 = Re[ IDFT[ X1 + i X2 ] ]

x2 = Im[ IDFT[ X1 + i X2 ] ]。

问题是我不知道“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'm trying to calculate the inverse Fourier Transform of two real functions with a single IFFT. The best and most straightforward explanation I've found so far is here, where it says:

Use the fact that the FFT is linear and form the sum of the first transform plus i times the second.
You have two vectors, x1 and x2, with
discrete Fourier Transforms X1 and X2
respectively. Then

x1 = Re[ IDFT[ X1 + i X2 ] ]

and

x2 = Im[ IDFT[ X1 + i X2 ] ].

The problem is that I don't get where the 'i' parameter comes from.
Any hint on this would be much appreciated.

Thanks in advance.

EDIT:

After doing some experiments I finally made it work, but now I'm more confused than before as it didn't work as I expected and had to use some imagination to figure out the correct formulas.

I just made up a new complex array where:

Re[n] = X1Re[n] - X2Im[n]
Im[n] = X2Re[n] + X1Im[n]

After doing an IFFT on it x1 = Re and x2 = Im, so wouldn't it be correct to express it like this?

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

ぽ尐不点ル 2024-11-22 20:04:56

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

那么:

Re[ IDFT[ X1 + i X2 ] ]

将是该变换的“实”部分(任何没有“i”的东西)并且

Im[ IDFT[ X1 + i X2 ] ]

将是该变换的“虚”部分(任何乘以“i”的东西)。

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

Are you wondering what the 'i' represents? In this case, I believe 'i' is referring to sqrt(-1), the imaginary unit vector.

Then:

Re[ IDFT[ X1 + i X2 ] ]

will be the 'real' part of that transform (anything without an 'i') and

Im[ IDFT[ X1 + i X2 ] ]

will be the 'imaginary' part of that transform (anything multiplied by an 'i').

It is possible I've misunderstood your question and this answer is much too simplistic; if it is, no insult was intended to your intelligence, I just misunderstood you.

话少情深 2024-11-22 20:04:56

如果您想忽略复数变量的数学,乘以 i 只是表示如何交换和缩放一对向量以生成另一对向量的表示法。并且复数向量 X1 和 X2 都可以被认为是实值向量对(在感兴趣的变换下具有“复杂”关系)。交换和缩放使得两个分量向量在经过一些算术和变换之后更容易分离成感兴趣的实值向量。

If you want to ignore the mathematics of complex variables, multiplying by i is just notation for how you swap and scale a pair of vectors to produce another pair of vectors. And the complex vectors X1 and X2 can each be considered to be just pairs of real-valued vectors (with a "complex" relationship under the transforms of interest). The swap and scale makes the two component vectors more easily separable, after some arithmetic and transforms, into the real valued vector of interest.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文