我找到了一种复制矩阵尺寸的简单方法,但我不明白:
A=[1,2;3,4]
A1=repmat(A,[1 1 2]);
返回
A1(:,:,1)=[1 2; 3 4 ]
A1(:,:,2)=[1 2; 3 4]
如果我这样做
A2=A(:,:,[1 1])
它返回完全相同的结果。请有人能解释一下第二种方法是如何以及为什么起作用的吗?
让我们看一个更简单的例子:
A = [1,2,3,4,5]*10;
现在我相信你会同意A(1) = 10
,A(2) = 20
等等,但我们也可以使用索引向量来处理矩阵,例如A([1,3])
返回[10,30]
,但你也可以重复索引,它只会处理两次相同的元素:A([1,1])
返回[10,10]
。
现在让我们添加一个维度:
A = [1,2,3;
4,5,6;
7,8,9]*10;
所以A(1,:)
返回[10,20,30]
。但是 A([1,1], :) 呢?这将返回第一行两次!所以[10,20,30;10,20,30]
但是第三维度呢?A
是 3x3 2D 矩阵吗?是的,但它也是一个 3x3x1 3D 矩阵。因此A == A(:,:,1)
,这意味着通过与上述相同的逻辑A(:,:,[1,1])
将只返回该第三维两次,因此与repmat(A, [1,1,2])
.