MATLAB:
在MATLAB中,
我有 2 m-by-n 矩阵,A和B.我想制作一组 n
m-by-2 矩阵,例如 ith 矩阵( n 的集合),第一列将是 ith
来自A和第二列的列将是来自B的 ith 列。
如何从两个矩阵中提取和连接 ith 列?
如何存储这些 n 矩阵?使用循环? (存储器?)
示例:
输入:
A = [1,2,3; 4,5,6; 7,8,9](3x3矩阵)
B = [11,22,33; 44,55,66; 77,88,99](3x3矩阵)
输出:
对于i = 1:3
C1 = [1,11; 4,44; 7,77]
C2 = [2,22; 5,55; 8,88]
C3 = [3,33; 6,66; 9,99]
答案 0 :(得分:1)
我要做的第一件事是更改变量名称。主要是为了使变量更容易引用,特别是当 m 和 n 更改时。而不是写
C1(:,:)
C2(:,:)
...
Cn(:,:)
我要写
C(:,:,1)
C(:,:,2)
...
C(:,:,n)
我所做的就是将索引从变量名移动到第三维的索引。
现在,要创建C
数组:
A = [ 1, 2, 3; 4, 5 ,6; 7, 8, 9]
B = [ 11, 22, 33; 44, 55 ,66; 77, 88, 99]
[m,n]=size(A)
C = reshape([A',B']', m, 2, n)
这个输出是:
A =
1 2 3
4 5 6
7 8 9
B =
11 22 33
44 55 66
77 88 99
m = 3
n = 3
C =
ans(:,:,1) =
1 11
4 44
7 77
ans(:,:,2) =
2 22
5 55
8 88
ans(:,:,3) =
3 33
6 66
9 99
如您所见,C(:,:,1)
等于示例中的C1
C(:,:,2) = C2
,依此类推。随着A
和B
的大小发生变化,这种情况不会发生变化。你永远不必想出新的变量名。所有你需要做的就是知道你有多少 m-by-2 矩阵
numVars = size(C,3);
注意:这使用了与答案相同的技术:matlab - how to merge/interlace 2 matrices?