考虑以下 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))
当用作k
th 索引的一部分时。这种用法的例子是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)
引用超过矩阵末尾的列时,赋值会自动增长矩阵,将刚刚计算的向量添加为右侧的新列。