在 Matlab 中使用 find()
函数
一维
对于 vector
类型,使用 find()
是显而易见的:查找对应条件的值
c=[0, 1, 3, 5, 7, 9];
find(c~=0)
将会得到输出
>>> 2 3 4 5 6
即对应非0数在一维数组中的下标
高维
但对于矩阵(或者多维数组,抑或称之为 tensor
),情况有所不同
d=[0,2,4,6,8,10]
reshape(d,1,1,2,3)
我们可以直观的看到此时 d 的情况
ans(:,:,1,1) =
0
ans(:,:,2,1) =
1
ans(:,:,1,2) =
3
ans(:,:,2,2) =
5
ans(:,:,1,3) =
7
ans(:,:,2,3) =
9
但如果我们使用
find(d~=0)
依然得到输出与一维相同
>>> 2 3 4 5 6
也就是说对于高维数组的 find()
,本质上还是降到一维后输出对应坐标,而不是分别输出各个维度的坐标,我们对于 reshape()
后 d 的操作,等价于先将其 reshape
回到一维,再查找 index。