2012-02-11 3 views
0

어떤 어려움이 코드가 무엇을하는지 이해할 수 없다 그것을하는 방법.MATLAB과 이해

나는 matlab manuals을 읽었지만 여전히 혼란 스럽습니다. *로 사용

if any([*]==0) 
    1 
else 
    0 
end 

이 값 (그리고 더 많은) : 나는 다음이 테스트 케이스를 시도했습니다

[0 0;0 0] 
[1 0;0 0] 
[1 0;1 0] 
[1 0;0 1] 
[1 1;1 1] 

하지만 난 아직도 혼란 스러워요 결과가 어두운 .. 어떤 설명하십시오 ?

답변

2

matlab에 (그리고 아르마딜로) true에 대한 false1 (또는 정말 0 아니라 무엇이든)에 대한 0 같은 논리 값을 나타냅니다. 둘 다 컴포넌트 - 와이즈 비교를 수행하고 불리언 행렬을 출력하는 행렬/벡터에 대해 연산자 ==을 정의합니다. any은 불리언 행렬을 가져 와서 0이 아닌지 확인합니다.

아르마딜로 any가 표시되지 않지만,이 any을 구현하는데 사용될 수있는 find 제공 않습니다

!find(X, 1).is_empty() 

을 (아마도 느리긴하지만) 상당 : 대부분의 하나의 비의 벡터를 구성 제로 요소 (documentation for find). 비어있는 경우 0이 아닌 요소가 없으므로 any은 false를 반환합니다.

+0

** find (X, 0) .is_empty() ** works – nkint

+0

'1'은 발견 한 첫 번째 0이 아닌 색인 뒤에 멈추게합니다. 그렇지 않으면 그것들 모두를 계산할 것이다. 실제로 성능면에서 중요하지 않습니다. – perelman

+0

내 행렬의 예는 다음과 같습니다. * [1.0000 0.0100 0.1000 0.1000 0.1000 0.1000; 1.0000 0.0100 0.1000 0.1000 0.1000 0.1000 * 부정 (**! **) 및 1 .. 작동하지 않습니다. exaclty 이유를 모르겠 음 – nkint

0

버전 3.910부터 아르마딜로는 any() 기능을 가지고 있습니다.