MATLAB 遍歷矩陣
本教程將討論如何使用 MATLAB 中的線性索引、arrayfun()
和 cellfun()
函式迭代矩陣。
在 MATLAB 中使用線性索引迭代矩陣
在一個矩陣中,有兩種索引;一個是行和列索引,我們必須在其中提供行號和列號才能訪問矩陣中存在的元素,第二個是線性索引,其中我們可以僅使用元素的線性索引來訪問元素。例如,請參考下面的程式碼。
m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)
輸出:
m =
2 6 1
17 19 18
row_col_index =
18
linear_index =
18
在上面的程式碼中,我們使用兩種索引訪問矩陣的最後一個元素。線上性索引中,元素從第一列開始出現在矩陣中。因此,如果從第一列開始計數,則最後一個元素出現在第六個索引處。為了使用行和列索引迭代矩陣,你需要兩個迴圈,但線上性索引的情況下,你只需要一個迴圈。例如,讓我們使用線性索引遍歷矩陣。請參考下面的程式碼。
m = [2 6 1; 17 19 18];
for i = 1:numel(m)
disp(m(i))
end
輸出:
2
17
6
19
1
18
在上面,我們使用 numel()
函式來獲取給定矩陣中存在的元素總數。並且使用迴圈和線性索引,我們在命令視窗上一個一個地顯示每個元素。請注意元素在命令視窗上的顯示順序,這就是線性索引的順序。
在 MATLAB 中使用 arrayfun()
函式遍歷矩陣
如果你有一個函式並希望將其應用於陣列或矩陣的每個元素,一種方法是如上所述迭代每個元素並將該函式應用於每個元素,但還有另一種簡單的方法可以使用 arrayfun()
將給定的函式應用於陣列或矩陣的每個元素。請參考下面的程式碼。
output = arrayfun(myFunction , array);
在上面的程式碼中,arrayfun()
將儲存在 myFunction
中的函式一一應用於陣列的每個元素,並將結果儲存在變數 output
中。例如,讓我們將定義的函式應用於矩陣的每個元素。請參考下面的程式碼。
myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)
輸出:
myMatrix =
0 90
180 270
output =
1.0000 -0.4481
-0.5985 0.9844
從輸出中可以看出,函式 cos(x)
應用於矩陣的每個元素,結果儲存在變數 output
中。檢視此連結以獲取有關 arrayfun()
的更多資訊。
在 MATLAB 中使用 cellfun()
函式遍歷矩陣
如果你有一個函式並希望將其應用於給定單元格的每個元素,一種方法是如上所述遍歷每個元素並將該函式應用於每個元素,但還有另一種簡單的方法,你可以使用 cellfun()
將給定的函式應用於單元格的每個元素。請參考下面的程式碼。
output = cellfun(myFunction , myCell);
在上面的程式碼中,cellfun()
將儲存在 myFunction
中的函式一一應用於單元格的每個元素,並將結果儲存在變數 output
中。例如,讓我們將定義的函式應用於單元格的每個元素。請參考下面的程式碼。
myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)
輸出:
myCell =
1×4 cell array
{[0]} {[90]} {[180]} {[270]}
output =
0 0.8940 -0.8012 -0.1760
從輸出中可以看出,函式 sin(x)
應用於單元格的每個元素,結果儲存在變數 output
中。檢視此連結以獲取有關 cellfun()
的更多資訊。