天天看點

【Matlab】向量中元素的查找

    問題描述:對向量,想從中找到等于或接近某個數、或滿足一定範圍的元素們的下标?

     【等于某個數:find(a==8)】

     【求向量最大值 最小值 的上下标】

函數:根據某一标量名額求取向量中取得該名額最大值的元素,若存在多個則隻取名額最大中的第一個

    maxmltiply=find(colm4==max(colm4));

    if isa(maxmltiply,'numeric')

        mlplymax=maxmltiply(1);

    else

        mlplymax=maxmltiply;

    end

     【最接近某個數:排序】:先求絕對值,再排序

例如:查找向量A中最接近82的前後兩個元素及其下标。      
A= [189   188   187   184   178   169   155   137   118    99    80    64    51    39    30   10    12    15    20    30    44    63    86   112   136   157   171   180   185   189   190   190   191];
>>B=abs(A-82);      
[x,index]=sort(B);      
A1=[A(index(1)) A(index(2))]
A2=[index(1) index(2)]

A1是最接近的兩個數,A2是這兩個數的下标!
      

    【find】函數:用于傳回所需要元素的所在位置 (位置的判定:在矩陣中,第一列開始,自上而下,依次為1,2,3...,然後再從第二列,第三列依次往後數) 。

find(A)傳回矩陣A中非零元素所在位置

>> A = [1 0 4 -3 0 0 0 8 6];
>> X = find(A)
X =
     1     3     4     8     9
       find(A>5)傳回矩陣A中大于5的元素所在位置
>> find(A>5)
ans =
     8     9

      [i,j,v]=find(A)  傳回矩陣A中非零元素所在的行i,列j,和元素的值v(按所在位置先後順序輸出)
>> A=[3 2 0; -5 0 7; 0 0 1];
>> [i,j,v]=find(A)
i =
     1
     2
     1
     2
     3

j =
     1
     1
     2
     3
     3

v =
     3
    -5
     2
     7
     1

      find(A>m,4)傳回矩陣A中前四個數值大于m的元      

繼續閱讀