我在Matlab中有一个3D矩阵来存储2D数组序列。我必须找到最大值及其行和列索引,这对于保存2D数组的单个变量来说非常简单
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切片,但是我想我是否可以找到一种更好的方法来执行此操作,也许可以调用重塑?在这种情况下,有什么方法可以使用简单的线性化/展平运算符
(:)
? 最佳答案
这是我要做的:
[B i]=max(reshape(A,[],size(A,3)));
[II,JJ]=ind2sub(size(A),i );
唯一的限制是,它不能很好地处理每个2D切片超过一个最大值的情况。
关于matlab - 从3D矩阵变量切片时将2D矩阵展平为1D的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31597692/