我有一个正方形Eigen::MatrixXcd
x
,该正方形具有分配给上三角部分(包括对角线轴)的复数值和一些分配给下三角部分的随机值(如4x4示例):>
X00 X01 X02 X03
X10 X11 X12 X13
X20 X21 X22 X23
X30 X31 X32 X33
我想将上三角部分的复共轭值分配给下三角部分,使其看起来像这样:
X00 X01 X02 X03
conj(X01) X11 X12 X13
conj(X02) conj(X12) X22 X23
conj(X03) conj(X13) conj(X23) X33
如何很好地表达对任意大小矩阵的这种分配?
答案 0 :(得分:3)
在很多情况下,您不需要这样做,而只需使用(而不是X
):
X.selfadjointView<Eigen::Upper>()
尤其是对于较大的矩阵,这可以减少所需的内存吞吐量(和缓存空间)。但是,对于较小的矩阵,它会引入一些开销。因此,要将右上方的伴随复制到严格左下方,请写:
X.triangularView<Eigen::StrictlyLower>() = X.adjoint();
对于两个变体,X
必须为正方形。