MATLAB-Iteration durch Matrix

Ammar Ali 4 Juli 2021
  1. Durch eine Matrix iterieren mit linearer Indizierung in MATLAB
  2. Durch eine Matrix iterieren mit der Funktion arrayfun() in MATLAB
  3. Durch eine Matrix iterieren mit der Funktion cellfun() in MATLAB
MATLAB-Iteration durch Matrix

In diesem Tutorial wird erläutert, wie eine Matrix mit der linearen Indizierung, den Funktionen arrayfun() und cellfun() in MATLAB durchlaufen wird.

Durch eine Matrix iterieren mit linearer Indizierung in MATLAB

In einer Matrix gibt es zwei Arten der Indizierung; zum einen die Zeilen- und Spaltenindizierung, bei der wir die Zeilen- und Spaltennummer angeben müssen, um auf ein in der Matrix vorhandenes Element zuzugreifen, zum anderen die lineare Indizierung, bei der wir auf ein Element nur über seinen linearen Index zugreifen können. Sehen Sie sich zum Beispiel den folgenden Code an.

m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)

Ausgabe:

m =

     2     6     1
    17    19    18


row_col_index =

    18


linear_index =

    18

Im obigen Code greifen wir mit beiden Arten der Indizierung auf das letzte Element der Matrix zu. Bei der linearen Indizierung sind die Elemente ab der ersten Spalte in der Matrix vorhanden. Wenn Sie also ab der ersten Spalte zählen, steht das letzte Element am sechsten Index. Um eine Matrix mit Zeilen- und Spaltenindizierung zu iterieren, benötigen Sie zwei Schleifen, bei linearer Indizierung jedoch nur eine Schleife. Lassen Sie uns beispielsweise eine Matrix mit linearer Indizierung durchlaufen. Siehe den Code unten.

m = [2 6 1; 17 19 18];
for i = 1:numel(m)
    disp(m(i))
end

Ausgabe:

     2

    17

     6

    19

     1

    18

Oben haben wir die Funktion numel() verwendet, um die Gesamtzahl der in der gegebenen Matrix vorhandenen Elemente zu ermitteln. Und mit einer Schleife und linearer Indizierung haben wir jedes Element einzeln im Befehlsfenster angezeigt. Beachten Sie die Reihenfolge, in der die Elemente im Befehlsfenster angezeigt werden, und dies ist die Reihenfolge der linearen Indizierung.

Durch eine Matrix iterieren mit der Funktion arrayfun() in MATLAB

Wenn Sie eine Funktion haben und sie auf jedes Element des Arrays oder der Matrix anwenden möchten, besteht eine Möglichkeit darin, wie oben beschrieben durch jedes Element zu iterieren und die Funktion auf jedes Element anzuwenden, aber es gibt eine andere einfache Methode, bei der Sie kann mit arrayfun() die gegebene Funktion auf jedes Element des Arrays oder der Matrix anwenden. Siehe den Code unten.

output = arrayfun(myFunction , array);

Im obigen Code hat arrayfun() die in myFunction hinterlegte Funktion nacheinander auf jedes Element des Arrays angewendet und das Ergebnis in der Variablen output gespeichert. Wenden wir beispielsweise auf jedes Element einer Matrix eine definierte Funktion an. Siehe den Code unten.

myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)

Ausgabe:

myMatrix =

     0    90
   180   270


output =

    1.0000   -0.4481
   -0.5985    0.9844

Wie Sie an der Ausgabe sehen können, wird auf jedes Element der Matrix die Funktion cos(x) angewendet und das Ergebnis in der Variablen output gespeichert. Unter diesem Link finden Sie weitere Informationen zu arrayfun().

Durch eine Matrix iterieren mit der Funktion cellfun() in MATLAB

Wenn Sie eine Funktion haben und sie auf jedes Element einer bestimmten Zelle anwenden möchten, besteht eine Möglichkeit darin, jedes Element wie oben beschrieben zu durchlaufen und die Funktion auf jedes Element anzuwenden Verwenden Sie cellfun(), um die gegebene Funktion auf jedes Element der Zelle anzuwenden. Siehe den Code unten.

output = cellfun(myFunction , myCell);

Im obigen Code hat cellfun() die in myFunction gespeicherte Funktion nacheinander auf jedes Element der Zelle angewendet und das Ergebnis in der Variablen output gespeichert. Lassen Sie uns beispielsweise auf jedes Element einer Zelle eine definierte Funktion anwenden. Siehe den Code unten.

myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)

Ausgabe:

myCell =

  1×4 cell array

    {[0]}    {[90]}    {[180]}    {[270]}


output =

         0    0.8940   -0.8012   -0.1760

Wie Sie an der Ausgabe sehen können, wird auf jedes Element der Zelle die Funktion sin(x) angewendet und das Ergebnis in der Variablen output gespeichert. Unter diesem Link finden Sie weitere Informationen zu cellfun().

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

Verwandter Artikel - MATLAB Matrix