If statement with 2 commands

4 次查看(过去 30 天)
I have a 1 x 3 matrix (DMS).
Values are [26, 50, 60]
Code is:
if DMS(1,3) == 60
DMS (1,2) = DMS (1,2) + 1 & DMS(1,3) == 0
else
end
The purpose is to roll over (add 1) to the second elements value and set the third elements value to 0.
During runtime I am getting a value of [26, 0, 60].
What is wrong with my coding of the if statement for the desired values to be returned?

采纳的回答

Roger Stafford
Roger Stafford 2016-4-29
编辑:Roger Stafford 2016-4-29
Your code should be:
if DMS(1,3) == 60
DMS (1,2) = DMS (1,2) + 1;
DMS(1,3) = 0;
end
The '&' operator is not to be used as "do this AND do this". It functions only as a logical operator such as (x<10)&(x>3) meaning that it is true if x is less than ten and greater than 3.
Also the '==' is not an assignment symbol. It is another logical operator. The expression x==5 is true whenever x is exactly equal to 5.
  1 个评论
Stephen23
Stephen23 2016-4-29
Justin's "Answer" moved here:
Thanks Roger,
I should also use = and not == for 0 value.
That was fast and easy.
Thanks again.

请先登录,再进行评论。

更多回答(1 个)

Elias Gule
Elias Gule 2016-4-29
Ok, I think I see two problems in your if statement. 1). == is not an assignment operation, but rather a comparative one. So
DMS(1,3) == 0
checks if the value at row 1 column 3 of the DMS vector/matrix is 0; in your case it checks whether 60 is equal to 0, which returns 0 (a logical false is Matlab). 2). The & operator is a logical and. So
DMS (1,2) = DMS (1,2) + 1 & DMS(1,3) == 0
first calculates the value of DMS(1,2) + 1 => 51, then performs the operation described in 1) above, resulting 51 & 0, which returns 0.
To solve your problem: replace the ampersand ("&") with a semicolon (";"), and the "==" with "=", such that the statement will now be,
DMS (1,2) = DMS (1,2) + 1; DMS(1,3) = 0;

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by