我真的是matlab的初学者。现在我想要一个循环,这样它就可以迭代一个向量(不是连续的数字),它通过迭代包含数量减少的元素。
例如,我有[1; 2 ;3; 4]
(将其视为1,2,3,4号人物)
然后我想做一些事情,例如第1和第4人获得食物,第2和第3人没有食物。
在下一轮中,我希望第2和第3人(未分配的人)再次完成分配过程,但不是1和4。 所以我创建了一个向量[2; 3]来跟踪那些没有食物的东西。
然而,for i=1:length(vector)
给了我一系列连续的数字,我想要的是
for i in vector do something; end
如何实现这个?
当我刚刚提出
i=vector,
Matlab说Index超过矩阵维度
答案 0 :(得分:5)
如果要循环遍历任意向量,只需在for循环中直接使用该向量即可。例如:
vector = [3, 4, 7, 1, 1]
for i = vector
disp(i)
end
将输出3 4 7 1 1
。这相当于“for vector in vector do something。”
答案 1 :(得分:1)
for i=1:length(vector)
给你一个矢量索引 - 它总是连续的,因为它代表了矢量的first..last
位置。
听起来你想要获得矢量的标识符 out 。您可以在现有循环中执行此操作:id=vector[i]
答案 2 :(得分:0)
您是否考虑过使用Matlab结构?
s = struct(field1,value1,...,fieldN,valueN)
你可以拥有一个阵列'人'的结构(类型为人),你可以循环...
for i=1:length(people)
if people(i).HasBeenFeed = False
% feed this person...
end
end