matlab基本函數find


一起來學演化計算-matlab基本函數find

覺得有用的話,歡迎一起討論相互學習~

我的微博我的github我的B站

  • 找到非零元素的索引和值

語法

  • k = find(X)
    • k = find(X)返回一個向量,其中包含數組X中每個非零元素的 線性索引
    • 如果X是一個向量,那么find返回一個與X方向相同的向量
    • 如果X是一個多維數組,那么find返回結果的線性索引的列向量
    • 如果X不包含非零元素或為空,則find返回一個空數組
  • k = find(X,n) k = find(X,n)返回與X中的非零元素對應的前n個索引
  • k = find(X,n,direction) k = find(X,n,direction),其中direction為'last',查找X中的最后n個非零元素
  • [row,col] = find( ___ ) 使用前面語法中的任何輸入參數返回數組X中每個非零元素的行和列下標
  • [row,col,v] = find( ___ ) 返回向量v,其中包含X的非零元素

find:找出向量或矩陣中非零元素的位置標識

  • 在許多情況下,都需要對矩陣中符合某一特定條件的元素的位置進行定位,如將某一矩陣中為零的元素設為1等。如果這個矩陣的元素非常多,手工修改非常麻煩,靈活運用find函數和各種邏輯及關系運算可以是實現絕大多數條件的元素定位。find函數的基本用法有k=find(A),[i,j]=find(A),[i,j,v]=find(A),這是個很有用的邏輯函數,在對數組元素進行查找,替換和修改變化等操作中占有非常重要的地位。

k=find(A)

  • 此函數返回由矩陣A的所有非零元素的位置標識組成的向量。如果沒有非零元素會返回空值。
    二維數組先尋找列再尋找行
    在這里插入圖片描述
    三維數組尋找值
    在這里插入圖片描述

[i,j]=find(A)

  • 此函數返回矩陣A的非零元素的行和列的表示,其中i代表行標而j代表列標。此函數經常用在稀疏矩陣中。在多維矩陣中通常將第一維用i表示,將其余各維作為第二維,用j表示。
    在這里插入圖片描述

[i,j,v]=find(A)

  • 此函數返回矩陣A的非零元素的行和列的標識,其中i代表行標而j代表列表,同時,將相應的非零元素的值放入列向量v中,即i和j的值與[i,j]=find(A)取值相同,只是增加了非零元素的值這一項
    在這里插入圖片描述

利用find()函數實現部分矩陣的替換

在這里插入圖片描述

示例

找到矩陣中的零元素和非零元素

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
% 順序是從上往下從左至右進行排列的
k2 = find(~X)
k2 =

     2
     3
     4
     6

找到滿足特定條件的元素

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(k)
ans =

     5
     9
     4
     2
     7

元素等於特定數值

  • 等於特定的數值使用"==" 整型數值的情況
x = 1:2:20
x =

     1     3     5     7     9    11    13    15    17    19

k = find(x==13)
k =

     7
  • 要查找非整數值,請使用基於數據的容差值。否則,由於浮點舍入錯誤,結果有時是一個空矩陣
y = 0:0.1:1
y =

  Columns 1 through 7

         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000

  Columns 8 through 11

    0.7000    0.8000    0.9000    1.0000

k = find(y==0.3)
k =

   Empty matrix: 1-by-0

k = find(abs(y-0.3) < 0.001)
k =

     4

尋找最后幾個非零項目

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

尋找滿足多約束

  • 找出4×4矩陣中大於0小於10的前三個元素。指定兩個輸出,將行和列下標返回給元素
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

非零元素的下標和值

  • 求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

輸入參數

輸出參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM