从3D矩阵变量切片时将2D矩阵展平为1D的最佳方法

jxr*_*mos 4 matlab matrix vectorization reshape

我在Matlab中有一个3D矩阵来存储2D数组序列。我必须找到最大值及其行和列索引,这对于保存2D数组的单个变量来说非常简单

A = rand(10,10);
[m,i] = max(A(:));
[I,J] = ind2sub( size(A) , i )
Run Code Online (Sandbox Code Playgroud)

问题是我无法对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.
Run Code Online (Sandbox Code Playgroud)

我可以创建一个临时变量来存储2D切片,但是我想我是否可以找到一种更好的方法来执行此操作,也许可以调用重塑?(:)在这种情况下,有什么方法可以使用简单的线性化/展平运算符?

bla*_*bla 5

这是我要做的:

[B i]=max(reshape(A,[],size(A,3)));
[II,JJ]=ind2sub(size(A),i );
Run Code Online (Sandbox Code Playgroud)

唯一的限制是它不能很好地处理每个2D切片超过一个最大值的情况。