sábado, 23 de marzo de 2019

Encontrar la posición del mínimo y máximo de un arreglo en MATLAB

Encontrar el mínimo y el máximo de los elementos de un arreglo en MATLAB es muy sencillo utilizando las funciones min y max.

Ejemplo:
arreglo=[4,2,-17,1,5,6,7,8,3,-2,16,28,2];
>> arreglo

arreglo =

     4     2   -17     1     5     6     7     8     3    -2    16    28     2

>> [a,b]=min(arreglo)

a =

   -17


b =

     3

>> [c,d]=max(arreglo)

c =

    28


d =

    12 Sin embargo, si se quiere realizar usando ciclos y comparativas lo podemos realizar de la siguiente manera:


clc%limpiar la ventana de comandos
clear%borrar las variables declaradas
close all%cerra las ventanas de figuras
%% ejemplo para encontrar minimo y maximo
%declaramos nuestro arreglo llamado "arreglo"
arreglo=[4,2,-17,1,5,6,7,8,3,-2,16,28,2];
%declaramos una variable llamada "num_max" para almacenar al número más
%grande del arreglo, al cual le asignamos el valor del arreglo en su
%posicion inicial, en el caso de matlab en la posición 1, si se trata de
%otro lenguaje de programación seria la posicion 0
num_max=arreglo(1);
pos_num_max=1;%declaramos la variable para almacenar la posicion, como
%a num_max le asignamos el valor de la posición 1 a pos_num_max le
%asignamos 1
%realizamos lo mismo para el numero más pequeño
num_min=arreglo(1);
pos_num_min=1;%declaramos la variable para almacenar la posicion, como
%a num_max le asignamos el valor de la posición 1 a pos_num_min le
%asignamos 1
%ahora creamos un ciclo for que vaya desde segunda posición del arreglo
%hasta el tamano total de elementos del arreglo, pues ya vimos la primer
%posicion
for i=2:1:length(arreglo)
    %aqui inician las comparaciones recorriendo cada uno de los ementos del arreglo
    %comparamos el valor del elemento del arreglo en su posicion i, si es
    %menor entonces asignamos ese eleento a nuestra variable num_min y así
    %sucecivamente hasta recorrer todo el arreglo tendiendo al final
    %en nuestra variable num_min el elemento con el menor valor
    if arreglo(i)<num_min
        num_min=arreglo(i);
        pos_num_min=i;%actualizamos la pocicion asignando el valor de i
    end
    %lo mismo hacemos para encontrar el elemento de mayor valor pero cambiamos
    %el signo de comparacion por lo cual al terminar todas las iteraciones
    %tendremos en num_max al elemento de mayor valor
    if arreglo(i)>num_max
        num_max=arreglo(i);
        pos_num_max=i;%actualizamos la pocicion asignando el valor de i
    end
end
 


Encontrar mínimo y máximo de una matriz en MATLAB

clc%limpiar la ventana de comandos
clear%borrar las variables declaradas
close all%cerra las ventanas de figuras
%% ejemplo para encontrar minimo y maximo en una matriz
%declaramos nuestro arreglo llamado "arreglo"
matriz=[4,2,-17,1;5,6,7,9;-2,16,28,2];
%declaramos una variable llamada "num_max" para almacenar al número más
%grande de la matriz, al cual le asignamos el valor de la matriz en su
%posicion inicial, en el caso de matlab en la posición (1,1), si se trata de
%otro lenguaje de programación seria la posicion (0,0)
num_max=matriz(1,1);
%realizamos lo mismo para el numero más pequeño
num_min=matriz(1,1);
%ahora creamos dos ciclos for anidados que recorran todas las posiciones de la matriz
%aunque ya vimos que hay en la posicion (1,1) no tendremos problemas
%creamos dos variables, m y n para saber las dimensiones de la matriz y
%poder configurar nuestros ciclos
[m,n]=size(matriz);%obtenemos la cantidad renglones y columnas de la matriz
for i=1:1:m%ciclo que recorre los renglones
        for j=1:1:n%ciclo que recorre las columnas
        %aqui inician las comparaciones recorriendo cada uno de los ementos de la matriz
        %comparamos el valor del elemento del arreglo en su posicion (i,j), si es
        %menor entonces asignamos ese elemento a nuestra variable num_min y así
        %sucesivamente hasta recorrer toda la matriz teniendo al final
        %en nuestra variable num_min el elemento con el menor valor
        if matriz(i,j)<num_min
            num_min=matriz(i,j);
        end
        %lo mismo hacemos para encontrar el elemento de mayor valor pero cambiamos
        %el signo de comparacion por lo cual al terminar todas las iteraciones
        %tendremos en num_max al elemento de mayor valor
        if matriz(i,j)>num_max
            num_max=matriz(i,j);
        end
    end
end