2013-06-01 92 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)引用一个超过矩阵末尾的列时,该赋值会自动增长该矩阵,并将刚刚计算的向量作为右侧的新列添加。