2013-03-14 470 views
0

我有一個3列和N行的矩陣。我試圖修改一個元素並查看該元素(通過不放分號)。出於某種原因,它總是給我整行。在Matlab中修改矩陣元素

下面的代碼和它做什麼:

for i=1:N 
    [fitG params resnorm residual]=lorentzfit3(X,Y,[]); 
    PICSG(i,1)= params(2) 
    PICSG(i,2)= params(5) 
    PICSG(i,3)= params(8) 
end 

X和Y的每N. PARAMS給在退出10個參數。這是運行此代碼時的命令窗口結果。

PICSG = 
2.6288e+09 

PICSG = 
1.0e+09 * 
2.6288 2.8425 

PICSG = 
1.0e+09 * 
2.6288 2.8425 2.7368 

爲什麼它顯示所有的PICSG而不是我所要求的?

回答

0

爲PICSG

預先分配存儲
PICSG = zeros(N, 3) 
+1

後分配MATLAB顯示所有矩陣。對於一個元素使用disp(PICSG(i,3))或PICSG(i,3)在單獨的行上。 – 2013-03-14 14:03:03

1

當你PICSG(1,1)=參數(2),你不問Matlab的顯示PICSG(I,1),你正在做一個分配新建分配FY和通過不添加分號,您可以要求MATLAB顯示該分配的結果。

賦值後,如果沒有使用分號,MATLAB將顯示所有修改後的矩陣,而不僅僅是修改後的值。

如果你要顯示的值使用:

for i=1:N 
    [fitG params resnorm residual]=lorentzfit3(X,Y,[]); 
    PICSG(i,1)= params(2); disp(PICSG(i,1)); 
    PICSG(i,2)= params(5); disp(PICSG(i,2)); 
    PICSG(i,3)= params(8); disp(PICSG(i,3)); 
end