MATLAB-Iteration durch Matrix
- Durch eine Matrix iterieren mit linearer Indizierung in MATLAB
-
Durch eine Matrix iterieren mit der Funktion
arrayfun()
in MATLAB -
Durch eine Matrix iterieren mit der Funktion
cellfun()
in MATLAB
![MATLAB-Iteration durch Matrix](/img/Matlab/feature-image---iterate-through-matrix-matlab.webp)
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()
.