Bootstrap

matlab中find函数

find函数:查询非零元素的位置和值

用法1:B = find(A),A是一个矩阵,查询非零元素的位置

           如果A是一个行向量,则返回一个行向量,否则,返回一个列向量。

           如果A全是零元素或者空数组,则返回一个空数组。

>> A = [0 1 2 0 4 5]

A =
     0     1     2     0     4     5

>> B = find(A)

B =
     2     3     5     6

>> A = [0 1 2; 0 4 5]

A =
     0     1     2
     0     4     5

>> B = find(A)

B =
     3
     4
     5
     6
(位置的判定:在矩阵中,第一列开始,自上而下,依次为1,2,3...,然后再从第二列,第三列依次往后数)


用法2:B = find(A>2),找到A中比2大的元素的位置

>> A = [0 1 2; 0 4 5]

A =
     0     1     2
     0     4     5

>> B = find(A>2)

B =
     4
     6

用法3:B = find(A,2),找到A中最先出现的2个不为零的数的位置

>> A = [0 1 2; 0 4 5; 6 0 8]

A =
     0     1     2
     0     4     5
     6     0     8

>> B = find(A, 2)

B =
     3
     4

用法4:B = find(A,2, 'first'),找到A中最先出现的2个不为零的数的位置

            B = find(A,2, 'last'),找到A中最后出现的2个不为零的数的位置

>> A = [0 1 2; 0 4 5; 6 0 8]

A =
     0     1     2
     0     4     5
     6     0     8

>> B = find(A, 2, 'first')

B =
     3
     4

>> C = find(A,2,'last')

C =
     8
     9

用法5:[r, c] = find(A),找到A中非零元素所在的行和列,行存储在矩阵r中,列存储在矩阵c中

>> A = [0 1 2; 0 4 5; 6 0 8]

A =
     0     1     2
     0     4     5
     6     0     8

>> [r, c] = find(A)

r =
     3
     1
     2
     1
     2
     3

c =
     1
     2
     2
     3
     3
     3

用法6:[r, c, v] = find(A),找到A中非零元素所在的行和列,行存储在矩阵r中,列存储在矩阵c中,值存储在矩阵v中(需要知道值的用此用法,其他用法只能确定位置)

>> A = [0 1 2; 0 4 5; 6 0 8]

A =
     0     1     2
     0     4     5
     6     0     8

>> [r, c, v] = find(A)

r =
     3
     1
     2
     1
     2
     3

c =
     1
     2
     2
     3
     3
     3

v =
     6
     1
     4
     2
     5
     8




;