2013-12-15 61 views
7

如何在matlab中我可以交互追加矩陣行?Matlab - 迭代插入/追加行到矩陣

例如可以說我有空矩陣:

m = []; 

,當我運行的循環,我得到我需要插入到矩陣行。

例如:

for i=1:5 
    row = v - x; % for example getting 1 2 3 
    % m.append(row)? 
end 

所以插入它應該看起來像後:

m = [ 
    1 2 3 
    3 2 1 
    1 2 3 
    4 3 2 
    1 1 1 
] 

在大多數編程語言中,你可以簡單地追加行到數組/矩陣。但是我發現在matlab中很難做到這一點。

回答

16

m = [m ; new_row];在你的循環中。如果您知道總行號,請定義m=zeros(row_num,column_num);,然後在您的循環中m(i,:) = new_row;

+0

你非常歡迎! – lennon310

2

只需使用

m = [m; row]; 

要考慮到延伸的矩陣是緩慢的,因爲它涉及到內存重新分配。這是更好地矩陣預分配給它的全尺寸,

m = NaN(numRows,numCols); 

,然後在每次迭代填補了行值:

m(ii,:) = row; 

此外,最好not to usei作爲變量名,因爲默認情況下它代表虛數單位(這就是爲什麼我在這裏使用ii作爲迭代指數)。

0

要在矩陣中創建並添加一個值,您可以執行此操作,並且可以製作一個完整的矩陣,如您的矩陣。 這裏行= 5然後列= 3並因此兩個for循環。

放入M(i, j)位置的值,它會在矩陣

for i=1:5 
    for j=1:3 
     M(i, j) = input('Enter a value = ') 
    end 
    fprintf('Row %d inserted successfully\n', i) 
end 

disp('Full Matrix is = ') 
disp(M) 

可證,如果你輸入給出的值時,輸出會像你插入值,

Full Matrix is = 
1 2 3 
3 2 1 
1 2 3 
4 3 2 
1 1 1