How to detect negative number in Switch and case statement
3 ビュー (過去 30 日間)
古いコメントを表示
I want to implement some control actions based on the sign of the error and Uz.
when error = -1, Uz = -1.
The output is 'other value' instead of 'Object losing altitude'.
Please how can I correct it.
Thank you for the help.
error = -1;
Uz = -1;
switch error
case error > 0 && Uz > 0
disp('Controller should not take any action')
case error > 0 && Uz < 0
disp('Open the control valve and supply more lifting gas')
case error < 0 && Uz < 0
disp('Object losing altitude')
otherwise
disp('other value')
end
0 件のコメント
採用された回答
Scott MacKenzie
2021 年 8 月 10 日
Look carefully. Because you are switching on error, your first case expression reduces to
error == (error < 0 && Uz > 0)
which is false. In fact, all your case expressions are false so the otherwise statement always executes.
The fix: Just use an if-else arrangement:
error = -1;
Uz = -1;
if error > 0 && Uz > 0
disp('Controller should not take any action')
elseif error > 0 && Uz < 0
disp('Open the control valve and supply more lifting gas')
elseif error < 0 && Uz < 0
disp('Object losing altitude')
else
disp('other value')
end
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!