2016-12-14 24 views
0

私は1で満たされた3x3行列に4番目の列を追加したいとします。matlabに新しい列を追加するには?

% random 3x3 matrix 
matrix = randi([1 10],3,3); 

私がものでいっぱいに新しい行を追加する方法を知っている:

matrix =[ones(3,1) matrix] 

またはそのような::

私はどちらか、このような新しい列を追加しようとすると、

matrix = [matrix;ones(1,3)] 

をが、

matrix = [ones(3,1);matrix] 

行列がcではないというエラーが発生する一貫して。

+1

'matrix = [ones(3,1)matrix]'はエラーになりません。 –

+2

'matrix = [ones(3,1)matrix]'は動作するはずですが、結果を同じ変数に格納していることに気付くので、再度実行すると行列はもはや3x3になりません。あなたはたぶんそれを間違って実行したことがあり、行列は3x3ではありません。テストのために 'matrix2 = [ones(3,1)matrix]'という新しい変数に結果を格納するか、コードを実行するたびに変数をクリアしてみてください。 –

+0

可能であれば、最終サイズの行列を事前に割り当ててみてください。それ以外の場合は、列や行を追加するのが遅くなる可能性があります(これを頻繁に行う場合は特に注意してください) –

答えて

1

あなたのコードは、入力と同じ変数に出力を保存します。

注意しないと危険です。

例:

matrix = randi([1 10],3,3); % Here matrix is 3x3 

matrix = [matrix; ones(1,3)]; % we add a row, now matrix is 4x3 

matrix =[ones(3,1) matrix]; % here we cannot add a 3x1 column since matrix is 4x3 

あなたはいつも何が起こっているかを理解するためにデバッグコードを追加することができます。

matrix = randi([1 10],3,3); % Here matrix is 3x3 
matrix = [matrix; ones(1,3)]; % we add a row, now matrix is 4x3 
disp size(matrix);    % will show you that matrix is no longer 3x3 
matrix =[ones(3,1) matrix];   
関連する問題