의 행렬 M
이 있습니다.인덱스 목록을 기반으로 한 다차원 배열에 효율적으로 값을 할당하는 방법
다른 매트릭스 K
은 할당하고자하는 첫 번째 차원의 인덱스로 사용되며 크기는 [1, S2, S3]
입니다.
및 V
은 대응하게 할당 될 값을 포함하는 [1, S2, S3]
행렬이다. for 루프와
, 이것은 내가 그것을 어떻게 있습니다 :
for x2 = 1:S2
for x3 = 1:S3
M(K(1,x2,x3), x2, x3) = V(1, x2, x3)
endfor % x3
endfor % x2
이 할 수있는 더 효율적인 방법이 있나요? 2D 케이스
시각화 :
M = 1 4 7 10 2 5 8 11 3 6 9 12 K = 2 1 3 2 V = 50 80 70 60 Desired = 1 80 7 10 50 5 8 60 3 6 70 12
테스트 케이스 :
M = reshape(1:24, [3,4,2]) K = reshape([2,1,3,2,3,3,1,2], [1,4,2]) V = reshape(10:10:80, [1,4,2]) s = size(M) M = assign_values(M, K, V) M = ans(:,:,1) = 1 20 7 10 10 5 8 40 3 6 30 12 ans(:,:,2) = 13 16 70 22 14 17 20 80 50 60 21 24
는 내가 거기 assign_values
을 구현하기위한 효율적인 방법을 찾고 있어요.
key = sub2ind(s, K, [1:s(2)]) error: sub2ind: all subscripts must be of the same size
을 그의 대답 작업을 대신 할 수 없습니다 = sub2ind (s, K, [1 : s (1)])'K = sub2ind (s, K, [1 : s (2)])', – Irreducible
감사합니다. – Gelliant
흠,'모든 첨자는 같은 크기 여야합니다 .' (Octave를 사용하고 있습니다). – justhalf