在 Matlab 中查詢陣列中的值的索引
本教程將討論使用 MATLAB 中的 find()
函式在陣列中查詢值的索引。
在 MATLAB 中使用 find()
函式在陣列中查詢值的索引
在陣列中,元素被放置在從 1 開始的某些索引上,依此類推。要在給定陣列中查詢值的索引,我們可以使用 find()
函式。find()
函式用於查詢陣列或矩陣中元素的索引和值。要查詢元素的索引,我們需要在 find()
函式中定義一個條件。例如,如果我們想找到單個元素的索引,我們可以在 find()
函式中使用相等運算子。如果相同的元素出現在不同的索引處,find()
函式將返回該元素所在的所有索引。我們可以在這個函式中使用各種條件語句。例如,假設我們要查詢大於某個數字的所有元素的索引。在這種情況下,我們可以使用大於運算子,它將返回大於該特定數字的所有元素的索引。例如,讓我們找到給定陣列中存在的單個元素的索引。請參閱下面的程式碼。
mat = [2 3 1 2];
indices = find(mat==2)
輸出:
indices =
1 4
變數索引在上述輸出中包含兩個值,這意味著該元素出現在陣列或向量內的索引 1 和 4 處。現在讓我們考慮一下,我們想要找到大於 1 的元素的索引。我們需要更改 find()
函式內的條件。我們將使用大於號運算子,而不是使用等於運算子。請參閱下面的程式碼。
mat = [2 3 1 2];
indices = find(mat>1)
輸出:
indices =
1 2 4
在上面的輸出中,變數索引包含三個值,如你所見,給定陣列或向量中的三個元素大於一。如果我們有一個矩陣並想在向量中找到一個元素的位置,我們可以使用 find()
函式。我們知道矩陣內的元素放在特定的行和列上,為了找到特定的行和列,我們可以使用 find()
函式。如果元素存在於多個位置,則 find()
函式將為行和列返回多個值。請參閱下面的程式碼。
mat = [2 3 ; 2 1]
[row, col] = find(mat==2)
輸出:
mat =
2 3
2 1
row =
1
2
col =
1
1
在上面的輸出中,矩陣有兩行兩列,行列向量的第一個值是元素的第一個位置,即第 1 行和第 1 列,行和列的第二個值是元素的第一個位置元素的第二個位置,即第 2 行和第 1 列。如果要在給定矩陣中查詢元素 2 的索引,find()
函式將返回 1 和 2,因為在矩陣的情況下,這些值是按列放置的。這意味著值 2 位於索引 1 和 2,值 3 位於索引 3,值 1 位於索引 4。因此,如果不是兩個輸出變數,而是隻傳遞一個變數,find()
函式將返回索引列。例如,讓我們找到元素的索引並將它們替換為另一個值。請參閱下面的程式碼。
mat = [2 3 ; 2 1]
indices = find(mat==2)
mat(indices) = 5
輸出:
mat =
2 3
2 1
indices =
1
2
mat =
5 3
5 1
在上面的程式碼中,首先,我們找到元素 2 的索引,然後使用索引將值替換為 5,如你所見,矩陣值已更改。如果你出於某種原因不想使用 find()
函式,你始終可以使用 for 迴圈和 if 語句來建立你的函式。你需要遍歷陣列或矩陣的所有元素,並使用 if 語句檢查當前值是否與你想要的值匹配。如果它與你想要的值匹配,你可以儲存它的索引並繼續,直到你檢查了陣列中存在的所有元素。例如,讓我們使用 for 迴圈和 if 語句來查詢向量或陣列的索引。請參閱下面的程式碼。
mat = [2 3 2 1]
indices = [];
for i=1:length(mat)
if(mat(i) == 2)
indices = [indices i];
end
end
indices
輸出:
mat =
2 3 2 1
indices =
1 3
在上面的程式碼中,我們用一個空向量初始化了變數索引。當值二與陣列內的任何元素匹配時,我們將將該索引儲存在 indices
變數中。