gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:56 24 4
gpt4 key购买 nike

我在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com