我想在 Matlab 中创建一个循环,它只能在用户指定的时间间隔内工作,而不仅仅是整个时间。怎么写这个循环条件?
问候
你的意思是这样的:
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
?
通常,您会以多种方式进行迭代。我能想到的主要方法有两种。我还将为社区 wiki 打开它,以便其他人也可以轻松地编辑它。
首先,使用一个简单的For
循环。
一般语法是for index = 1:someValue
someValue
实际上可以是比1
这种情况更大的任何东西。很多时候,它只是您要遍历的矩阵的最后一个索引值。
你也可以修改它!假设您希望每个第三个索引都从矩阵中的第二个位置开始。你所要做的就是:for index = 2:3:someValue
这里的 3 告诉循环它应该index
在每次循环迭代结束时将 3 添加到 ,直到你到达(或超过)someValue
。
另一个修改是向后遍历。在这种情况下,您从“结束”开始并移动到开头。它看起来像这样:for index = someValue:-1:1
您还可以在倒退的同时执行每 4 个索引for index = someValue:-4:1
。
显然,您可以将两者之间的值替换为:
您想要的步长。您只需要注意可能出现的潜在索引问题。即试图索引超出矩阵范围或可能变为负数。
其次,您可以在这里修改循环本身的值。通常,当您使用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
满足这里的逻辑语句。如果第一次尝试运行循环时该语句不正确,则它根本不会执行。
希望这会有所帮助,如果您需要,请随时要求任何额外的说明!
其他人,请随时编辑以添加其他信息或清理我可能没有完全解释的内容 =)
如果您只想在循环中某个条件为真时执行操作,则只需要以下内容:
for i=1:length(arr)
if condition(arr(i))
do_something(arr(i));
end
end