2014-01-16 77 views
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]) 

它返回完全相同的結果。請有人可以解釋第二種方法的工作原理和原因?

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