2012-09-11 5 views
1

저는 매트릭스 A = [1 2 -3; 4 5 -2]. 이제 for 루프를 사용하지 않고 배열을 필터링하여 0보다 작은 모든 값이 0을 반환하도록합니다. 따라서 출력 매트릭스는 RES = [1 2 0; 4 5 0].범위 내의 값을 찾으십시오 : Matlab

문제를 해결할 수있는 링크/샘플 코드는 크게 감사하겠습니다.

답변

4
RES = A; 
RES(RES<0)=0 

RES<0[false false true; false false true]이 경우에, 논리 어레이를 생성한다. 그런 다음 표기 RES(RES<0)=을 사용하면 모든 값을 어떤 값에 맞출 수 있습니다.

이것은 매우 일반적이며 유용한 Matlab 관용구입니다.

+0

대단히 고마워. – MKS

3

다른 사람이 보여준 것처럼 여러 가지 방법이 있습니다. 때로는 하나의 해결책이나 다른 것이 가장 좋기 때문에 당신이 느끼는 것은 당신이 가진 선택입니다. 따라서 이것을 시도하십시오 :

RES = max(A,0); 

결과에서 각 요소에 대해 더 큰 값 또는 A (i)를 취합니다. 좋은 점은 결과를 미리 할당 할 필요가 없으므로이 솔루션은 단 한 줄만 필요하다는 것입니다.