考虑的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
。
考虑的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
。
写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
每次迭代第二尺寸越来越大。
end
是Matlab中的一个关键字,它可以用于数组索引并始终表示该维度中的最后一个元素。
所以out(:, end)
是最后一列。 out(end, :)
是最后一行。 out(1, end)
是第一行中的最后一个元素。
在这里,当out(:, end+1)
引用一个超过矩阵末尾的列时,该赋值会自动增长该矩阵,并将刚刚计算的向量作为右侧的新列添加。