C++ 中复数的表示离散傅里叶变换

发布于 2024-12-04 17:17:37 字数 160 浏览 4 评论 0原文

我目前正在编写一个小工具,它可以帮助我检查手动计算的傅里叶向量是否正确。现在我需要由 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 技术交流群。

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

发布评论

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

评论(3

风轻花落早 2024-12-11 17:17:37

使用欧拉公式

exp(2πi/n) = cos(2π/n) + i sin(2π/n)

那就很简单了:(

complex<double> rootOfUnity(cos(TWOPI/n), sin(TWOPI/n));

用系统上可用的宏替换 TWOPI或者只是 2π 的值,但您认为合适)。

Use Euler's formula:

exp(2πi/n) = cos(2π/n) + i sin(2π/n)

Then it's easy:

complex<double> rootOfUnity(cos(TWOPI/n), sin(TWOPI/n));

(replace TWOPI with either a macro available on your system or just the value of 2π however you see fit).

最偏执的依靠 2024-12-11 17:17:37

那么,旋转因子 omega 的实部和虚部就是:

double angle = 2*pi/n;

double real = cos(angle);
double imaj = sin(angle);

complex<double> omega(real, imaj);

Well, the real and imaginary parts of the twiddle factor omega is just:

double angle = 2*pi/n;

double real = cos(angle);
double imaj = sin(angle);

complex<double> omega(real, imaj);
停滞 2024-12-11 17:17:37

有一个函数使用极坐标返回复数:

#include<complex>
complex polar(const T& rho)
complex polar(const T& rho, const T& theta)

其中 rho 是幅度,theta 是弧度角度。

在这种情况下,rho 始终为 1.0。

const double pi = 3.141592653589793238462643383279;
double omega = polar(1.0, 2*pi*i/n);

There is a function that returns a complex number using polar coordinates:

#include<complex>
complex polar(const T& rho)
complex polar(const T& rho, const T& theta)

where rho is the magnitude, and theta is the angle in radians.

In this case, rho is always 1.0.

const double pi = 3.141592653589793238462643383279;
double omega = polar(1.0, 2*pi*i/n);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文