У меня есть 3D-матрица в Matlab для хранения последовательности 2D-массивов. У меня найти максимальное значение и его индексов строки и столбца, который является довольно простым для одной переменной, которая содержит 2D-массив как вЛучший способ сгладить 2D-матрицу до 1D при нарезке из трехмерной матричной переменной
A = rand(10,10);
[m,i] = max(A(:));
[I,J] = ind2sub(size(A) , i)
Беда в том, что я не могу использовать этот синтаксис для 3D матрица
A = rand(10,10,3);
[m,i] = max(A(:,:,1)(:));
[I,J] = ind2sub(size(A(:,:,1)), i)
Error:()-indexing must appear last in an index expression.
я мог бы создать временную переменную для хранения 2D срез, но я думал, что увижу, если есть лучшее средство сделать это, возможно, сделать вызов, чтобы изменить? Есть ли способ использовать простой оператор линеаризации/сглаживания (:)
в этом контексте?
Сладкий использование оба изменяются и ind2sub! Способ использования ind2sub здесь выглядит немного «вне метки» (но не ошибается). Более читаемая версия может быть [II, JJ] = ind2sub (размер (A, 1) (A, 2)], i); –
все это, похоже, я не могу использовать этот оператор сглаживания. Хорошо, что вы можете изменить форму. – jxramos