2014-11-05 7 views
2

데이터를 매트릭스 형식으로 다시 가져 오려고하면 MATLAB에 좌절감이 생깁니다. 그러나 때마다 나는 단 하나의 열 형식으로 답을 얻는다. 'C 내가논리 값을 사용하고 다른 행렬에서 데이터를 선택하는 방법은 무엇입니까?

B = [100 300 200;500 400 700;800 100 300]; 

C = B(L) 

C = 

    100 
    500 
    300 
    100 
    700 
    300 

내가 돈보고 싶은 출력

A = [1 -3 2;5 4 7;-8 1 3]; 

L = logical(mod(A,2)) 

L = 

    1  1  0 
    1  0  1 
    0  1  1 

가 지금은, B라고 매트릭스 샘플의 또 다른 세트를 가지고 예를 들어

: 나는 내 질문에 설명 할 것이다 하나의 열로 남기를 원합니다. 나는이 매트릭스 형식으로 나를 되찾기 위해 내가 무엇을 할 수 있는지 궁금하다. C?

C = 

    100  300  0 
    500  0  700 
    0  100  300 

감사합니다.

답변

3

논리 색인은 논리 행렬이 참인 행렬의 요소 만 선택합니다. 분명히 이것은 요소의 수가 바뀔 것이기 때문에 원래의 모양을 유지할 수 없다는 것을 의미합니다. 당신이하고 싶은 일을하는 몇 가지 방법이 있습니다; 가장 효율적인은 아마도 :이 B-C은 다음 L이 제로 거짓하는 행렬의 모든 요소를 ​​설정 설정

C = B; 
C(~L) = 0; 

.

+0

와우, 그냥 작품! 나는이 문제를 해결할 수있는 대안적인 방법을 결코 생각하지 못했다. 실제로 기술 제한이 있지만, 문제를 해결하기 위해 정말로 빠르고 영리합니다! 다시 한 번 감사드립니다! –

+0

아마도 제외 된 요소를'0'이 아닌'NaN' ('B'에서 유효한 값이 될 수 있음)으로 설정하는 것이 더 좋습니다. – Amro

+0

도 좋은 제안입니다. 감사합니다! –

3

아니면 빈 행렬로 시작하고 원하는 요소를 설정할 수 있습니다 :

C = NaN(size(B),'like',B); % or zeros(size(B),'like',B) 
C(L) = B(L);