将 int32_t 转换为 std::complex<float>
casting int32_t to std::complex<float>
我通过有线协议接收一些数据。我收到的一个数据包有一些 int32_t 值代表复数。即 10 个复数以 20 个 int32_t 值的形式出现(real,imag)。
我需要将 int32_t 转换为浮点数并将这些值复制到向量 > 中。我不确定执行此操作的首选方法。
这可行,但确实很丑陋且值得怀疑。这是一个 sudo 实时系统,我需要尽可能快的操作。
float coefBuffer[20];
std::transform(packet.coef,packet.coef+20,coefBuffer, [](int32_t x) { return (float)x;});
std::memcpy(complexFloatVector.data(),coefBuffer,sizeof(float)*20);
我尝试了很多种转换,没有找到更好的解决方案。
感谢任何建议。
怎么样:
for ( uint32_t j=0; j<10; ++j ) {
complexFloatVector[j] = std::complex<float>(packet.coef[2*j],packet.coef[2*j+1]);
}
不要想太多
complexFloatVector.resize(10);
for (size_t i = 0; i < 10; i++)
{
complexFloatVector[i] = std::complex<float>((float)(packet.coef[i * 2]), (float)(packet.coef[i * 2 + 1]));
}
我假设 complexFloatVector
是一个 std::vector<std::complex<float>>
类型,packet.coef
是一个包含 20 个整数的数组。
我通过有线协议接收一些数据。我收到的一个数据包有一些 int32_t 值代表复数。即 10 个复数以 20 个 int32_t 值的形式出现(real,imag)。
我需要将 int32_t 转换为浮点数并将这些值复制到向量
这可行,但确实很丑陋且值得怀疑。这是一个 sudo 实时系统,我需要尽可能快的操作。
float coefBuffer[20];
std::transform(packet.coef,packet.coef+20,coefBuffer, [](int32_t x) { return (float)x;});
std::memcpy(complexFloatVector.data(),coefBuffer,sizeof(float)*20);
我尝试了很多种转换,没有找到更好的解决方案。
感谢任何建议。
怎么样:
for ( uint32_t j=0; j<10; ++j ) {
complexFloatVector[j] = std::complex<float>(packet.coef[2*j],packet.coef[2*j+1]);
}
不要想太多
complexFloatVector.resize(10);
for (size_t i = 0; i < 10; i++)
{
complexFloatVector[i] = std::complex<float>((float)(packet.coef[i * 2]), (float)(packet.coef[i * 2 + 1]));
}
我假设 complexFloatVector
是一个 std::vector<std::complex<float>>
类型,packet.coef
是一个包含 20 个整数的数组。