如何使用特征值将上三角矩阵的复共轭分配给下三角矩阵

时间:2019-01-21 09:08:38

标签: c++ eigen

我有一个正方形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

如何很好地表达对任意大小矩阵的这种分配?

1 个答案:

答案 0 :(得分:3)

在很多情况下,您不需要这样做,而只需使用(而不是X):

X.selfadjointView<Eigen::Upper>()

尤其是对于较大的矩阵,这可以减少所需的内存吞吐量(和缓存空间)。但是,对于较小的矩阵,它会引入一些开销。因此,要将右上方的伴随复制到严格左下方,请写:

X.triangularView<Eigen::StrictlyLower>() = X.adjoint();

对于两个变体,X必须为正方形。