2011-03-17 5 views
1

에 while 루프에 조건을 추가 할 수 없습니다 나는이처럼 보이는 while 루프가 위의 조건은 if 성명에서 작동합니다. 나는 잠시에 추가 조건으로 추가하려고 할 때, 또는 나는 또 다른 조건을 추가 할 경우에도 예를 들어 내가 해봤다면 if ((exit_border_point ~= false) && (true)) 그것은 나에게 말한다 다음 ||&&은 matlab에

"피연산자 연산자는 논리적 스칼라 값으로 변환 가능해야합니다. "

내가 뭘 잘못하고 있니?

* exit_border_point 에테르에게, 그것은 스칼라로 평가해야하는 조건이 if 또는 while 문장의 맥락에서 이해 할 수있는 (3x1) 벡터 또는 false

답변

2

exit_border_point이 벡터가 될 수 있기 때문에,이처럼 any 또는 all 기능을 사용해보십시오 : 당신은 아마 추측 수 있듯이

if (~any(exit_border_point)) 

, 배열에 아무것도 trueallany 반환 true을 평가하는 경우 배열의 모든 내용이 true 인 경우 true을 반환합니다. 그들은 ||&&에 해당하는 벡터와 같습니다.

1

을 가져옵니다. 모두에 해당하는 경우 true을 원하는 경우

따라서, 당신은 (all(exit_border_point == true)에 해당)

all(exit_border_point)

를 작성해야합니다. exit_border_point이 true가 되 자마자 while 루프를 종료하려면 allany으로 바꾸십시오.

&&||은 스칼라에서만 작동합니다. 두 번째 명령문은 첫 번째 명령문이 결과를 결정하면 두 번째 명령문은 평가되지 않습니다 (즉, 의 경우에 false으로 평가됩니다.) 요소 별 비교 배열을 사용하려면 &|.

을 사용하십시오.
1

exit_border_point이 3x1 벡터 인 경우 (exit_border_point ~= false)도 3x1 벡터를 반환하므로 오류가 발생합니다. 대신 다음 조건을 사용하십시오.

~isequal(exit_border_point, false)