2016-12-14 40 views
0

說我想添加第4列到3x3矩陣填充1。如何在matlab中添加新列?

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

我知道如何添加一個新行充滿的:

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

但是當我嘗試添加一個新列要麼是這樣的:

matrix =[ones(3,1) matrix] 

或類似的:

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

我得到錯誤約矩陣不作c onsistent。

+1

'matrix = [ones(3,1)matrix]'沒有錯誤。 –

+2

'矩陣= [一(3,1)矩陣]'應該工作,但請注意,您在存儲相同的變量的結果,因此,如果您再次運行矩陣將不再是一個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];