簡體   English   中英

如何在Eigen中創建復數矩陣

[英]How do i create a matrix of complex numbers in Eigen

我有一個矩陣大小的NxM,並希望創建一個大小為N / 2×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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM