如何解决如何将特征矩阵转换为 C/C++ 数组
在 Eigen C/C++ 库中,如何将 Eigen 矩阵的运算结果(下例)转换为 C/C++ 数组?
示例:
const Eigen::MatrixXf mat = Eigen::Map<Eigen::MatrixXf>( array_C_input,3,3);
const Eigen::MatrixSquareRootReturnValue<Eigen::MatrixXf> result = m.sqrt();
float* array_C_output = (float*) result; // Error: convert sqrt output to C array
解决方法
如果您想计算作为 C 风格数组传递的矩阵的矩阵根并像 C 风格数组一样处理结果,您可以将结果存储到 MatrixXf
中并使用 {{1 }} 该矩阵的成员:
data()
或者,如果您已经为结果分配了内存,则可以将输出映射到:
Eigen::MatrixXf matrix_root = Eigen::MatrixXf::Map( array_C_input,3,3).sqrt();
float* array_C_output = matrix_root.data();
注意 void foo(float* output_array,float const* input_array) {
Eigen::MatrixXf::Map( output_array,3) =
Eigen::MatrixXf::Map( input_array,3).sqrt();
}
计算矩阵根,即如果 Matrix::sqrt
,则 S = A.sqrt()
。如果你想要一个元素的根,你需要使用
S*S == M
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。