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

标签 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

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

最佳答案

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

X.selfadjointView<Eigen::Upper>()

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

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

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

关于c++ - 如何使用特征值将上三角矩阵的复共轭分配给下三角矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286533/

相关文章:

c++ - 我可以使用 Visual Studio 2015 构建适用于 Windows 嵌入式系统(WinCE 6.0、WES7)的 C++ 应用程序吗?

C++ 模板类作为函数的参数

c++ - 将 std::vector<Eigen::Vector3d> 旋转为刚性变换?

c++ - 返回*这个;删除指针

c++ - 打印浮点值时出现问题

c++ - SDL 纹理数组?

c++ - C++/Eigen :compute the orthonormal basis for the null space

c++ - 如何使用 Eigen 库将大型二维数组转换为稀疏矩阵?

c++ - Eigen conservativeResize 奇怪的行为

特征稀疏矩阵获取非零元素的索引