1

考虑以下 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此代码中没有调用先前定义的变量。

4

2 回答 2

4

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

于 2013-06-01T20:01:48.390 回答
2

end是 Matlab 中的关键字,可用作数组索引,始终表示该维度中的最后一个元素。

out(:, end)最后一栏也是 如此。out(end, :)是最后一行。 out(1, end)是第一行的最后一个元素。

在这里,当out(:, end+1)引用超过矩阵末尾的列时,赋值会自动增长矩阵,将刚刚计算的向量添加为右侧的新列。

于 2013-06-01T20:02:48.693 回答