2 차원 배열을 가지고 있는데이 배열을 'A'라고합니다. 두 개의 다른 2D 배열이 있는데, 'ix'와 'iy'라고 부릅니다. X_idx 및 y_idx에서 제공하는 인덱스 쌍에서 A의 요소 인 요소의 출력 배열을 만들고 싶습니다. 다음과 같이 루프를 사용하여이 작업을 수행 할 수 있습니다.두 배열을 배열 인덱스로, matlab/octave 단위로 정의합니다.
for i=1:nx
for j=1:ny
output(i,j) = A(ix(i,j),iy(i,j));
end
end
어떻게 루프없이이 작업을 수행 할 수 있습니까? 제가 output = A (ix, iy)를하면, (ix) X (iy)의 전체 범위에 걸쳐 A의 값을 얻습니다.
이것은 sub2ind를 사용하는 명확하고 더 효율적인 방법이 될 것이다 큰 행렬reshape(diag(A(ix(:),iy(:))),[ny nx])
매우 효율적이지 한 줄 방법입니다, 제이슨
이주의 1 차원 배열 (열 방향으로 순서)로 행렬 A의 생각 - ix 배열을 사용하여 y 좌표를 제공하고 iy 배열을 사용하여 x를 제공합니다. MATLAB에서 첫 번째 인덱스는 y 좌표입니다. yout 출력 행렬에 대해서도 마찬가지입니다. for 루프에 대해 잘못된 제한을 사용하고 있습니다. –
좋은 지적이지만 데이터를 사용하는 방법에 따라 약간 다릅니다. 그가 자신의 매트릭스를 표시하는 것이 Matlab 규약과 다른 근본적인 문제가 아니라 x 위와 아래를 보여줄 것이라는 점에 신경 쓰지 않는다면. 그러나 확실히 알고있는 것이 중요합니다, 나는 동의합니다. –