假設我有矩陣A,並且想要得到矩陣[A 0; 0 1]
。有沒有建立功能來做到這一點?Matlab將對角線擴展一個
所以,如果我的矩陣是[2 3; 1 4]
,我會回來[2 3 0; 1 4 0; 0 0 1]
假設我有矩陣A,並且想要得到矩陣[A 0; 0 1]
。有沒有建立功能來做到這一點?Matlab將對角線擴展一個
所以,如果我的矩陣是[2 3; 1 4]
,我會回來[2 3 0; 1 4 0; 0 0 1]
最簡單的方法是:
newA = A;
newA(end+1,end+1) = 1;
這工作,因爲你可以爲分配數組索引外,因爲end
表示最後元素(這裏是行和列),並且因爲在生長數組時,Matlab填充零。如果你只是想增長A
,你甚至可以跳過創建newA
,當然。
我總是用矩陣級聯像這樣
因此,對於你的例子問題:
A = [2 3; 1 4]
A = [A A(:,1)*0; A(1,:)*0 1]
產生
A =
2 3 0
1 4 0
0 0 1
有關這一招的好處是,它非常靈活,你很容易做各種變形 。例如
A = [2 3; 1 4]
A = [1 A(1,:)*0; A(:,1)*0 A]
產生
A =
1 0 0
0 2 3
0 1 4