1

行列 A があり、行列 を取得したいとします[A 0; 0 1]。これを行うための組み込み関数はありますか?

私の行列が の場合、私は[2 3; 1 4]戻ってきます[2 3 0; 1 4 0; 0 0 1]

4

2 に答える 2

6

最も簡単な方法は次のとおりです。

newA = A;

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

これは、割り当てのために配列の外側にインデックスを付けることができるためend、最後の要素 (ここでは行と列) を示し、配列を大きくするときに Matlab がゼロでパディングするためです。を成長させたいだけなら、もちろんAの作成をスキップすることもできますnewA

于 2012-10-16T17:56:57.833 に答える
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
于 2012-10-17T08:06:19.483 に答える