Matlab索引特定元素或最后一个元素的变量

时间:2015-07-02 17:45:20

标签: matlab vector indexing

我想在函数的开头定义一个索引变量,以便随后索引几个向量。索引应指向特定元素(例如元素nr 3)或向量的最后一个条目。

我希望能够将索引变量设为字符串并对其进行评估。

如果是特定元素,则为:

idx = '3';
vector1(eval(idx))
vector2(eval(idx))

这很有效。但对于最后一个元素,该方法失败了:

idx = 'end';
vector1(eval(idx))
vector2(eval(idx))

就像eval(' end')一样,它会引发以下错误:

  

错误:非法使用保留关键字"结束"。

有没有人知道如何设置索引变量的解决方案,以便它可以索引到特定元素或未知大小的向量的最后一个元素?

谢谢!

1 个答案:

答案 0 :(得分:1)

你的问题是你正在尝试做两件不同的事情。在一种情况下(将idx定义为标量),您将访问每个向量中的相同元素。在第二种情况下,您要求MATLAB可能访问每个向量中的不同元素(除非您确定每个向量的长度相同)。您必须以不同方式对待每个案例。你可以编写一个像这样的

的子函数
function element = return_element(vector, idx)
if idx <= 0
    element = vector(end);
else
    element = vector(idx);
end
end

你会这样称呼:

idx = -1;
% lots of code
return_element(vector1,idx); % = vector1(end)
return_element(vector2,idx); % = vector2(end)

idx = 3;
% lots of code
return_element(vector1,idx); % = vector1(3)
return_element(vector2,idx); % = vector2(3)