簡體   English   中英

無法在Matlab中為while循環添加條件

[英]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可以是向量,請嘗試使用anyall函數,如下所示:

if (~any(exit_border_point))

正如你可能已經猜到了, any返回true如果陣列中的任何計算結果為true ,並all返回true ,如果一切數組中是true 它們有點像||向量等價物 &&

為了使條件在ifwhile語句的上下文中有意義,它應該評估為標量。

因此,你應該寫

all(exit_border_point)

(相當於all(exit_border_point == true) ),如果你想要的話都是true如果一切都是真的。 更換allany ,如果你想盡快退出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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM