MATLAB 中的 find() 函式

Ammar Ali 2022年5月11日
MATLAB 中的 find() 函式

本教程將討論 Matlab 中的 find() 函式。

MATLAB 中的 find() 函式

find() 函式在向量或矩陣中查詢非零元素的值和索引。例如,讓我們找出向量中非零元素的索引。請參閱下面的程式碼。

clc
MyVect = [1 2 5 6 0]
indices = find(MyVect)

輸出:

MyVect =

     1     2     5     6     0


indices =

     1     2     3     4

輸出中有五個元素但只有四個索引,因為有一個元素的值為零。要使用使用找到向量中存在的任何值的索引,我們必須在 find 函式中傳遞該值。例如,假設我們有一個包含數字的向量,我們想要找到某個值的索引。我們可以通過在 find 函式中輸入值和等號來實現,find 函式將返回該值的索引。

例如,讓我們定義一個向量並找到向量內特定值的索引。請參閱下面的程式碼。

clc
MyVect = [1 2 5 6 0]
index = find(MyVect==5)

輸出:

MyVect =

     1     2     5     6     0


index =

     3

在輸出中,值 5 出現在向量內的索引 3 處。我們還可以在 find 函式中定義條件。例如,如果我們要查詢大於 1 且小於 10 的值的索引。我們可以使用大於和小於運算子在 find 函式中定義它。例如,讓我們定義一個向量並找到大於 5 且小於 10 的值。請參閱下面的程式碼。

clc
MyVect = [1 2 5 6 8 12 16]
index = find(MyVect<10 & MyVect>5)

輸出:

MyVect =

     1     2     5     6     8    12    16


index =

     4     5

輸出中有兩個大於 5 和小於 10 的值,它們的索引儲存在變數 index 中。在矩陣內部,值放置在行和列上,我們可以使用 find() 函式來查詢元素的位置。例如,讓我們建立一個矩陣並使用 find 函式查詢特定值的行號和列號。請參閱下面的程式碼。

clc
MyVect = [1 2 5 ; 8 12 16]
[row,col] = find(MyVect==8)

輸出:

MyVect =

     1     2     5
     8    12    16


row =

     2


col =

     1

在輸出中,值 8 位於第二行第一列。如果我們只想找到矩陣內值的單個索引,我們也可以找到,但我們必須記住,矩陣內的元素是按列放置的。例如,在 2×2 矩陣中,前兩個索引位於第一列,其他兩個位於第二列。例如,讓我們使用 find() 函式在矩陣內查詢值的索引。請參閱下面的程式碼。

clc
MyVect = [1 2 5 ; 8 12 16]
index = find(MyVect==8)

輸出:

MyVect =

     1     2     5
     8    12    16


index =

     2

在輸出中,值 8 出現在矩陣內的索引 2 處。你還可以在 find 函式內為矩陣定義條件。例如,如果我們想查詢小於 10 的值的行數和列數,你也可以通過在 find() 函式中使用小於運算子定義條件來實現。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相關文章 - MATLAB Matrix