Está en la página 1de 38

Funciones definidas por el usuario

 Una función es una pieza de código de computación que acepta un


argumento de entrada del usuario y produce salida al programa.

 El lenguaje de programación MATLAB se construye alrededor de


funciones.

 Es posible que se quiera definir sus propias funciones, aquellas que


usted usa más comúnmente en su programación. Las funciones
definidas por el usuario se almacenan como archivos-m y MATLAB
puede acceder a ellas si están almacenadas en el directorio actual
Sintaxis
Consiste en un nombre, una entrada proporcionada por el usuario y
una salida calculada.

Por ejemplo, la función se llama cos(x): Toma la entrada del usuario


dentro de paréntesis (en este caso, x), y calcula un resultado

El usuario no necesita ver los cálculos realizados, sino que sólo acepta
la respuesta. Las funciones definidas por el usuario funcionan de la
misma forma:

mi_funcion(x)
Las funciones definidas por el usuario se crean en archivos-m.
Cada una debe comenzar con una línea de definición de función que
contenga

 la palabra function,
 una variable que defina la salida de función,
 un nombre de función, y
 una variable que se use para el argumento de entrada.

function salida=mi_funcion(x)
Por ejemplo:
function resultado=suma(x)
Ejemplo:
La siguiente función, que deberemos guardar en un fichero
llamado cuadrado.m, calcular el cuadrado de un número:

function c = cuadrado(x)
c = x * x;

Cuando queramos calcular el cuadrado de un número, no


tenemos más que escribir

cuadrado(11)
 La misma nomenclatura de MATLAB para nombrar variables se
aplican para nombrar funciones definidas por el usuario.

 El nombre de la función debe comenzar con una letra.


 Puede formarse con letras, números y el guión bajo.
 No se pueden usar nombres reservados.
 Permite cualquier longitud, aunque los nombres largos no son
una buena práctica en programación.
Ejemplo:
Calcula el valor de un polinomio particular:

 Antes de poder usar esta función, se debe guardar en el directorio


actual. El nombre de archivo debe ser el mismo que el nombre de
función con la finalidad de que MATLAB lo encuentre.
 Una vez guardado el archivo-m, la función está disponible para usar
desde la ventana de comando, desde un archivo-m script o desde
otra función. Considere la función poly recién creada. Si en la
ventana de comando se escribe
EJERCICIO: Conversión entre
grados y radianes

 Los ingenieros usualmente miden los ángulos en grados,


aunque la mayoría de los programas de cómputo y muchas
calculadoras requieren que la entrada a las funciones
trigonométricas esté en radianes.

 Escriba y pruebe una función GR que cambia grados a


radianes y otra función RG que cambia radianes a grados. Sus
funciones deben tener capacidad de aceptar entrada escalar y
matricial.
Funciones con entradas y salidas
múltiples
 Tal como las funciones MATLAB predefinidas pueden requerir
múltiples entradas y pueden regresar múltiples salidas, se pueden
escribir funciones más complicadas definidas por el usuario.
 De manera similar, se podría escribir una función definida por el
usuario para multiplicar dos vectores:
 También puede crear funciones que regresen más de una variable
de salida.
 Calcular la aceleración, velocidad y la distancia en función del
tiempo de un móvil.
 Si llama la función sin especificar las tres salidas, sólo se regresará la
primera salida:

 Se debe especificar todas las salidas


Ejercicio: (1 entrada, 1 salida)

 Calcula el promedio de los elementos de un vector, utilizando


estructuras de repetición.
Ejercicio: (1 sola salida, varias entradas)
 Sumar dos vectores de la misma dimensión usando estructuras de
repetición
(varias salidas, varias entradas)

Sumar dos vectores y mostrar los vectores ingresados y


el vector resultante
EJERCICIO Resolver el siguiente ejercicio utilizando
funciones definidas por el usuario para ingresar datos,
realizar procedimientos e imprimir resultados.

 Cierta empresa requiere controlar la existencia de n productos,


los cuales se almacenan en un vector A, mientras que los
pedidos de los clientes de estos productos se almacenan en un
vector B. Se requiere generar un tercer vector C con base en los
anteriores que represente lo que se requiere comprar para
mantener el stock de inventario, para esto se considera lo
siguiente: si los valores correspondientes de los vectores A y B
son iguales se almacena este mismo valor, si el valor de B es
mayor que el de A se almacena el doble de la diferencia entre B y
A, si se da el caso de que A es mayor que B, se almacena B, que
indica lo que se requiere comprar para mantener el stock de
inventario.
EJERCICIO Resolver el siguiente ejercicio
utilizando funciones definidas por el usuario
para ingresar datos, realizar procedimientos e
imprimir resultados.

Realizar un programa lea dos vectores de n elementos y


clasifique los elementos de dichos vectores de tal
manera que en un vector queden solo elementos pares
y en otro solo impares.
EJERCICIO Resolver el siguiente
ejercicio utilizando funciones definidas
por el usuario para ingresar datos,
realizar procedimientos e imprimir
resultados.
 Suponga que se tiene la calificación de n materias de m
alumnos que obtu­vieron durante el semestre. Esta
información se puede almacenar de tal forma que los
filas representen las materias, mientras que las
columnas representen cada alumnos.
 Obtenga la mayor nota por materia
 Determine los promedios de cada alumno
EJERCICIO Resolver el siguiente ejercicio utilizando
funciones definidas por el usuario para ingresar datos,
realizar procedimientos e imprimir resultados.
Una empresa de transportes cuenta con N choferes, de los cuales se conoce
los kilómetros que conducen durante cada día de la semana, esa información
se guarda en una matriz de N x 6. Se requiere un programa que capture esa
información tal y como se muestra en la figura

Determine:

El chofer con el mayor número de kilómetros en la semana.


El chofer que recorrió mas kilómetros durante los 6 días de la semana
Creación de interfaces de usuario con
MATLAB
 MATLAB dispone de una utilidad para el desarrollo interactivo de
interfaces de usuario (GUI) llamado GUIDE
 Para ello se escribe el comando guide en la ventana del workspace.
 Una GUI debe ser consistente y fácilmente entendida por el usuario
 • Proporciona al usuario con la habilidad de usar un programa sin
tener que preocuparse sobre los comandos para ejecutar un
programa
 •Los componentes habituales de una GUI son
– Pushbuttons
– Sliders
– List boxes
– Menus, ..etc
Paleta de componentes

Archivo -> Preferencias->Mostrar nombres en los componentes de la Paleta


 Push Button
Este comando se utiliza para ejecutar o lanzar una orden cuando se
pulsa

 Grupos de botones (Button Group)


Los botones de selección permiten al usuario seleccionar entre las
diferentes opciones que se presentan en la aplicación. En el caso en el
que se encuentren englobadas en un grupo de botones, uno de ellos
siempre permanecerá activado.

 Cajas de selección (pop up menú)


Este tipo de control permite seleccionar una opción de entre varias
mostradas en una lista. Eligiendo una de ellas, se ejecuta la opción
que se haya seleccionado. La ventaja de este control es el diseño
compacto con el que se muestra por pantalla, pudiéndose colocar en
espacios reducidos al poderse desplegar automáticamente en el
momento en que se pulsa, quedando minimizado cuando sobre él no
se está pulsando.
 Cajas de texto (Static Text)
Son controles en los que no se permiten realizar operaciones con el
ratón. Están diseñadas para representar en pantalla la información
especificada por el programador, sin que se puedan modificar por el
usuario.

 Cajas de texto editables (Edit Text)


Las cajas de texto editables se utilizan para poder introducir y
modificar cadenas de caracteres. La llamada a la opción de ejecución
Callback será efectiva cuando se pulse el botón asociado a este
control. La flexibilidad a la hora de poder manipular datos es factible
gracias a este control,. Se ha utilizado este comando para introducir
números.
 Paneles (Panel)
Un panel no es un control propiamente dicho. Su función es la de
englobar una serie de componentes para una mejor estructuración por
pantalla.

 Ventanas (Axes)
Una ventana es un objeto que permite la representación de gráficas o
imágenes
 Todos los controles comentados se denominan objetos. Estos
presentan unas propiedades que son editables por el programador.
En función de las necesidades, del estado en que se encuentre el
programa y de la estructuración del mismo, podrán modificarse
durante el desarrollo de la aplicación. Muchas de estas propiedades
son comunes a la mayoría de los controles, aunque cada uno de
ellos puede presentar propiedades particulares.

 La herramienta que presenta MATLAB para modificar las


propiedades del objeto deseado es el inspector de propiedades. En
él se representan todas las variables modificables del objeto.
Modificación de propiedades con
Property Inspector
• Doble clic en el componente
Propiedades
 Tag: es la más importante ya que identifica cada control en el código,
por tanto debemos de asignar un nombre significativo a dicho control.
 String: que es el título del botón
 FontSize: cambia el tamaño de la fuente de texto
 FontWeight: cambia el estilo de la fuente
 Background Color : Cambia el color del fondo del control
 CallBack: La propiedad más importante del control, ya que le dice al
control que hacer cuando este se active.
 Enable: Activa o desactiva un control
 El editor permite construir interfaces arrastrando y soltando
componentes en el área de diseño de la GUI.

• Todas las GUIs creadas con guide empiezan con una


función inicial (callback) que se invoca cuando se invoca la
interfaz.

• La operación automática de guardado (save) genera un


fichero .m y un fichero .fig

• El fichero .fig contiene el diseño del GUI en binario y el


fichero .m contiene el código que controla el GUI
Editor de código
Al hacer click derecho en el elemento ubicado en el área de diseño,
una de las opciones más importantes es View Callbacks, la cual, al
ejecutarla, abre el archivo .m asociado a nuestro diseño y nos
posiciona en la parte del programa que corresponde a la subrutina que
se ejecutará cuando se realice una determinada acción sobre el
elemento que estamos editando.

Por ejemplo, al ejecutar View Callbacks>>Callbacks en el Push Button,


nos ubicaremos en la parte del programa:
SENTENCIAS GET Y SET
 La asignación u obtención de valores de los componentes se realiza
mediante las sentencias get y set.

 El valor de una propiedad de un control determinado se obtiene


mediante la función get:
get(handles.nombre_control,'propiedad')

 La función set cambia el valor de una propiedad de un determinado


control:

set(handles.nombre_control,'propiedad',nuevo_val
or).
 Todos los valores de las propiedades de los elementos (color, valor,
posición, string…) y los valores de las variables transitorias del
programa se almacenan en una estructura, los cuales son accedidos
mediante un único y mismo identificador para todos éstos.

 handles, es nuestro identificador a los datos de la aplicación. :

handles.output = hObject;
EJERCICIO: Calculadora que
sume dos números
 En la parte inferior de la hoja de propiedades del botón, cambiamos
su propiedad Tag, por btnSuma. Esta propiedad es importante ya
que es el nombre con el que se conoce al control en el código.
Cambiamos la propiedad String por Suma, que es el título del botón
y cambiamos el tamaño de la fuente de texto, FontSize, a 14, y el
estilo FontWeight a bold (negrita) para que se lea bien.
 Hacemos doble-clic sobre el primer control de texto, cambiamos su
propiedad Tag por num_1, su propiedad String por 20 y el tamaño
de la fuente de texto, FontSize a 14.
 Hacemos cambios en la hoja de propiedades del segundo control de
texto, cambiamos su propiedad Tag por num_2, su propiedad String
por 15 y establecemos su propiedad FontSize en 14.
 Hacemos doble-clic sobre el tercer control de texto, cambiamos su
propiedad Tag por resultado, su propiedad String por 35, el tamaño
de la fuente de texto, FontSize a 14, y el estilo FontWeight a bold
(negrita).
 Obtenemos el texto que se ha introducido en los controles
de edición (Edit Text) num_1 y num_2, mediante la función
get.
 Convertimos el texto en un número mediante la función
str2double
 Sumamos los dos números y lo guardamos el resultado en
la variable res.
 Convertimos el resultado a texto mediante la función
num2str
 Ponemos mediante set el texto en el control de texto estático
(Static Text) resultado.
 Seleccionamos con el ratón el control Button Group y lo
situamos a la izquierda del panel, establecemos su
propiedad Tag en grupo y su propiedad Title en
Operaciones, establecemos en 12 el tamaño de la letra, en
la propiedad FontSize
 Situamos cuatro botones de radio (Radio Button) en el
interior del grupo de botones de radio (Button Group).
Seleccionamos los cuatro botones y los alineados
verticamente con la herramienta Align Objects.

También podría gustarte