Как ни странно, я не смог найти общий ответ на этот простой вопрос. Один связанный ответ здесь является не общим.
sub2ind
можно избежать, я полагаю, со следующей эквивалентностью [ здесь ]
sub2ind(size(A), row1, row2, row3, row4)
эквивалентно row1+ (row2-1)*size(A,1) + (row3-1)*size(A,1) *size(A,2) + (row4-1)*size(A,1) *size(A,2) *size(A,3)
.
Между тем ind2sub
для двух измерений (т. Е. Нет row3, row4
....) можно избежать, так как:
i = rem(index-1,size(A,1))+1;
j = (index-i)/size(A,1)+ 1 ;
эквивалентно:
[i,j] = ind2sub(size(A),index);
Как мы обобщить ind2sub
для 3D матриц и так далее? Меня не интересуют споры о том, следует ли нам этого избегать или нет.