在 MATLAB 中從向量中刪除零

Ammar Ali 2022年7月18日
在 MATLAB 中從向量中刪除零

本教程將討論使用 MATLAB 中的 find() 函式從向量中刪除零值。

在 MATLAB 中從向量中刪除零

要從向量中刪除零,我們需要使用 find() 函式找到向量中存在的零的索引或位置,該函式將返回零的索引。然後我們可以使用空向量或空向量為它們分配空值。

預設情況下,find() 函式將返回非零元素的索引,但我們可以在 find() 函式中放置條件以返回零的索引。例如,讓我們定義一個包含一些零的向量並使用 find() 函式刪除它們。

請參閱下面的程式碼。

clc
clear

n = [1 0 2 0 3 0]
indices = find(n==0)
n(indices) = []

輸出:

n =

     1     0     2     0     3     0


indices =

     2     4     6


n =

     1     2     3

我們可以在上面的輸出中看到 find() 函式返回索引,它指示向量中存在的所有零值的位置,然後我們使用索引將空向量分配給零。

find() 函式中,我們定義了條件 n==0,這意味著該函式將一個一個地遍歷向量的值。如果向量值為零,它將返回其索引並移動到下一個值。

我們還可以定義其他條件,例如我們是否要刪除或查詢向量中存在的其他一些值。我們可以使用條件運算子,如小於、等於、大於、小於或等於、大於或等於和不等於在 find() 函式內定義條件。

如果我們不想刪除所有的零值,而只想像前兩個值一樣刪除幾個零值,我們可以使用 find() 函式的第二個引數,它用於設定輸出指標。

例如,讓我們重複上面的示例並刪除向量中的前兩個零。請參閱下面的程式碼。

clc
clear

n = [1 0 2 0 3 0]
indices = find(n==0,2)
n(indices) = []

輸出:

n =

     1     0     2     0     3     0


indices =

     2     4


n =

     1     2     3     0

我們可以在上面的輸出中看到前兩個零被刪除,第三個零仍然存在於給定向量中。預設情況下,find() 函式從向量的開頭開始搜尋元素。

儘管如此,我們也可以將其設定為從向量的最後一個元素開始搜尋過程,並使用 find() 函式的第三個引數移動到第一個元素,該引數用於設定方向。我們必須在 find() 函式的第三個引數中傳遞字串 last 來設定它的方向。

例如,讓我們重複上面的示例並刪除給定向量中存在的最後兩個零。請參閱下面的程式碼。

clc
clear

n = [1 0 2 0 3 0]
indices = find(n==0,2,'last')
n(indices) = []

輸出:

n =

     1     0     2     0     3     0


indices =

     4     6


n =

     1     0     2     3

我們可以在上面的程式碼中看到,最後兩個零已從向量中刪除,而第一個零仍然存在。檢視此連結以獲取有關 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 Vector