离散傅里叶变换中复数的c++表示
Representation of complex numbers in C++ for Discrete Fourier Transformation
我目前正在编写一个小工具,它应该可以帮助我检查我手动计算的傅里叶向量是否正确。现在我需要由omega = exp(2*pi*i / n)
指定的Unity的n次根。有人能告诉我怎么用c++把omega
表示成complex
吗?
使用欧拉公式:
exp(2πi/n) = cos(2π/n) + i sin(2π/n)
那就简单了:
complex<double> rootOfUnity(cos(TWOPI/n), sin(TWOPI/n));
(将TWOPI替换为系统上可用的宏,或者只是2π的值,但您认为合适)。
那么,中间因子的实部和虚部就是:
double angle = 2*pi/n;
double real = cos(angle);
double imaj = sin(angle);
complex<double> omega(real, imaj);
有一个使用极坐标返回复数的函数:
#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);
相关文章:
- 表示"accepting anything for this template argument" C++概念的通配符
- 如何将ampl中的集合表示为c++中的向量
- std::is_base_of表示ctor编译错误
- 输入中的字符串数未知(以字母表示)
- 我可以信任表示整数的浮点或双精度来保持精度吗
- c++模板来表示多项式
- 询问在设计我的手臂模拟器功能表示格式1
- CMakeLists.txt中的命名空间表示法
- C++射线示踪剂ppm表示没有足够的数据来显示图像
- 如何计算Big-O表示法中的平均渐近运行时间
- 我应该如何表示我拥有的连续元素序列?
- 在C++中,使用带有 std::optional 参数的函数<T>来表示可选参数是否有意义?
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 表示类模板C++空类型
- 具有所表示类的相同构造函数签名的代理类模板
- 嵌套在循环中的两个循环的 big-O 表示法
- 具有引用成员的结构是否具有唯一的对象表示形式
- 使用 int 表示浮点除法 C++
- Geeksforgeeks C 程序故障排除:IEE 754 表示法为十进制
- 如何知道n!是否可以表示为三个连续数字的乘法?