gpt4 book ai didi

c++ - Eigen C++ 中的矩阵矩阵

转载 作者:行者123 更新时间:2023-11-30 03:55:10 24 4
gpt4 key购买 nike

我正在用 C++ 创建一个电路分析库(也是为了学习 C++,所以我对它很陌生)。

在熟悉 Eigen 之后,我想要一个矩阵,其中每个单元格都有一个 3x3 复数矩阵。

到目前为止,我已经尝试了这个非常简单的原理证明:

typedef Eigen::MatrixXcd cx_mat;
typedef Eigen::SparseMatrix<cx_mat> sp_mat_mat;

void test(cx_mat Z1){
sp_mat_mat Y(2, 2);

Y(0, 0) = Z1;
Y(2, 2) = Z1;

cout << "\n\nY:\n" << Y << endl;
}

测试这个简单示例失败的可能结果是 Eigen 需要一个数字而不是一个结构。

事实上,矩阵的矩阵是稀疏的,因此是稀疏矩阵结构。

有什么方法可以让它工作吗?

感谢任何帮助。

最佳答案

我不相信 Eigen 会给你一个方法来完成这项工作。我在考虑连接到 Matrix 或 Sparse 矩阵的其他函数,例如:

  • 逆()
  • 规范()
  • m.row()*m.col()

矩阵元素数换成矩阵后Eigen怎么办?

我能理解的是,您想拥有一个数据结构,以一种内存高效的方式存储您的 Eigen::MatrixXcd

您也可以使用 map 容器实现这一点:

#include <map>

typedef Eigen::MatrixXcd cx_mat;
cx_mat Z1;

std::map<int,Eigen::MatrixXcd> sp_mat_mat;
int cols = 2;
sp_mat_mat[0*cols+0]=Z1;
sp_mat_mat[2*cols+2]=Z1;

内存效率较低,但使用 vector 容器可能更容易访问:

#include <vector>

std::vector<std::vector<Eigen::MatrixXcd>> mat_mat;

关于c++ - Eigen C++ 中的矩阵矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29185608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com