Tengo un MatrixXd triangular inferior y quiero copiar sus valores inferiores a la parte superior, ya que se convertirá en una matriz simétrica. ¿Cómo puedo hacerlo?Copiando MatrixXd superior para bajar MatrixXd (Eigen3) Biblioteca C++
Hasta ahora me he hecho:
MatrixXd m(n,n);
.....
//do something with m
for(j=0; j < n; j++)
{
for(i=0; i<j; i++)
{
m(i,j) = m(j,i);
}
}
¿Hay una manera más rápida de hacerlo? Estaba pensando en algún método interno que sea capaz de "copiar" la matriz triangular inferior a la superior. Di Tengo esta matriz, que llamamos m
:
1 2 3
4 5 6
7 8 9
lo que necesito para obtener en m
es:
1 4 7
4 5 8
7 8 9
Sé también se puede obtener la parte superior o la parte inferior de la matriz para hacer algo:
MatrixXd m1(n,n);
m1 = m.triangularView<Eigen::Upper>();
cout << m1 <<endl;
1 2 3
0 5 6
0 0 9
Pero todavía no puede conseguir lo que quiero ...
WHT es el tamaño de su matriz? – Heisenbug
@ Heisenbug La dimensión es n (de 9000 a 32000) – Manolete
Un poco fuera de tema: ¿es esta C? ¿No debería ser 'm [j] [i] = m [i] [j]'? –