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

标签 matlab matrix vectorization reshape

我在 Matlab 中有一个 3D 矩阵来存储一系列 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 切片,但我想我会看看是否有更好的方法来做到这一点,也许调用 reshape ?有什么方法可以在这种情况下使用简单的线性化/展平运算符 (:) 吗?

最佳答案

这是我要做的:

[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/

相关文章:

c - 如何将 PPM (P3) 图像中的像素数据读取到 C 中的矩阵中?

c - 设置 LAPACKE 的带状矩阵格式

r - 在数据框或矩阵上应用()优化()?

matlab - 高效计算外积的 3D 矩阵 - MATLAB

将实数转换为十六进制单精度表示并再次返回的 Matlab 函数/脚本

matlab - 如何绘制用于分类算法的 theta 向量线 (MATLAB)

python - 根据对角线项对矩阵进行排序

performance - MATLAB 识别 3D 图像中的相邻区域

matlab - 在Matlab中使用 "imhist"函数在同一个图形上绘制多个直方图

matlab - matlab中第一个非NaN元素值和索引