MATLAB iterar a través de array
- Iterar a través de un array usando indexación lineal en MATLAB
-
Iterar a través de un array usando la función
arrayfun()
en MATLAB -
Iterar a través de un array usando la función
cellfun()
en MATLAB
Este tutorial discutirá cómo iterar a través de un array usando la función de indexación lineal, arrayfun()
y cellfun()
en MATLAB.
Iterar a través de un array usando indexación lineal en MATLAB
En un array, hay dos tipos de indexación; una es la indexación de filas y columnas en la que tenemos que dar el número de fila y columna para acceder a un elemento presente en el array, la segunda es la indexación lineal en la que podemos acceder a un elemento utilizando solo su índice lineal. Por ejemplo, vea el código a continuación.
m = [2 6 1; 17 19 18]
row_col_index = m(2,3)
linear_index = m(6)
Producción :
m =
2 6 1
17 19 18
row_col_index =
18
linear_index =
18
En el código anterior, accedemos al último elemento del array utilizando ambos tipos de indexación. En la indexación lineal, los elementos están presentes en el array a partir de la primera columna. Entonces, si cuenta desde la primera columna, el último elemento está presente en el sexto índice. Para iterar un array usando la indexación de filas y columnas, necesita dos bucles, pero en el caso de la indexación lineal, solo necesita un bucle. Por ejemplo, iteremos a través de un array usando indexación lineal. Vea el código a continuación.
m = [2 6 1; 17 19 18];
for i = 1:numel(m)
disp(m(i))
end
Producción :
2
17
6
19
1
18
En lo anterior, usamos la función numel()
para obtener el número total de elementos presentes en el array dada. Y usando un bucle e indexación lineal, mostramos cada elemento uno por uno en la ventana de comandos. Tenga en cuenta la secuencia mediante la cual se muestran los elementos en la ventana de comandos, y esta es la secuencia de la indexación lineal.
Iterar a través de un array usando la función arrayfun()
en MATLAB
Si tiene una función y desea aplicarla a cada elemento del array o matriz, una forma de hacerlo es iterar a través de cada elemento como se describe anteriormente y aplicar la función en cada elemento, pero hay otro método fácil en el que puede puede usar arrayfun()
para aplicar la función dada a cada elemento del array o matriz. Vea el código a continuación.
output = arrayfun(myFunction , array);
En el código anterior, el arrayfun()
aplica la función almacenada en myFunction
a cada elemento del array uno por uno y almacena el resultado en la variable output
. Por ejemplo, apliquemos una función definida a cada elemento de un array. Vea el código a continuación.
myMatrix = [0 90; 180 270]
myFunction = @(x) cos(x);
output = arrayfun(myFunction , myMatrix)
Producción :
myMatrix =
0 90
180 270
output =
1.0000 -0.4481
-0.5985 0.9844
Como puede ver en la salida, la función cos(x)
se aplica a cada elemento del array y el resultado se almacena en la variable output
. Consulte este enlace para obtener más información sobre arrayfun()
.
Iterar a través de un array usando la función cellfun()
en MATLAB
Si tiene una función y desea aplicarla a cada elemento de una celda determinada, una forma de hacerlo es iterar a través de cada elemento como se describe anteriormente y aplicar la función en cada elemento, pero hay otro método fácil en el que puede use el cellfun()
para aplicar la función dada a cada elemento de la celda. Vea el código a continuación.
output = cellfun(myFunction , myCell);
En el código anterior, el cellfun()
aplica la función almacenada en myFunction
a cada elemento de la celda uno por uno y almacena el resultado en la variable output
. Por ejemplo, apliquemos una función definida a cada elemento de una celda. Vea el código a continuación.
myCell = {0,90,180,270}
myFunction = @(x) sin(x);
output = cellfun(myFunction , myCell)
Producción :
myCell =
1×4 cell array
{[0]} {[90]} {[180]} {[270]}
output =
0 0.8940 -0.8012 -0.1760
Como puede ver en la salida, la función sin(x)
se aplica a cada elemento de la celda y el resultado se almacena en la variable output
. Consulte este enlace para obtener más información sobre cellfun()
.