2011-11-18 6 views

답변

5
v = a(sub2ind(size(a), b, 1:length(b))) 

sub2ind 하위 색인을 단일 색인으로 변환합니다.

0

또 다른 한가지는 사용자의 설명에 매우 가깝게 두는 것이고 arrayfun 기능을 사용할 수 있습니다.

우선 x 값을 원하는 출력으로 매핑하는 함수를 정의하십시오.

fn = @(x) a(b(x), x); 

그런 다음 i 벡터의 각 입력에 대해 해당 함수를 호출하십시오.

i = 1:3; 
v = arrayfun(fn, i); 

또는,이 모두가 명백한 방법으로, 하나의 라인으로 수행 할 수 있습니다

for ixLoop = 1:3 
    v(ixLoop) = a(b(ixLoop),ixLoop); 
end 

관련 :

v = arrayfun(@(x) a(b(x), x), 1:3); 

arrayfun 속기는 아래의 루프 단순히 기능 arrayfun, cellfunstructfun도 비슷한 용도로 사용되며 이상하게 작동됩니다. This Joel article 나를 믿는 사람으로 설득했다.

관련 문제