2013-06-01 94 views
0

考慮的MATLAB代碼以下位:在這裏做什麼`end + 1`行?

degree = 6; 
out = ones(size(X1(:,1))); 
for i = 1:degree 
    for j = 0:i 
     out(:, end+1) = (X1.^(i-j)).*(X2.^j); 
    end 
end 

我不知道我看到end+1指數是如何運作的。在此代碼中沒有以前定義的變量end

回答

4

end作爲下標等效於在指定的尺寸的陣列中的寫入最後一個元素的索引,如在規定的official documentation

end功能中的索引也用作最後一個索引表達。
在此情況下,end = (size(x,k))用作k指數的一部分。這種使用的例子是X(3:end)X(1,1:2:end-1)當使用end來增長數組時,如X(end+1)=5,確保首先存在X

在你的情況(以粗體突出),out(:, end+1)指基質out與的i每次迭代第二尺寸越來越大。

2

end是Matlab中的一個關鍵字,它可以用於數組索引並始終表示該維度中的最後一個元素。

所以out(:, end)是最後一列。 out(end, :)是最後一行。 out(1, end)是第一行中的最後一個元素。

在這裏,當out(:, end+1)引用一個超過矩陣末尾的列時,該賦值會自動增長該矩陣,並將剛剛計算的向量作爲右側的新列添加。