1

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

4

3 回答 3

5

如果要遍历任意向量,只需在 for 循环中直接使用该向量即可。例如:

vector = [3, 4, 7, 1, 1]

for i = vector
    disp(i)
end

将输出3 4 7 1 1. 这相当于“for i in vector do something”。

于 2012-11-01T15:54:41.060 回答
1

for i=1:length(vector)为您提供向量的索引 - 它始终是连续的,因为它代表first..last向量的位置。

听起来您想向量中获取标识符。您可以在现有循环中执行此操作:id=vector[i]

于 2012-11-01T11:38:41.013 回答
0

您是否考虑过使用 Matlab 结构?

s = struct(field1,value1,...,fieldN,valueN)

您可以拥有一个结构数组“人”(类型为人),您可以循环访问...

for i=1:length(people)
    if people(i).HasBeenFeed = False
        % feed this person...
    end
end
于 2012-11-01T12:15:31.953 回答