Matlab find不适用于高维数组?

Matlab find不适用于高维数组?,matlab,multidimensional-array,matrix-indexing,Matlab,Multidimensional Array,Matrix Indexing,说 A=rand2,2,2; [a,b,c]=findA==A1,2,2 我得到 a=1 b=4 c=1 什么?使用等式==代替赋值运算符= 有关详细信息,请参阅文档。输出参数不适用于所有方向,仅适用于行和列。看起来MATLAB沿着第二列连接第三个方向并返回第四列。最后一个参数等于1,因为只有一个匹配项。函数的输出是两组索引a和b以及这些索引c处的值。对于大于2维的矩阵,第二个索引将是a 在您的示例中,当执行a==A1,2,2时,将创建一个逻辑数组。此逻辑数组的值为1,即在索引1,2,2处为tr

说 A=rand2,2,2; [a,b,c]=findA==A1,2,2

我得到 a=1 b=4 c=1

什么?

使用等式==代替赋值运算符=

有关详细信息,请参阅文档。输出参数不适用于所有方向,仅适用于行和列。看起来MATLAB沿着第二列连接第三个方向并返回第四列。最后一个参数等于1,因为只有一个匹配项。

函数的输出是两组索引a和b以及这些索引c处的值。对于大于2维的矩阵,第二个索引将是a


在您的示例中,当执行a==A1,2,2时,将创建一个逻辑数组。此逻辑数组的值为1,即在索引1,2,2处为true,它被传递给函数。该非零值的位置位于矩阵输出a=1的第一行,其余维度输出b=4的第四个线性索引中。非零值1是c的输出。

仅当您尝试将其应用于二维数组时,“查找”才起作用

Matlab Central提供了一些函数,可以实现n维数组。

试试这个:

[a,b,c] = ind2sub(size(A), find(A==A(1,2,2)))
资料来源:

[a,b,c] = ind2sub(size(A), find(A==A(1,2,2)))