gpt4 book ai didi

c++ - 我如何在 Eigen 中创建复数矩阵

转载 作者:太空狗 更新时间:2023-10-29 21:02:51 28 4
gpt4 key购买 nike

我有一个大小为 NxM 的矩阵,我想创建一个大小为 N/2 x M 的复数矩阵,其中实数在矩阵的左侧,复数部分在右侧。

我想到了这个:

auto complexmatrix= Shapes.block(0,0,Shapes.rows(),data.cols()) * std::complex<float>(1,0) +
Shapes.block(0,data.cols(),Shapes.rows(),data.cols())*std::complex<float>(0,1);
std::cout << complexmatrix<< std::endl;

这可以优化还是有更好的方法来创建复杂的矩阵。

总而言之,代码就这样结束了。感觉就像我错过了 Eigen 的东西。目标是转换为复数表示法并从每一行中减去逐行平均值。

//Complex notation and Substracting Mean.
Eigen::MatrixXcf X = Shapes.block(0,0,Shapes.rows(),data.cols()) * std::complex<float>(0,1) +
Shapes.block(0,data.cols(),Shapes.rows(),data.cols())*std::complex<float>(1,0);
Eigen::VectorXcf Mean = X.rowwise().mean();
std::complex<float> *m_ptr = Mean.data();
for(n=0;n<Mean.rows();++n)
X.row(n) = X.row(n).array() - *m_ptr++;

最佳答案

这是一个更简单的代码版本,可以更好地使用 Eigen:

int cols = 100;
int rows = 100;
MatrixXf Shapes(rows, 2*cols);
MatrixXcf X(rows, cols);
X.real() = Shapes.leftCols(cols);
X.imag() = Shapes.rightCols(cols);
X.array().colwise() -= X.rowwise().mean().array();

关于c++ - 我如何在 Eigen 中创建复数矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563546/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com