基本设置如下。我试图创建一个while循环,迭代直到设置条件低于一定的容忍度。然而,这个循环必须推广到同一矩阵中的多个值。一个例子(从我目前试图完成的简化):
x = [3; 2]
tolerance = [0,0]
iter = 0
while x > tolerance
x = x - 1;
iter = iter + 1;
end
我面临的问题是,只要函数中的一个值小于容差,while循环就会退出。我想要发生的是,while循环将继续在两个变量上迭代,直到它们都低于所需的容差。我不能有两个单独的循环,因为我要迭代的变量的大小没有设置为2个值。
Matlab有几个相关的函数,any
和all
,可以帮助处理这种事情。
any,如果任何元素为真,则返回true
,将在这里帮助您:
while any(x>tolerance)
...
end
你也可以使用其他技巧,比如
while sum(x>tolerance) > 0
实现同样的事情,但我喜欢any
的语义清晰。