c++ - 将相位(角度)转换为复数值
问题描述
是否有一个标准功能val = cos(phase) + sin(phas) j
。应用“欧拉公式”来与“参数”函数相反,是否有一个常规名称?与 类似std::polar
,但需要幅度分量。
我正在查看一个大量执行以下模式的大型代码库:
Eigen::VectorXf phase = ...;
Eigen::VectorXcf cplx = ...;
cplx.real() = phase.array().cos();
cplx.imag() = phase.array().sin();
不幸的是,这没有利用sincos
优化。
有没有一种我在文档中没有找到的自然方法来做到这一点?这有一个传统的名字吗?
这可能就是我要做的,只是在我更改大量代码之前与世界核对一下。
void phase2Cplx(const Eigen::Ref<const Eigen::VectorXf> phaseIn,
Eigen::Ref<Eigen::VectorXcf> cplxOut) {
// assert len in == len out
Eigen::Index len = cplxOut.size();
std::complex<float> *out = cplxOut.data();
const float *in = phaseIn.data();
for (Eigen::Index i = 0; i < len; ++i) {
float val = in[i];
out[i] = { cosf(val), sinf(val) };
}
}
// @Details: Using () was measurably worse than []
解决方案
推荐阅读
- amazon-ec2 - EC2 事件/维护/密钥
- javafx - 无法使用 FXML 更新 JavaFX 中的散点图 NumberAxis 元数据
- android - 自定义 JUnit 规则允许所有测试通过,无论如何
- python - 有没有办法使用正则表达式从输入中获取一个或多个变量?
- ios - 如何让 UIStackView 完美填充?
- javascript - 我将如何将一些新值插入特定集合?
- javascript - 如何将 JavaScript 代码添加到 Laravel for BackPack?
- javascript - 为什么拼接项在下一个列表条目时返回显示?
- regex - nginx中的正则表达式前瞻问题
- python - 导致问题的两个版本的 Pandas