【发布时间】:2016-02-08 22:07:19
【问题描述】:
假设我们有一个 10x20 的实矩阵:
Eigen::MatrixXd A(10,20);
A.setRandom();
我们想构造一个 10x10 的矩阵,格式为
B = [v v ... v v]
其中v 是长度为10 的列向量。对于这个向量v,每个元素都是A的每一行的平方范数,即:
v = ( ||x_1||^2, ||x_2||^2, ..., ||x_10||^2,)^T,
其中x_j 表示 A 的第 j 行。
构造矩阵B最有效的方法是什么?
我可以如下构造v:
Eigen::VectorXd v(10);
for (int i=1; i<10; i++)
{
v(i) = A.row(i).squaredNorm();
}
我认为如果没有for 循环,这一步就无法解决。我怎样才能将此列复制 10 次,以便如上所述填充 B?
【问题讨论】: