MATLAB

find

2018-08-02  本文已影响2人  庵下桃花仙

查找非零元素的索引和值

语法
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
上一篇下一篇

猜你喜欢

热点阅读