美文网首页
Octave之find函数

Octave之find函数

作者: geekpy | 来源:发表于2018-01-28 18:16 被阅读841次

    find是Octave的一个内建的函数,用于返回指定条件的element的索引。如果不指定条件,默认返回非空的elements的索引。

    参数

    find可以接收1个参数,两个参数或者三个参数,其含义如下:

    接收一个参数

    接收一个参数时,参数为所要搜索的vector或者矩阵

    octave:112> test = eye(3)
    test =
    
    Diagonal Matrix
    
       1   0   0
       0   1   0
       0   0   1
    
    octave:113> find(test)
    ans =
    
       1
       5
       9
    

    接收两个参数

    接收两个参数,第二个参数为要获取的索引的数量,比如只想获取前两个索引,那么就设为2.

    octave:114> find(test, 2)
    ans =
    
       1
       5
    

    接收三个参数

    接收三个参数时,第三个参数为"first" 或者"last",表明是从头开始截取索引,还是从尾开始截取

    octave:115> find(test, 2, 'last')
    ans =
    
       5
       9
    

    返回值

    find的返回值也分三种情况:

    返回一个vector

    如果只返回一个vector,那么会将参数指定的matrix首先按列排序,组成一个大的vector,如下方图1所示
    示例:

    octave:100> c = eye(2)
    c =
    
    Diagonal Matrix
    
       1   0
       0   1
    
    octave:101> c(2, 1)
    ans = 0
    octave:102> c(2, 1) = 1
    c =
    
       1   0
       1   1
    
    octave:103> find(c)
    ans =
    
       1
       2
       4
    

    从这个例子可以看出find的时候会按照先遍历第一列,再遍历第二列,如此往复,最终返回一个总的索引。
    上边的例子其索引如下图所示:


    图1: indices

    返回两个vector

    返回两个vector时,会返回参数matrix的实际行,列索引:

    octave:116> z = eye(3)
    z =
    
    Diagonal Matrix
    
       1   0   0
       0   1   0
       0   0   1
    
    octave:117> [i, j] = find(z)
    i =
    
       1
       2
       3
    
    j =
    
       1
       2
       3
    

    返回三个vector

    除返回行列索引外,还会返回其对应的元素值

    octave:118> test = [2, 3, 0; 5, 7, 0; 0, 0, 9]
    test =
    
       2   3   0
       5   7   0
       0   0   9
    
    octave:119> [i, j, v] = find(test)
    i =
    
       1
       2
       1
       2
       3
    
    j =
    
       1
       1
       2
       2
       3
    
    v =
    
       2
       5
       3
       7
       9
    

    指定条件

    我们还可以返回指定条件的元素,而不仅仅是非空元素

    octave:118> test = [2, 3, 0; 5, 7, 0; 0, 0, 9]
    test =
    
       2   3   0
       5   7   0
       0   0   9
    
    octave:120> [i, j] = find(test==5)
    i =  2
    j =  1
    

    相关文章

      网友评论

          本文标题:Octave之find函数

          本文链接:https://www.haomeiwen.com/subject/hndzaxtx.html