Een*_*oku 6 matrix armadillo submatrix
我有几个进程,每个进程都计算自己的矩阵。最后,我希望他们将他们求解的矩阵发送到根进程,根进程实际上将它们连接到一个大矩阵中,然后简单地以 ASCII 格式将其输出到文本文件中。是否有可能以某种优雅的方式进行,或者我是否必须遍历每个矩阵并自己“加入”它?
matrix 0:
0 5
4 5
matrix 1:
1 2
3 4
matrix 2:
5 6
8 7
matrix 3:
0 0
2 1
Final "joined" matrix:
0 5 | 1 2
4 5 | 3 4
----+----
5 6 | 0 0
8 7 | 2 1
Run Code Online (Sandbox Code Playgroud)
假设您的四个矩阵数据分别存储在 data/a.txt,data/b.txt,data/c.txt,data/d.txt 中,以下代码将产生所需的结果。
arma::mat a,b,c,d ;
a.load("data/a.txt");
b.load("data/b.txt");
c.load("data/c.txt");
d.load("data/d.txt");
// join rows (=horizontally, i.e. matrices must have the same number of rows)
auto joined_ab = std::move(arma::join_rows( a, b ));
auto joined_cd = std::move(arma::join_rows( c, d ));
// join columns (=vertically, i.e. matrices must have the same number of cols)
auto joined_mat = std::move(arma::join_cols( joined_ab, joined_cd ));
std::cout << joined_mat << std::endl;
Run Code Online (Sandbox Code Playgroud)
注意:对于原始问题,以下内容成立;
a = 矩阵 0
b = 矩阵 1
c = 矩阵 2
d = 矩阵 3
所以上面的构造产生:
a | b
--+---
c | d
Run Code Online (Sandbox Code Playgroud)