Está en la página 1de 27

INTRODUCCIÓN

 El lenguaje de programación MATLAB se construye


alrededor de funciones.

 Una función es una pieza de código de computación


que acepta un argumento de entrada del usuario y
produce una salida al programa.

 Las funciones le ayudan a programar eficientemente,


lo que le permite evitar reescribir el código de
computación para cálculos que se realizan con
frecuencia.
SINTAXIS
 Las funciones definidas por el usuario se crean en archivos de
tipo 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.

 Por ejemplo:

function resultado=ecuacion(x)

 es la primera línea de la función definida por el usuario llamada


ecuacion. Requiere un argumento de entrada, que el programa
llamará x, y calculará un argumento de salida, que el programa
llamará resultado. El nombre de función y los nombres de las
variables de entrada y salida son arbitrarios y los selecciona el
programador.
EJEMPLO
 function resultado=ecuacion(x)
 % Esta funcion calcula el valor de un polinomio
 % de tercer grado
 resultado=3*x.^3+5*x.^2-2*x+1;

 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. Todas las convenciones de
nomenclatura de MATLAB que se aprendieron para
nombrar variables se aplican para nombrar funciones
definidas por el usuario.
FUNCIONES CON ENTRADAS Y SALIDAS
MÚLTIPLES
 Una función puede tener mas de un argumento de
entrada y una sola salida como en el siguiente ejemplo

 function res=multiplicacion(x,y)
 % Esta función multiplica dos matrices
 % elemento a elemento y deben ser del mismo tamaño
 a=x.*y;
 res=a;
FUNCIONES CON ENTRADAS Y SALIDAS
MÚLTIPLES
 Las Funciones también pueden regresar mas de un
resultado con una o varios argumentos de entrada por
ejemplo

 function [dist,vel,acel]=movimiento(t)
 % Esta función calcula la distancia, velocidad y
 % aceleración de un automóvil para un valor de t
 acel=0.5*t;
 vel=acel.*t;
 dist=vel.*t;
FUNCIONES CON ENTRADAS Y SALIDAS
MÚLTIPLES
 Para utilizar esta función se llamara de la siguiente
manera

>>[distancia,velocidad,aceleracion]=movimiento(10)

 Si llamamos a la función movimiento sin especificar


las tres salidas, sólo se regresará el primer resultado

>>movimiento(10)
>>ans=
500
FUNCIONES SIN ENTRADA O SALIDA
 Aunque la mayoría de las funciones necesitan al
menos una entrada y regresan al menos un valor de
salida, en algunas situaciones no se requieren ni
entradas ni salidas. Por ejemplo, considere esta
función, que dibuja una estrella en coordenadas
polares:

 function[ ]=estrella()
 theta=pi/2:0.8*pi:4.8*pi;
 r=ones(1,6);
 polar(theta,r)
DETERMINACIÓN DEL NÚMERO DE
ARGUMENTOS DE ENTRADA Y SALIDA
 En alguna ocasión se necesita conocer el número de
argumentos de entrada o valores de salida asociados con
una función. MATLAB proporciona dos funciones internas
para este propósito.

 La función nargin determina el número de argumentos de


entrada en una función definida por el usuario ó en una
función interna. El nombre de la función se debe
especificar como una cadena, como, por ejemplo, en

>>nargin(‘sin’)
DETERMINACIÓN DEL NÚMERO DE
ARGUMENTOS DE ENTRADA Y SALIDA

 La función nargout es similar a nargin, pero


determina el número de salidas de una función:

>>nargout (‘sin’)
>>nargout(‘size’)

 El número de salidas se determina mediante cuántas


matrices se regresan, no cuántos valores hay en la
matriz.
VARIABLES LOCALES
 Las variables que se usan en los archivos-m de función se
conocen como variables locales. La única forma en que una
función puede comunicarse con el área de trabajo es a través de
los argumentos de entrada y la salida que regresa.

 Cualquier variable definida dentro de la función existe sólo para


uso de la función.

 function resultado=multmat(x,y)
 %esta funcion multiplica x y y
 % x y y deben ser del mismo tamaño
 a=x.*y;
 resultado=a;

 Las variables a, x, y y resultado son variables locales. Se pueden


usar para cálculos adicionales dentro de la función, pero no se
almacenan en el área de trabajo.
VARIABLES GLOBALES
 A diferencia de las variables locales, las variables globales están disponibles
para todas las partes de un programa de cómputo. En general, es mala idea
definir variables globales. Sin embargo, MATLAB protege al usuario del uso no
previsto de una variable global al requerir que se identifique tanto en el
ambiente de la ventana de comandos (o en un archivo-m script) como en la
función que la usará.

 function resultado=distancia(t)
 % Esta funcion calcula la distancia que un objeto en caida libre
 %recorre debido a la gravedad
 global G;
 resultado=1/2*G*t.^2;

 El comando global alerta a la función para que busque en el área de trabajo el


valor de G. G también se debe definir en la ventana de comandos (o archivo-m
script) como una variable global:

 global G;
 G=9.81;

 Este enfoque le permite cambiar el valor de G sin necesidad de redefinir la


función distancia o proporcionar el valor de G como un argumento de entrada a
la función.
ACCESO A CÓDIGO DE ARCHIVO-M
 Las funciones proporcionadas con MATLAB son de dos
tipos. Un tipo es interno y el código no es accesible para
que el usuario lo revise. El otro tipo consiste en archivos-m,
que se almacenan en cajas de herramientas proporcionadas
con el programa. Estos archivos-m (o los archivos-m que
uno escribe) se pueden ver con el comando type.

 Por ejemplo, la función sphere crea una representación


tridimensional de una esfera; por tanto,

>>type sphere
ó
>>type('sphere')

 regresa los contenidos del archivo sphere.m.


FUNCIONES ANÓNIMAS
 Las funciones anónimas se definen en la ventana de comandos o en un
archivo-m script y están disponibles, en gran medida como los nombres
de variables, sólo hasta que se limpia el área de trabajo. Para crear una
función anónima, considere el siguiente ejemplo:

ln=@(x) log(x)

 El símbolo @ alerta a MATLAB que ln es una función.


 Inmediatamente después del símbolo @, se menciona la entrada a la
función.
 Finalmente, se define la función.

 El nombre de función aparece en la ventana de variables, mencionada


como una function_handle (manipulador de función).

 Una vez que se limpia el área de trabajo, la función anónima ya no


existe más. Las funciones anónimas y los manipuladores de función
relacionados son útiles en funciones que requieren otras funciones
como entrada (funciones de función).
FUNCIONES DE FUNCIÓN
 Un ejemplo de una función de función interna
MATLAB es la gráfica de función, fplot. Esta función
requiere dos entradas: una función o un manipulador
de función, y un rango sobre el cual graficar. Se puede
demostrar el uso de fplot con el manipulador de
función ln, que se define como

>>ln=@(x) log(x)

 El manipulador de función se puede usar ahora como


entrada a la función fplot:

 fplot(ln,[0.1, 10])
ENTRADA DEFINIDA POR EL USUARIO
 La función input le permite al permitir al usuario ingresar
valores de una matriz desde el teclado mientras el programa.

 FUNCIONAMIENTO.- Despliega una cadena de texto en la


ventana de comando y luego espera que el usuario proporcione la
entrada solicitada. Por ejemplo,

 z=input('ingresa el valor de z');

 Se desplegara en la ventanas de comandos


 ingresa el valor de z
 Si el usuario ingresa un valor como
 10

 el programa asigna el valor 10 a la variable z. Si el comando input


no termina con un punto y coma, el valor ingresado se despliega
en la pantalla.
ENTRADA DEFINIDA POR EL USUARIO
 El mismo enfoque se puede usar para ingresar una matriz
uni o bidimensional. El usuario debe proporcionar los
paréntesis y delimitadores adecuados (comas y puntos y
coma). Por ejemplo:

 x=input('ingresa los valores de x entre corchetes');

 Los datos ingresados con input no necesitan ser


información numérica, tambien podemos ingresar
caracteres, ejemplos:

 nombre=input('introduce tu nombre entre apostrofes')


 nombres=input('introduce tu nombre','s')
SALIDA DEFINIDA POR EL USUARIO
FUNCIÓN disp
 La función despliegue (display, disp) se puede usar para
desplegar los contenidos de una matriz sin imprimir el
nombre de matriz. Por lo tanto,

 disp(x)
 Regresa
 12345

 El comando display también se puede usar para desplegar


una cadena (texto encerrado entre apóstrofes). Por
ejemplo,

 disp('HOLA')
 regresa
 HOLA
SALIDA DEFINIDA POR EL USUARIO
FUNCIÓN disp
 Cuando deseamos desplegar un mensaje y valores de un
arreglo tenemos:

 disp('los valores de x son:')


 disp(x)

 Sin embargo tanto la leyenda como los valores se


desplegaran en lineas separadas, para evitar esto podemos
convertir los valores numericos a carácter con la funcion
num2str

 disp(['los valores del arreglo x son:' num2str(x)])


 A=disp(['los valores del arreglo x son:' num2str(x)])
SALIDA CON FORMATO fprintf
 La función fprintf (función impresión formateada) le
da incluso mayor control sobre la salida de la que
tiene con la función disp. Además de desplegar valores
tanto texto como matriz, puede especificar el formato
a usar al desplegar los valores, y puede especificar
cuándo saltar a una nueva línea.

 La forma general del comando fprintf contiene dos


argumentos, uno cadena y otro una lista de matrices:

 fprintf(format-string,var,…)
SALIDA CON FORMATO fprintf
 Considere el siguiente ejemplo:

>>vacas=5;
>>fprintf('hay %f vacas en el pastizal',vacas)

 La cadena, que es el primer argumento dentro de la función


fprintf, contiene un marcador de posición (placeholder)
(%) donde se insertará el valor de la variable (en este caso,
vacas). El marcador de posición también contiene
información de formateo. En este ejemplo, %f le pide a
MATLAB desplegar el valor de vacas en un formato de
punto fijo por defecto. El formato por defecto despliega seis
lugares después del punto decimal:

 hay 5.000000 vacas en el pastizal


SALIDA CON FORMATO fprintf
 Además del formato de punto fijo por defecto, MATLAB le
permite especificar un formato exponencial, %e, o le
permite a MATLAB elegir el que sea más corto, punto fijo o
exponencial (%g). También le permite desplegar
información carácter (%c) o una cadena de caracteres (%s).
SALIDA CON FORMATO fprintf
 MATLAB no comienza automáticamente una nueva
línea después de ejecutar una función fprintf. Para
hacer que MATLAB inicie una nueva línea, necesitará
usar \n, llamado salto de línea (linefeed), al final de la
cadena. Por ejemplo, el código

>>vacas=5;
>>fprintf('hay %f vacas en el pastizal \n',vacas)
>>vacas=6;
>>fprintf('hay %f vacas en el pastizal \n',vacas)
SALIDA CON FORMATO fprintf
 Ademas de el salto de linea MATLAB tiene los
siguientes comandos de formato especial
LECTURA Y ESCRITURA DE DATOS DESDE
ARCHIVOS
 Import Wizard (asistente de importación)

 Si seleccionamos un archivo de datos del directorio actual y


hacemos doble clic en el nombre del archivo, se lanza el Import
Wizard (asistente de importación). El Import Wizard determina
qué tipo de datos hay en el archivo y sugiere formas de
representar los datos en MATLAB.

 El Import Wizard se puede usar para archivos ASCII simples y


para archivos de hoja de cálculo Excel. También puede lanzar el
Import Wizard desde la línea de comando, con la función
uiimport:

>>uiimport('nombredelarchivo.extension')
LECTURA Y ESCRITURA DE DATOS DESDE
ARCHIVOS
 La siguiente tabla es una lista de algunos de los tipos de datos
reconocidos por MATLAB. MATLAB no soporta todos los posibles
formatos de datos. Puede encontrar una lista completa al escribir en la
ventana de comandos.
>> doc fileformats
EXPORTACIÓN DE DATOS
 La forma más sencilla de encontrar la función adecuada para
escribir un archivo es usar el tutorial help para encontrar la
función correcta para leerla y luego seguir las ligas hacia la
función write.

 Por ejemplo, para leer un archivo de hoja de cálculo Excel (.xls),


se usaría xlsread:

 xlsread('nombredelarchivo.xls')

 para escribir un archivo Excel, se utilizaria la funcion xlswrite:

 xlswrite('nombredelarchivo.xlx',M)

 donde M es el arreglo que se quiere almacenar en la hoja de


cálculo Excel.

También podría gustarte