MATLAB中的Find()函数
MATLAB中的find()函数用于查找非零元素或满足给定条件的元素的索引和值。关系表达式可与find结合使用,以找到满足给定条件的元素的索引。它返回一个包含线性索引的向量。
使用衬里索引,可以用一个下标来访问一个多维数组。MATLAB将数组视为一个单列向量,每一列都附加到前一列的底部。
示例:
例如,考虑以下3×3阵列A =
1 4 7
2 5 8
3 6 9
在这个数组中,所有元素都代表它们的线性索引,即我们可以用A(4)来引用A(1,2)。
语法:
下面是使用该功能的各种方法。
- k = find(X) :它返回所有非零元素的索引。
- k = find(X, n) :它返回X中非零元素的前n个索引
- k = find(X, n, direction) : 方向可以是 “第一 “或 “最后”。如果方向是第一,这个函数将返回与非零元素对应的前n个指数,如果方向是最后,这个函数将返回与非零元素对应的最后n个指数。
- [row, col] = find() :它用于获得所有非零元素的行和列的下标。
- [row, col, v] = find() : row和column将保存所有非零元素的下标,v是一个向量,将保存所有非零元素。
注意: 如果X是一个矢量,k将与X的方向相同;如果X是一个多维数组,那么k将是一个列向量,它将持有线性索引。
例子1: 下面的代码将返回一个一维数组中非零元素的索引。
% Defining array
A = [1 2 3 0]
% Getting indices of non zero elements
find(A)
输出:
例子2: 下面的代码将返回元素的前2个索引,其中的元素将大于3。
% Defining array
A = [1 2 0; 3 1 4; 5 6 7]
% Getting first 2 indices
find(A>3, 2)
输出:
例子3: 下面的代码将返回大于3的元素的最后2行和列索引。
% Defining array
A = [1 2 0; 3 1 4; 5 6 7]
% Getting row and column
[row, col] = find(A>3, 2, 'last')
输出:
所以,A(2,3)和A(3,3)是大于3的最后一个元素。我们得到的输出是(2, 3)和(3, 3),而不是(3,2)和(3, 3),因为MATLAB将数组视为单列向量,每一列都附加到前一列的底部。
例子4: 下面的代码将返回所有零元素的索引。这段代码使用了否定操作符(~)与查找函数结合使用。
% Defining array
A = [1 2 3 0]
% Getting indices of zero elements
find(~A)
输出: