我想在函数的开头定义一个索引变量,以便随后索引几个向量。索引应指向特定元素(例如元素nr 3)或向量的最后一个条目。
我希望能够将索引变量设为字符串并对其进行评估。
如果是特定元素,则为:
idx = '3';
vector1(eval(idx))
vector2(eval(idx))
这很有效。但对于最后一个元素,该方法失败了:
idx = 'end';
vector1(eval(idx))
vector2(eval(idx))
就像eval(' end')一样,它会引发以下错误:
错误:非法使用保留关键字"结束"。
有没有人知道如何设置索引变量的解决方案,以便它可以索引到特定元素或未知大小的向量的最后一个元素?
谢谢!
答案 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)