如何在C++中将复杂<float>变量转换为浮点数?
How to convert a complex<float> variable into a float in C++?
我有一个变量在我的代码是一个复杂的浮点数。我知道它只有一个实部,我只是想把它类型转换为一个浮点变量。
我觉得这应该是超级简单的,但你不能只是键入cast,在搜索了一个多小时后找不到答案。任何帮助将非常感激!
确实没有一种"默认"的方式从complex<float>
转换为float
,因为有许多解释:
- 要复数的大小吗?(
sqrt(re*re + im*im)
) - 你想要大小的平方吗?这避免了昂贵的平方根。
- 您只想要真实的部分吗?
一些做了很多数字信号处理的框架(如X-Midas, Midas 2K, PicklingTools)明确不允许这样的转换。它们让用户选择适当的转换,这样用户就不会在转换中丢失信息。话虽如此,如果你只想要真实的组件,我觉得上面的一些答案是好的。下面是一个完整的、独立的程序,它演示了:
#include <complex>
#include <iostream>
using namespace std;
int main()
{
complex<float> cf(1.1, 2.2);
float real_portion_only = cf.real();
cout << real_portion_only << endl;
}
编译行和运行如下:
% g++ comp.cc -o comp
% ./comp
1.1
相关文章:
- EASTL矢量<向量<int>>连续的
- System.InvalidCastException - SQL to C++ - safe_cast<float>
- 没有从阵列<float>到阵列<int>的可行转换
- 数组下标的类型"float*[float]"无效
- 没有合适的构造函数可以从"float"转换为"_D3DCOLORVALUE"
- 为什么我会收到此错误?无法将 {lb, ub} 从<大括号括起来的初始值设定项列表>转换为 float(**)(float*, int)
- 将 **float array 从 C++ Dll 传递给 python
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- float* 已在 Gameobject.obj 中定义
- 如何将 qml 的文本转换为 float 和 int
- 为什么将 1 添加到 numeric_limits<float>::min() 返回 1?
- 有没有比static_cast更优雅的从int到float的演员阵容<float>?
- 编译器给出错误:format 指定类型 'float *',但参数的类型'double' [-Wformat]
- OPENCL 警告:不兼容的指针类型将'float __global[16]'传递给类型为 '__global float4 的参数 *
- 错误:无法将"float*"转换为"float"
- 如何在函数中将字符串和分数存储为(Int 或 float)
- 缩小从double到float的转换
- 着色器将uint8投射到float,并将其重新解释回uint
- 我一直收到错误"cannot convert 'float*' to 'float' in return"
- 谷歌测试编译错误 Os X:函数式转换从"int"到"internal::FloatingEq2Matcher"的模糊转换<float>