2012-10-16 37 views
1

假設我有矩陣A,並且想要得到矩陣[A 0; 0 1]。有沒有建立功能來做到這一點?Matlab將對角線擴展一個

所以,如果我的矩陣是[2 3; 1 4],我會回來[2 3 0; 1 4 0; 0 0 1]

回答

6

最簡單的方法是:

newA = A; 

newA(end+1,end+1) = 1; 

這工作,因爲你可以爲分配數組索引外,因爲end表示最後元素(這裏是行和列),並且因爲在生長數組時,Matlab填充零。如果你只是想增長A,你甚至可以跳過創建newA,當然。

1

我總是用矩陣級聯像這樣

因此,對於你的例子問題:

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