MATLAB 遍歷矩陣

Ammar Ali 2023年1月30日
  1. 在 MATLAB 中使用線性索引迭代矩陣
  2. 在 MATLAB 中使用 arrayfun() 函式遍歷矩陣
  3. 在 MATLAB 中使用 cellfun() 函式遍歷矩陣
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() 的更多資訊。

作者: 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