2013-01-24 2 views
1

matlab에서 배열의 일부 요소에 액세스하려고합니다. 아래 시나리오를 고려해보십시오.MATLAB에서 배열 요소에 액세스

a = [1 2 3;4 5 6;7 8 9] 

b = [1 2;2 1] 

a에서 색인 (1,2) 및 (2,1)이있는 요소에 액세스하려고합니다. 나는 (b) 등을 사용해 보았습니다. 그러나 시도한 방법 중 어느 것도 효과가 없었습니다.

어떻게 루프를 사용하지 않고 matlab에서이 작업을 수행 할 수 있습니까?

또한 matlab에서 이러한 기본 사항에 대한 좋은 책을 제안 할 수 있다면 도움이 될 것입니다.

+0

의 중복 가능성 [(안 특정 패턴)을 행렬을 선택하는 방법에 Matlab] (http://stackoverflow.com/q/13091193/1336150). –

답변

1

첫째, sub2ind을 사용하여 인덱스에 첨자를 변환 :

dim1sub = b(:,1); 
dim2sub = b(:,2); 

ind = sub2ind(size(a), dim1sub, dim2sub) 

당신이 인덱스를 설정 한 후

a(ind) 

당신에게 줄 것이다 :

ans = 

    2 
    4 

자세한 내용은 here를 참조하십시오 매트릭스 인덱스.

+0

또는 한 줄에'a (sub2ind (size (a), b (:, 1), b (:, 2)))'를 사용하십시오 ... –

+1

@EitanT 물론, 질문에 대답 할 때 라이너. 그들은 그것보다 더 복잡하게 보입니다. – HebeleHododo

0

Matlab을 사용하면 행렬의 모든 열을 스캔하는 선형 인덱스가있는 행렬에 액세스 할 수 있습니다. 따라서 귀하의 경우 (3x3) a(2,1)=a(2)a(1,2)=a(4). @HebeleHododo가 제공 한 대답은 행 및 열 인덱스를 사용하여 선형 인덱스로 변환하여 행렬 a으로 변환합니다. 다른 크기의 행렬을 인덱싱하려면 다른 선형 인덱스가 필요하다는 것을 기억하십시오. 또한

, http://www.mathworks.com/help/matlab/index.html#language-fundamentals에서 학습 MATLAB에 도움을하거나 명령 창에 doc help를 입력 할 수 있습니다 온라인으로 가능한 많은 정보가

관련 문제