Está en la página 1de 10

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.

Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

SESIÓN 3 – CREACIÓN DE FUNCIONES EN MATLAB


Objetivos:
• ​Identificar las ventajas y casos de uso de las funciones de Matlab.
• ​Identificar las diferencias entre una función y un script en Matlab.
• ​Utilizar comandos básicos para la programación de funciones en Matlab.
• ​Crear sub-funciones básicas para crear funciones principales.
• ​Crear programas utilizando sentencias de control.

Orientación para el trabajo en el Laboratorio:

En esta sesión aprenderá los comandos básicos de programación en Matlab, muchos de estos comandos usted ya los
conoce para otros lenguajes por el curso de fundamentos de programación. A continuación, se describe el trabajo que
debe realizar con su compañero de laboratorio, podrá solicitar toda la asesoría necesaria al monitor.

Guía de Trabajo en el laboratorio:


El software Matlab provee un completo lenguaje de programación que permite utilizar los estamentos (funciones) básicos
de Matlab dentro de un archivo y ejecutarlo con un simple comando. Puedes escribir tu programa en un archivo de texto,
dando el nombre al archivo de ​archivo.m.​ ​La extensión .m convierte el archivo en un programa de Matlab.

Tipos de archivos de archivos programables


Los archivos programables pueden ser ​scripts ​que simplemente ejecuten una serie de estamentos de Matlab, o pueden
ser ​funciones ​que aceptan algunos argumentos de entrada y producen uno o más salidas.

Ojo a las siguientes diferencias!!!!.


MATLAB scripts

Son útiles para la automatización de una serie de pasos que se necesita llevar a cabo en repetidas ocasiones. ​
No aceptan argumentos de entrada, ni devuelven argumentos de salida.

Almacena variables en el ​workspace ​que comparte con otros ​scripts ​y la línea de comandos de Matlab.

MATLAB functions

Son útiles para ampliar y mejorar el uso de Matlab en aplicaciones específicas.

Pueden aceptar argumentos de entrada y retornar argumentos de salida.

Almacenan las variables en un espacio interno para cada función, es decir, no se pueden utilizar en otras funciones o
en la línea de comandos de Matlab.

Partes básicas de una Función en Matlab

function ​x=suma(a,b) ​Línea de definición de la función ​% Realiza la suma de dos


números reales ​Comentario explicación función ​% Esta función permite obtener la
suma x de dos

números reales a y b.​Comentario con texto de ayuda ​x=a+b; ​Cuerpo de la función ​% Fin de
la función suma ​Comentario fin de la función
1

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.


Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

Tanto la función como el script pueden tener las mismas partes, ​excepto por la ​Línea de definición de la función l​ a cual
aplica solamente para las funciones​. A continuación, se describen cada una de las partes en un mayor detalle.
Parte del archivo Descripción

Línea de definición de la Define el nombre de la función y sus argumentos de entrada y salida.


función (funciones
solamente)

Línea H1 Comentario explicación función: Una línea que resume el funcionamiento


del programa, se muestra cuando usas el comando ​help ​o ​lookfor p
​ ara la
función.

Texto de ayuda Una descripción detallada del programa, se muestra junto a la línea H1 cuando
​ ara la función
se utiliza el comando ​help p

Cuerpo de la función Código del programa que realiza los cálculos necesarios y asigna los valores a
los argumentos de salida.

Comentario Texto en el cuerpo del programa que explica los trabajos internos del programa

Línea de definición de la función

La línea de definición informa a Matlab que el archivo contiene una función. Esta línea contiene la palabra ​function​ ​que es una
palabra clave de Matlab y ​siempre debe estar en la primera línea del archivo​. Por ejemplo para la función ​fact ​se tiene:

Todas las funciones de Matlab tienen la línea de definición siguiendo el anterior esquema.

Function Name (Nombre de la función): ​El nombre de la función debe comenzar con una letra, puede contener
cualquier carácter alfanumérico y no debe exceder los 63 caracteres​. ​Los nombres de las funciones no pueden ser
iguales a otras funciones de Matlab o funciones ya creadas, así mismo no pueden tener el nombre de otras palabras
claves de Matlab. Si quieres conocer un listado de las palabras claves de Matlab usa el siguiente comando:
iskeyword

El archivo que contiene la función debe ser guardado con el mismo nombre de la función​, si el archivo no contiene el
mismo nombre de la función, Matlab ignora la línea de definición de la función y ejecuta las demás líneas de comandos.
Function Arguments (Argumentos de la función): ​Si la función tiene múltiples valores de salida, los argumentos de salida
deben estar acotados entre paréntesis cuadrados; si existen argumentos de entrada estos deben estar acotados entre
paréntesis, se deben usar comas para separar múltiples argumentos de entrada o de salida. ​Por ejemplo la siguiente función
recibe tres argumentos (theta, phi, rho) ​y ​devuelve al ​workspace o​ tros tres argumentos [x, y, z], ​las demás variables que
pueda usar en su interior para hacer los cálculos, no estarán disponibles en el ​workspace ​de matlab:
function [x, y, z] = sphere(theta, phi, rho)

Atención: A la función se le deben enviar las variables con las que trabajará en su
código!!! ​Si no hay argumentos de salida, se deja en blanco como sigue:
function printresults(x)
2

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.


Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

También se pueden usar paréntesis cuadrados en blanco cuando no hay argumentos de


salida: ​function [] = printresults(x)

Actividad 1
Debe crear y ejecutar una función que permita al usuario realizar la suma de dos números reales y/o complejos.
(Puede usar como guía el ejemplo de la página anterior)

1. L​ uego de ejecutar Matlab, crear una nueva función

2. Se abre la siguiente ventana, donde todo está listo para comenzar a digitar la función:

3. Introduzca la función suma.


4. Guardar el archivo en el directorio deseado

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.


Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

5. Actualizar el current directory de Matlab en el directorio donde se encuentra la función

6. Ejecutar la función mediante los siguientes comandos en el Comand Window

help suma
prueba1 = suma(5,7)
prueba2 = suma(5,3i)

En el mismo directorio donde creó el programa suma, debe crear un programa que permita realizar la ​resta ​entre dos
números, otro programa que permita realizar la ​multiplicación​, y un último programa que utilice la función de ​división​.
Cada programa debe ir en archivos separados. Los programas creados deben seguir el formato del programa suma, es
decir, deben incluir la ayuda completa para cada función. En el ​comand window d ​ e Matlab ejecute las funciones para
verificar su correcto funcionamiento. ​Recuerde ejecutarlas como se le indicó en el paso 5 anterior​, es decir siguiendo la
forma de ejecución de funciones (​no confundir con la forma de ejecución de scripts​)

Sentencias de Control en Matlab

Las estructuras de control ofrecidas por el lenguaje de programación de Matlab, permiten adicionar más niveles de
complejidad a programas simples. A continuación, se definen cada una de las sentencias o estructuras de control, se
explica su sintaxis y se presentan algunos ejemplos.

IF
if ​evalúa una expresión lógica y ejecuta un bloque de estamentos basándose en el resultado de la expresión lógica, es decir,
cuando la expresión lógica es verdadera (1), el programa ejecuta los estamentos y cuando la expresión lógica es falsa (0), el
programa pasa por alto los estamentos hasta llegar al ​end ​correspondiente al ​if. ​La estructura básica es la siguiente:

if ​expresión_lógica
estamentos
end

ELSE
else ​brinda la posibilidad de ejecutar estamentos cuando la expresión lógica evaluada por una función es falsa, es
decir, no cumple con la expresión lógica. La sintaxis para usar esta estructura de control se muestra a continuación:

if ​expresión_lógica
estamentos
else
estamentos
end

ELSEIF
En algunos programas es necesario tener más de una expresión lógica, es decir, los programas necesitan más de una
opción para evaluar, en esos casos es necesario utilizar la sentencia ​elseif​. ​La sintaxis para su uso se ilustra a
continuación: ​if ​expresión_lógica_1
estamentos
elseif ​expresión_lógica_2
estamentos

elseif ​expresión_lógica_n
estamentos
else
estamentos
4

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.


Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

end

Operadores Relacionales en Matlab


Matlab tiene disponible una serie de operadores relacionales y operadores lógicos para la programación de
diferentes funciones, a continuación, se presentan algunos de ellos.

Operadores Relacionales
Función Operación Símbolo

eq Igual (Equal) ==

ne No igual ( Not equal) ~=

lt Menor que (Less than) <

gt Mayor que (Greater than) >

le Menor o igual que (Less than or equal) <=

ge Mayor o igual que (Greater than or equal) >=

Más información: ​http://www.mathworks.com/help/techdoc/ref/relationaloperators.html

Operadores Lógicos
Función Operación Símbolo
relop Corto circuito lógico - ​AND &&

relop Corto circuito lógico - ​OR ||

and AND ​lógico &

or OR ​lógico |

not NO ​lógico ~

Más información:

http://www.mathworks.com/help/techdoc/matlab_prog/f0-40063.html#f0-38948​ ​Instrucciones de Entrada y

Salida:

Usualmente, se requiere que sea el usuario quien ingrese uno o varios valores de entrada para poder correr
el programa, para ello algunos de los comandos que se utilizan son:

​ ermite al usuario ingresar un valor en el ​comand window ​de Matlab y asignarlo a la variable
input: p
​ = input ( ​'ingrese su edad: ' ​)
x. x

menu: a​ bre una caja de texto tipo menú con diferentes opciones para el usuario, y guarda el número de la
opción seleccionada por el mismo; en caso de que se cierre la ventana, se guardara como 0. Estructura: ​s=menu
(‘título del menu’,’opcion1’,’opcion2’, …,’opción’)

Ejemplo:

s=menu (​'Seleccione un país'​, ​'Colombia'​, ​'Ecuador'​, ​'Perú'​)

Lo cual desplegará la ventana:

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.


Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.
inputdlg​: Abre una caja de texto, en la cual se da la opción al usuario de ingresar un valor. Sin embargo, la variable que
se crea es de tipo celda, por lo que hay que realizar la debida conversión a número:

k = inputdlg (​'Edad de los estudiantes'​, ​'Ingrese su edad'​)


Edad = str2num (k {1})

Por otro lado, para mostrar resultados o comentarios al usuario se utilizan los comandos:

​ uestra en el ​comand window ​la frase o argumento indicado.


disp: m

Ejemplo:
disp (​'El numero ingresado es primo'​) % en el comand window se muestra la
cadena disp (x) % en el comand window se muestra el valor de x

errordlg: ​Crea y muestra una caja de texto con el título Error Dialog, que contiene la cadena que se

desee. ​errordlg (​'El numero ingresado no es válido'​)

Ejemplo:
6
Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.
Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

En el anterior programa se utilizan tres expresiones lógicas, es importante resaltar que las expresiones se evalúan
en orden, es decir, si no se cumple con la primera expresión lógica se evalúa la segunda y así sucesivamente.

SWITCH, CASE Y OTHERWISE


switch, case ​y ​otherwise ​permiten crear estructuras similares a las creadas con la ayuda del ​elseif
pero mucho más simples y rápidas. La sintaxis es la siguiente:

switch ​expresion
case ​valor1
statements
case ​valor2
statements
...
otherwise
statements
end

Ejemplo:
clear all
clc
x=input('Ingrese un valor de 11 a 15: ');
x=floor(x);
switch x
case 11
disp('El valor ingresado es 11')
case 12
disp('El valor ingresado es 12')
case 13
disp('El valor ingresado es 13')
case 14
disp('El valor ingresado es 14')
case 15
disp('El valor ingresado es 15')
otherwise
disp('El valor es menor que 11 y/o mayor que 15')
end
Actividad 2
Con ayuda de los códigos de las señales cuadrada, sinusoidal y triangular realizados en la primera práctica, plantee la
creación de una función en Matlab que reciba como argumentos la amplitud de la señal, la frecuencia fundamental y un
tercer argumento asignado para el ciclo de dureza (señal cuadrada), ancho (señal triangular) o fase (señal sinusoidal). Se
7

Universidad Nacional de Colombia. Facultad de Minas. Departamento de Energía Eléctrica y Automática.


Señales y Sistemas Lineales. Semestre 2021-1. Profesor: Mario Alejandro Giraldo Vásquez, M.Sc.

requiere además un cuarto parámetro, por medio del cual los usuarios elegirán el tipo de señal, es decir: C, para señal
cuadrada, T, para triangular y S para sinusoidal.
Solucione este problema haciendo uso de los comandos ​switch, case ​y ​otherwise​.

Actividad 3
Haciendo uso de la función creada en la Actividad 2, cree un programa principal en el que utilice las instrucciones de
entrada presentadas anteriormente para el ingreso de los parámetros y del tipo de señal.
Llame la función en dicho programa inmediatamente después de que ingrese los parámetros, además tenga en cuenta que un
parámetro puede estar mal ingresado, como puede ser un ciclo de dureza mayor al 100%, o un valor para señal triangular
mayor a 1, para evitar eso cree alertas para todos los casos de error posibles utilizando las instrucciones ​if, elseif ​y
else​.

Actividad 4
​ ara ​Matlab y​ con la ayuda de los ejemplos incluya en el
Lea el ​help ​de las sentencias ​for ​y ​while​, p
programa la opción que le permita al usuario seleccionar desde un principio la cantidad de señales que desea
graficar, además la función deberá ir graficando señal por señal.
Por otro lado, para aplicar la sentencia ​while ​de la oportunidad al usuario de ingresar los parámetros las
veces necesarias hasta que estos estén correctos.

Los programas deben estar funcionales al momento de finalizar la sesión y deben garantizar que se
diferencia correctamente lo que hace cada una de las sentencias.

Referencias

Function Matlab: ​http://www.mathworks.com/help/techdoc/ref/function.html


Working with Functions in Files:
www.mathworks.com/help/techdoc/matlab_prog/f7-41453.html​ ​Scripts and Functions:
http://www.mathworks.com/help/techdoc/matlab_prog/f7-38085.html​ ​Control Flow:
http://www.mathworks.com/help/techdoc/learn_matlab/f4-1931.html#brbss8a​ ​Control
Structures in Matlab:
http://www.google.com/url?sa=t&rct=j&q=control%20structures%20in%20matlab%20299&source=web&cd=1&ved=0C
CkQFjAA&url=http%3A%2F%2Fmsenux.redwoods.edu%2FMath4Textbook%2FProgramming%2FControlStructures.pdf&e
i​ ​=G9JeT-qOO9KItweU4fj8Bg&usg=AFQjCNFBZRswUkrPeVDOUSgqhdg4igbfHg&cad=rja

¿Qué se debe entregar?


1. Documento con respuesta, resultados y discusión de todos los interrogantes planteados en la guía
SYSL_P3_NombreApellido1_ NombreApellido2.rar
2. El archivo comprimido debe incluir todos los archivos de la práctica.
3. Se debe enviar el archivo a spruedad@unal.edu.co.
8

También podría gustarte