MATLAB 遍历矩阵

Ammar Ali 2023年1月30日 2021年7月4日
  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() 的更多信息。

Author: 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