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

How to assign the complex conjugate of the upper triangular matrix to the lower triangular matrix with 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

如何很好地表达对任意大小矩阵的赋值?

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

X.selfadjointView<Eigen::Upper>()

特别是,对于更大的矩阵,这可以减少所需的内存吞吐量(和缓存 space)。不过,对于较小的矩阵,它会引入相当多的开销。所以要将右上角的伴随复制到严格的左下角,写:

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

对于这两种变体,X 当然必须是正方形。