2011-03-17 39 views
1

添加到while循环我有一个while循环看起来像这样:无法条件在Matlab

while ((min_t_border>0) && (colided_border_num > 0) && (~(min_t>0))) 
    ... 
end 

我要添加到它的另一个条件:(exit_border_point ~= false)(exit_border_point) 当我把的醚上述条件适用于if声明。但是,当我试图把它作为附加条件添加到时,甚至当我尝试另一个条件添加到,例如如果我已经试过if ((exit_border_point ~= false) && (true))它告诉我:

“操作数的||&&运营商必须转换为逻辑标量值。“

我在做什么错?

* exit_border_point得到醚(3x1)载体或false

回答

2

由于exit_border_point可以是一个载体,尝试使用anyall功能,像这样:

if (~any(exit_border_point)) 

正如你可能已经猜到,any返回true如果阵列中的任何计算结果为trueall如果数组中的所有内容都是true,则返回true。它们类似于||&&的矢量等效物。

1

为条件才有意义在ifwhile声明的情况下,就应该评估为标。

因此,你应该写

all(exit_border_point)

(这相当于all(exit_border_point == true)),如果你想true如果一切都是真实的。如果您想在任何exit_border_point为真时立即退出while循环,请将all替换为any

请注意,&&||只适用于标量。他们是快捷操作员,因为如果第一个语句确定结果,则不会评估第二个语句(例如,在&&的情况下,评估为false。如果要按元素比较数组,请使用&|

1

如果exit_border_point是3x1向量,则(exit_border_point ~= false)也返回3x1向量,因此是错误。改用此条件:

~isequal(exit_border_point, false)