繁体   English   中英

本征矩阵的置换列

[英]Permute Columns of Matrix in Eigen

我读了这个答案用特征随机排列矩阵的行/列

但是他们将置换矩阵初始化为恒等矩阵并进行随机混洗。 我想知道如何将矩阵初始化为特定的排列。

例如,如果我有一个整数向量,其中每个(索引,值)对都意味着我要将“索引”列移动到“值”列,该怎么办?

Eigen::MatrixXi M = Eigen::MatrixXi::Random(3,3);
std::vector<int> my_perm = {1,2,0};
some_function to return Matrix [M.col(1), M.col(2), M.col(0)]

编辑:dtell请回答我下面的原始问题。

附加信息:

对于其他正在考虑此问题的人-如果您想用未知数量(在编译时)的向量对矩阵进行置换,则可以执行以下操作:

Eigen::VectorXi indices(A.cols());
for(long i = 0; i < indices.size(); ++i) {
    indices[i] = vector_of_indices[i];
}
Eigen::PermutationMatrix<Eigen::Dynamic, Eigen::Dynamic> perm;
perm.indices() = indices;
Eigen::MatrixXd A_permute = A * perm; \\ permute the columns

如果我对您的理解正确,那么问题的答案就是对您链接的答案的轻微修改

Matrix3i A = Matrix3i::Random();
PermutationMatrix<3, 3> perm;
// Your permutation
perm.indices() = { 1, 2, 0 };
// Permutate rows
A = perm * A;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM