考虑下面的MATLAB代码:
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
写入下标,相当于写入指定维数的数组中最后一个元素的索引,详见官方文档:
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)
指向超过矩阵末尾的列时,赋值会自动增长矩阵,将刚刚计算的向量作为右侧的新列添加。