考虑下面的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
的变量。
答案 0 :(得分: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
。
答案 1 :(得分:2)
end
是Matlab中的关键字,可以使用数组索引,并且始终表示该维度中的最后一个元素。
所以out(:, end)
是最后一列。 out(end, :)
是最后一行。 out(1, end)
是第一行中的最后一个元素。
在这里,当out(:, end+1)
引用超过矩阵末尾的列时,分配会自动增大矩阵,将刚刚计算的向量作为新列添加到右侧。