如何在特征中创建复数矩阵
How do i create a matrix of complex numbers in Eigen
我有一个大小为 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;
是否可以对其进行优化,或者是否有更好的方法来创建复杂矩阵。
总而言之,代码的结局是这样的。感觉我错过了艾根的东西。目标是转换为复数表示法并从每行中减去逐行平均值。
//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++;
下面是一个更简单的代码版本,可以更好地使用特征:
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();
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 使用CMake创建QML插件
- 如何创建value_type型特征?
- 在C++中创建新的类型特征
- 特征:创建一个具有函数的三维阵列
- 提升::p ython 和特征/密集创建分割错误
- 创建特征以检测C++中的闭包类型
- 在特征中创建与w!= 1的均匀坐标
- 从两个原始向量创建一个“特征::矩阵”
- 如果类型来自 std,是否可以创建一个特征来回答
- 特征不能直接从矩阵均值创建向量
- 特征库::如何从现有的稀疏矩阵中创建一个块对角线稀疏矩阵
- 用螺距,偏航,使用特征滚动创建旋转矩阵
- 如何从2个向量中创建特征矩阵
- 我刚开始使用特征矩阵代数库,目的是创建一个数据集的相似矩阵,建议
- 从C数组创建一个特征矩阵
- 我们可以创建一个特征矩阵的向量吗
- 如何在特征中创建复数矩阵