2

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

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

什么?

4

4 回答 4

5

试试这个:

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

来源:查找ind2sub

于 2010-07-01T16:35:29.693 回答
0

使用相等==而不是赋值运算符=

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

请参阅FIND的文档。输出参数并非针对所有方向,仅针对行和列。似乎 MATLAB 沿第 2 列连接第 3 方向并返回第 4 列。最后一个参数等于 1,因为您只有一个匹配项。

于 2010-07-01T16:28:10.623 回答
0

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

在您的示例中,您在执行A == A(1,2,2). 这个在 index 处具有1(ie ) 值的逻辑数组被传递给FIND函数。这个非零值的位置在矩阵的第一行(输出)和剩余维度内的第四个线性索引(输出)。的非零值是 的输出。true(1,2,2)a = 1b = 41c

于 2010-07-01T16:32:27.327 回答
0

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

Matlab Central 有一些函数可以处理 n 维数组。

于 2010-07-01T16:33:30.253 回答