Hola controleros y controleras en el dia de hoy vamos a aprender a usar instrucciones Condicionales, Comparadores y Bucles dentro del software de MATLAB.
Esta entrada hace parte de nuestro curso gratuito de MATLAB para INICIANTES
Comparadores en Matlab
Las comparaciones son verdaderas o falsas, y la mayoría de los programas de cómputo (incluido MATLAB) usa el número 1 para verdadero (true) y el 0 para falso (false).
Normalmente estas comparaciones son usadas dentro de un condicional para ejecutar o no una parte determinada del código.
Para poder realizar comparaciones, existen dos tipos de operadores dentro de Matlab, los operadores relacionales y los operadores lógicos.
Los operadores relacionales como su nombre lo indica, son operaciones que me relacionan dos variables, donde se pregunta si una variable es menor que, mayor que, menor igual que, mayor igual que, igual o diferente que otra.
Algunos ejemplos ocupando los operadores lógicos de matlab como el AND, OR, NOT o XOR podemos verlos a continuación, donde como se darán cuenta necesitaremos valernos de las preposiciones para poder obtener el resultado lógico de (verdadero o Falso) en las famosas tablas de verdad.
Nombrar Variables y Crear Vectores en MATLAB
Funciones Internas de MATLAB
Control por asignación de polos (RST Incremental)
Condicionales en Matlab
Uno de los condicionales más comunes es el empleado por el enunciado if, el cual presenta la siguiente estructura:
if CONDICIÓN %Linea de Código 1 %Linea de Código 2 %Linea de Código 3 end
Si la comparación (una expresión lógica) es verdadera, se ejecutan los enunciados entre el enunciado if y el enunciado end. Si la comparación es falsa, el programa salta inmediatamente al enunciado que sigue a end.
Sin embargo podemos complementar la condición if adicionando el comando else.
if/else
La cláusula else le permite ejecutar un conjunto de enunciados si la comparación es verdadera y un conjunto diferente de enunciados si la comparación es falsa.
if CONDICIÓN % CUANDO LA CONDICIÓN ES VERDADERA %Linea de Código 1 %Linea de Código 2 %Linea de Código 3 else % CUANDO LA CONDICIÓN ES FALSA %Linea de código 1 %linea de código 2 end
Cuando se anidan varios niveles de enunciados if/else, puede ser difícil determinar cuáles expresiones lógicas deben ser verdaderas (o falsas) con la finalidad de ejecutar cada conjunto de enunciados. La función elseifle permite comprobar criterios múltiples mientras se mantiene el código fácil de leer.
La estructura switch/case se usa con frecuencia cuando existe una serie de opciones de ruta de programación para una variable dada, dependiendo de su valor. Switch/case es similar a if/else/elseif. De hecho, cualquier cosa que pueda hacer con switch/case se podría hacer con if/else/elseif. Sin embargo, el código es un poco más fácil de leer con switch/case
Bucles en MATLAB
Los bucles (loops) se usan cuando necesita repetir un conjunto de instrucciones muchas veces.
MATLAB soporta dos tipos diferentes de bucles: el bucle for y el bucle while.
Los bucles for son la opción más sencilla cuando usted sabe cuántas veces necesita repetir el bucle.
Los bucles while son las opciones más sencillas cuando necesita mantener la repetición de las instrucciones hasta que se satisface un criterio.
Bucles For en Matlab
La estructura del bucle for es simple. La primera línea identifica el bucle y define un índice, que es un número que cambia en cada paso a través del bucle. Después de la línea de identificación viene el grupo de comandos que se quiere ejecutar. Finalmente, la terminación del bucle se identifica mediante el comando end.
for i=1:10 %Secuencia 1 %Secuencia 2 %Secuencia 3 end
Una de las formas más comunes de usar un bucle fores para definir una nueva matriz.
Bucles While en Matlab
Los bucles while son similares a los bucles for. La gran diferencia es la forma en que MATLAB decide cuántas veces repetir el bucle. Los bucles whilecontinúan hasta que se satisface algún criterio.
while CONDICIÓN %Secuencia 1 %Secuencia 2 %Secuencia 3 end
La mayoría de los bucles fortambién se pueden codificar como bucles while.
Break y continue
El comando break se puede usar para terminar un bucle prematuramente (mientras que la comparación en la primera línea todavía es verdadera). Un enunciado break provocará la terminación de la parte más pequeña que encierre un bucle while o for.
El comando continue es similar a break; sin embargo, en lugar de terminar el bucle, el programa sólo salta al paso siguiente.
Cómo mejorar la eficiencia de los bucles
En general, usar un bucle for (o un bucle while) es menos eficiente en MATLAB que usar operaciones de arreglos. Se puede probar esta afirmación al cronometrar la multiplicación de los elementos en un arreglo largo. Primero se crea una matriz A que contiene 40,000 unos. El comando ones crea una matriz nxn de unos
El resultado es una matriz 200×200 de unos. Ahora se pueden comparar los resultados de multiplicar cada elemento por pi, usando primero una multiplicación de arreglo y luego un bucle for.
El código de ejemplo lo puedes descargar a continuación:
Códigos en Matlab
Puedes descargar los códigos vistos en esta entrada para que aprendas a usar correctamente los Condicionales comparaciones y bucles en MATLAB.
if/elseif/else
edad=input('Digite la edad de la persona: '); %Condicional elseif if edad<16 disp('Todavía no puede conducir') elseif edad<18 disp('Puede obtener un permiso para conducir') elseif edad<70 disp('Puede obtener la licencia estandar') else disp('Requiere de una licencia especial') end
switch/case
n = input('Digite un número: '); switch n case -1 disp('UNO Negativo') case 0 disp('Cero') case 1 disp('UNO Positivo') otherwise disp('Otro Valor') end
while/for
clear all clc k=0; while k<3 k=k+1; if k==2 continue; end a(k)=k^2 end
Prueba de Rendimiento
clear all clc A=ones(200); %Tiempo usando FOR disp('Tiempo usando FOR:') tic for i=1:length(A(:)) B(i)=pi*A(i); end toc %Tiempo usando multiplicación matricial disp('Tiempo usando multiplicación matricial:') tic B=pi*A; toc
Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:
👉 Invitar a Sergio a un Café ☕️
Que esten muy bien, nos vemos en la siguiente entrada.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.