0

我找到了一种复制矩阵尺寸的简单方法,但我不明白:

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])

它返回完全相同的结果。请有人能解释一下第二种方法是如何以及为什么起作用的吗?

4

1 回答 1

2

让我们看一个更简单的例子:

A = [1,2,3,4,5]*10;

现在我相信你会同意A(1) = 10A(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]).

于 2014-01-16T08:53:57.173 回答