如何迭代Matlab中的变化向量,而不是连续数?

时间:2012-11-01 10:42:55

标签: matlab vector literate-programming

我真的是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超过矩阵维度

3 个答案:

答案 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