[英]Unable to add a condition to a while loop in Matlab
我有一個看起來像這樣的while
循環:
while ((min_t_border>0) && (colided_border_num > 0) && (~(min_t>0)))
...
end
我想添加另一個條件: (exit_border_point ~= false)
或(exit_border_point)
當我將上述條件的以太符合在if
語句中時它起作用。 但是當我嘗試將它作為附加條件添加到while時,或者甚至當我嘗試向if添加另一個條件時,例如我嘗試了if ((exit_border_point ~= false) && (true))
它告訴我:
“對||
和&&
運算符的操作數必須可以轉換為邏輯標量值。”
我究竟做錯了什么?
* exit_border_point
獲取ether a (3x1)
向量或false
由於exit_border_point
可以是向量,請嘗試使用any
或all
函數,如下所示:
if (~any(exit_border_point))
正如你可能已經猜到了, any
返回true
如果陣列中的任何計算結果為true
,並all
返回true
,如果一切數組中是true
。 它們有點像||
向量等價物 和&&
。
為了使條件在if
或while
語句的上下文中有意義,它應該評估為標量。
因此,你應該寫
all(exit_border_point)
(相當於all(exit_border_point == true)
),如果你想要的話都是true
如果一切都是真的。 更換all
有any
,如果你想盡快退出while循環任何exit_border_point
是真實的。
請注意&&
和||
只適用於標量。 它們是快捷操作符,因為如果第一個語句確定結果,則不會評估第二個語句(例如,在&&
情況下評估為false
。如果你想逐個元素地比較數組,請使用&
和|
。
如果exit_border_point
是3x1向量,則(exit_border_point ~= false)
也返回3x1向量,因此返回錯誤。 請改用此條件:
~isequal(exit_border_point, false)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.