如何使用特征值将上三角矩阵的复共轭分配给下三角矩阵
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
当然必须是正方形。
我有一个正方形 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
当然必须是正方形。