考虑以下 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此代码中没有调用先前定义的变量。
考虑以下 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))当用作kth 索引的一部分时。这种用法的例子是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)引用超过矩阵末尾的列时,赋值会自动增长矩阵,将刚刚计算的向量添加为右侧的新列。