Matlab查找不适用于高维数组?

时间:2010-07-01 16:25:12

标签: matlab multidimensional-array matrix-indexing

说 A =兰特(2,2,2); [a,b,c] = find(A == A(1,2,2))

我得到了 a = 1时 B = 4 C = 1

什么?

4 个答案:

答案 0 :(得分:5)

试试这个:

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

来源:findind2sub

答案 1 :(得分:0)

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

A = rand(2,2,2); [a,b,c] = find(A == A(1,2,2))

请参阅FIND的文档。输出参数不适用于所有方向,仅适用于行和列。似乎MATLAB沿第二个方向连接第三个方向并返回第四列。最后一个参数等于1,因为你只有一个匹配。

答案 2 :(得分:0)

FIND函数的输出是两组索引(ab)以及这些索引的值(c)。对于大于2维的矩阵,第二个索引将是linear index

在您的示例中,您在执行A == A(1,2,2)时创建逻辑数组。此逻辑数组在索引1处具有值true(即(1,2,2)),将传递给FIND函数。此非零值的位置在矩阵的第一行(输出a = 1)和剩余维度内的第四个线性索引(输出b = 4)。 1输出c的非零值。

答案 3 :(得分:0)

查找仅在您尝试将其应用于二维数组时有效。

在Matlab Central上有一些可以执行n维数组的函数。