C++ 中复数的表示离散傅里叶变换
我目前正在编写一个小工具,它可以帮助我检查手动计算的傅里叶向量是否正确。现在我需要由 omega = exp(2*pi*i / n) 指定的第 n 个 Unity 根。有人可以解释一下如何在 C++ 中将这个 omega
表示为一个 complex
吗?
I am currently writing a small tool which should help me check whether my manually calculated fourier vectors are correct. Now i need the n-th Root of Unity specified by omega = exp(2*pi*i / n)
. Can somebody explain me how to represent this omega
as a complex
in C++?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用欧拉公式:
那就很简单了:(
用系统上可用的宏替换 TWOPI或者只是 2π 的值,但您认为合适)。
Use Euler's formula:
Then it's easy:
(replace TWOPI with either a macro available on your system or just the value of 2π however you see fit).
那么,旋转因子 omega 的实部和虚部就是:
Well, the real and imaginary parts of the twiddle factor omega is just:
有一个函数使用极坐标返回复数:
其中 rho 是幅度,theta 是弧度角度。
在这种情况下,
rho
始终为 1.0。There is a function that returns a complex number using polar coordinates:
where
rho
is the magnitude, andtheta
is the angle in radians.In this case,
rho
is always 1.0.