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])
它返回完全相同的結果。請有人可以解釋第二種方法的工作原理和原因?
我發現了一個簡單的方法來複制矩陣維度,但我不明白:兩種方法來複制矩陣
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])
。
看來我最初誤解了這個問題,編輯了這個更清楚。 –