我有一个正方形 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>()
特别是,对于更大的矩阵,这可以减少所需的内存吞吐量(和缓存空间)。不过,对于较小的矩阵,它会引入相当多的开销。因此,要将右上角的伴随复制到严格的左下角,请写:
X.triangularView<Eigen::StrictlyLower>() = X.adjoint();
当然,对于这两种变体,X
都必须是正方形。
关于c++ - 如何使用特征值将上三角矩阵的复共轭分配给下三角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286533/