Mostrando entradas con la etiqueta vector. Mostrar todas las entradas
Mostrando entradas con la etiqueta vector. Mostrar todas las entradas

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