matlab find函数用法

来源:互联网 发布:淘宝白酒 编辑:程序博客网 时间:2024/06/10 22:20
find函数:用于查询非零元素的行和列标志

语法:
  1. ind = find(X)
  2. ind = find(X, k)
  3. ind = find(X, k, 'first')
  4. ind = find(X, k, 'last')
  5. [row,col] = find(X, ...)
  6. [row,col,v] = find(X, ...)
复制代码
ind = find(X)  查询非零元素的位置,如果X是一个行向量,则返回一个行向量,否则,返回一个列向量。如果X全是零元素或者是空数组,则返回一个空数组。


[row,col V] = find(X, ...)  查询满足一定条件的元素的行和列

X一般为逻辑表达式,如X>5等。

其中   row 返回满足条件的元素行的位置

       col 返回满足条件的元素的列的位置

       V   如果X是一个逻辑表达式,则返回一个逻辑数组,一般如果存在满足要求的元素,则返回一个单位列向量。如果不存在满足要求的元素,则返回一个空向量。


例题:
  1. >> A= magic(4)

  2. A =

  3.     16     2     3    13
  4.      5    11    10     8
  5.      9     7     6    12
  6.      4    14    15     1
复制代码
  1. >> [r,c,v]= find(A>12)

  2. r =

  3.      1
  4.      4
  5.      4
  6.      1


  7. c =

  8.      1
  9.      2
  10.      3
  11.      4


  12. v =

  13.      1
  14.      1
  15.      1
  16.      1
复制代码
例题:
  1. >> x = [3 0 0; 0 0 7; 0 0 1]

  2. x =

  3.      3     0     0
  4.      0     0     7
  5.      0     0     1

  6. >> [r,c,v]=find(x)

  7. r =

  8.      1
  9.      2
  10.      3


  11. c =

  12.      1
  13.      3
  14.      3


  15. v =

  16.      3
  17.      7
  18.      1
复制代码
  1. >> x = [3 2 0; -5 0 7; 0 0 1];
  2. >> [~,~,V]=find(x~=0)

  3. V =

  4.      1
  5.      1
  6.      1
  7.      1
  8.      1

  9. >> [~,~,V]=find(x)

  10. V =

  11.      3
  12.     -5
  13.      2
  14.      7
  15.      1
复制代码
比较两种调用方式返回的V的区别:

[r,c,v]= find(A>12):V返回一个单位列向量
[r,c,v]=find(x)    :V返回由满足要求的元素构成一个列向量


ind = find(X, k, 'first')
ind = find(X, k, 'last')

返回K个满足条件X的元素的行和列的位置,其中'first'表示从第一个开始算起,'last'表示从最后一个元素开始算起。


例题
  1. >> a=[4 0 3 1 0 9 2];
  2. >> find(a,3,'first')

  3. ans =

  4.      1     3     4

  5. >> find(a,3,'last')

  6. ans =

  7.      4     6     7
    复制代码
复制代码
复制代码
0 0