查找非零元素的索引和值
语法
k = find(X)
k = find(X,n)
k = find(X,n,direction)
[row,col] = find(___)
[row,col,v] = find(___)
说明
k = find(X)
返回一个包含数组 X
中每个非零元素的线性索引的向量。
1、如果 X 为向量,则 find 返回方向与 X 相同的向量。
2、如果 X 为多维数组,则 find 返回由结果的线性索引组成的列向量。
3、如果 X 包含非零元素或为空,则 find 返回一个空数组。
例子
在 3×3 矩阵中查找非零元素。
X = [1 0 2; 0 1 1; 0 0 4]
X =
1 0 2
0 1 1
0 0 4
k = find(X)
k =
1
5
7
8
9
k = find(X, n)
返回与 X 中的非零元素对应的前 n 个索引。
例子
在 4×4 幻方矩阵中查找前五个小于 10 的元素。
X = magic(4)
X =
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
k = find(X<10,5)
k =
2
3
4
5
7
查看 X 的对应元素。
X(k)
ans =
5
9
4
2
7
k = find(X, n, direction)
(其中 direction 为 'last')查找与 X 中的非零元素对应的最后 n 个索引。direction 的默认值为 'first',即查找与非零元素对应的前 n 个索引。
例子
创建一个由等于零的所有奇数索引元素组成的 6×6 幻方矩阵。
X = magic(6);
X(1:2:end) = 0
X =
0 0 0 0 0 0
3 32 7 21 23 25
0 0 0 0 0 0
8 28 33 17 10 15
0 0 0 0 0 0
4 36 29 13 18 11
查找后四个非零值。
k = find(X,4,'last')
k =
30
32
34
36
[row, col] = find(___)
使用前面语法中的任何输入参数返回数组 X 中每个非零元素的行和列下标。
例子
X = [18 3 1 11; 8 10 11 3; 9 14 6 1; 4 3 15 21]
X =
18 3 1 11
8 10 11 3
9 14 6 1
4 3 15 21
[row,col] = find(X>0 & X<10,3)
row =
2
3
4
col =
1
1
1
第一个实例是 X(2,1),即 8。
[row, col, v] = find(___)
还返回包含 X 的非零元素的向量 v。
例子
在 3×3 矩阵中查找非零元素。指定三个输出以返回行下标、列下标和元素值。
X = [3 2 0; -5 0 7; 0 0 1]
X =
3 2 0
-5 0 7
0 0 1
[row,col,v] = find(X)
row =
1
2
1
2
3
col =
1
1
2
3
3
v =
3
-5
2
7
1