迭代多个间隔Matlab

时间:2012-07-20 12:16:13

标签: matlab loops iteration intervals

我想在Matlab中创建一个仅在用户指定的时间间隔内工作的循环,而不仅仅是整个时间。如何写这个循环条件?

问候

3 个答案:

答案 0 :(得分:1)

你的意思是这样的:

for i = [1:5 7:10 12:14 21:22]
   do_func(i)
end

甚至

for i = [1:5 4:7 19:-1:15]
   do_func(i)
end

答案 1 :(得分:1)

一般来说,您可以通过多种方式进行迭代。我可以通过两种主要方式来思考。我还将为社区维基打开这个,以便其他人也可以轻松编辑它。


首先,使用简单的For循环。

一般语法为for index = 1:someValue

在这种情况下,

someValue实际上可以是大于1的任何内容。很多时候,它只是您想要遍历的矩阵的最后一个索引值。

你也可以修改它!假设您希望每个第3个索引从矩阵中的第2个位置开始。你所要做的就是:for index = 2:3:someValue这里的3告诉循环它应该在每次循环迭代结束时向index添加3,直到你到达(或超过)someValue

另一种改进是向后穿越。在这种情况下,您从“结束”开始并移至开头。它看起来像这样:for index = someValue:-1:1您还可以在向后for index = someValue:-4:1时执行每个第4个索引。

显然,您可以将两个:之间的值替换为您想要的步长。您只需要了解可能出现的潜在索引问题。即试图索引矩阵的界限或潜在的负面。


其次,您可以修改循环内部的值。通常,当您使用for循环时,这不是最佳选择,因为索引变量的值将由循环以及循环内的您更改。很多时候,您会看到使用while循环或do while组合完成此操作。

一些例子如下:

index = 0;
do
{
% some operations
index = index + aNumber;
}while(index <= someValue)

在上面的示例中,循环将继续循环,直到索引值index在循环的当前迭代结束时变得大于或等于someValue。这种类型的循环将始终,并且我重复总是执行至少一次。

index = 0;
while(index <= someValue)
{
%some operations
index = index + aNumber;
}

在这种情况下,循环将继续循环,而index满足此处的逻辑语句。如果在第一次尝试运行循环时该语句不为真,则根本不会执行该语句。


希望这有帮助,如果您需要,可以随时要求进一步澄清!

其他人,请随时编辑以添加其他信息或清理我可能没有完全解释的内容=)

答案 2 :(得分:0)

如果您只想在循环中某个条件为真时执行某个操作,则只需要:

for i=1:length(arr)
    if condition(arr(i))
        do_something(arr(i));
    end
end