Está en la página 1de 6

Fonaments dInformtica 1r curs dEnginyeria Industrial

Prctica 3: Funciones
Objetivos de la prctica En esta prctica estudiaremos cmo podemos aumentar la funcionalidad del lenguaje MATLAB para nuestras aplicaciones definiendo funciones. Antes de comenzar En primer lugar debis crear vuestra carpeta de trabajo con el explorador de Windows. A continuacin, iniciar MATLAB y cambiar el directorio a la carpeta de trabajo que habis creado: pwd indica cul es el directorio actual dir contenidos del directorio actual cd camino cambiar de directorio. M-files en MATLAB Los M-files pueden ser scripts, que simplemente ejecutan una serie de rdenes o instrucciones de MATLAB; o pueden ser funciones, que adems aceptan argumentos y producen resultados. Se crea un M-file utilizando un editor de textos. La versin 5.3 de MATLAB tiene su propio editor (medit). Utilizamos el editor para escribir el M-file, a continuacin lo grabamos y lo llamamos directamente desde la lnea de comandos de MATLAB como si fuera cualquier otra orden de las que ya conocemos.

Scripts vs. Funciones Scripts Funciones No aceptan argumentos de Aceptan argumentos de entrada y entrada ni producen resultados de producen resultados salida Trabajan sobre las variables en el Por defecto, las variables internas workspace son locales a la funcin tiles para automatizar una serie tiles para extender el lenguaje de pasos que se repiten muchas MATLAB para tus aplicaciones veces Los scripts trabajan sobre variables en el Workspace de la lnea de comandos o crean nuevas variables que son aadidas a dicho Workspace, de modo que todas esas variables pueden ser luego manipuladas desde la lnea de comandos. Funciones Veremos un ejemplo de funcin y sobre ella describiremos sus elementos bsicos. function pf = pvt (p) %Definicin de la funcin % PVT Precio venta publico %Lnea H1 % PVT (p) devuelve el precio con IVA, %Texto ayuda % de un producto, dado su precio (p) sin IVA. iva = 0.16; pf = p * (1+ iva);
%Cuerpo de la funcin

Definicin de la funcin: Esta lnea define el nombre de la funcin (pvt) y el nmero y orden de parmetros de entrada (en el ejemplo, un parmetro: p) y el nmero y orden de parmetros de salida o resultados (en el ejemplo, un parmetro: pf). function pf = pvt (p) parmetro de entrada nombre de la funcin parmetro de salida palabra reservada

Si la funcin tiene ms de un parmetro de entrada, estos se separan por comas y si tiene ms de un parmetro de salida se escribe la lista separada por comas y entre corchetes ([ ]). Este sera un ejemplo general: function [x, y] = mifuncion (a, b, c) Lnea H1: Se trata de una primera lnea comentada (empieza con %) tras la lnea de definicin de la funcin. MATLAB muestra esta primera ayuda cuando usamos el comando lookfor o pedimos ayuda sobre un directorio Texto de ayuda: MATLAB muestra este texto junto con la lnea H1 cuando solicitamos ayuda sobre una determinada funcin (help pvt). Se muestra el texto comentado hasta la primera lnea en blanco o la primera lnea ejecutable. El resto de comentarios tras este bloque se ignoran. Cuerpo de la funcin: esta parte contiene las sentencias que realizan los clculos y asignan valores a los parmetros de salida. La funcin opera sobre variables en su propio espacio de trabajo, separado del espacio de trabajo de la lnea de comandos. Nombre de la funcin Los nombres de las funciones deben empezar por una letra. Por lo dems, pueden ser cualquier combinacin de letras, nmeros o signos. El nombre del fichero (M-file) que contiene la funcin es el mismo nombre de la funcin seguido de la extensin .m. pvt.m Cuando llamamos a una funcin, MATLAB busca en el espacio de trabajo y despus en los directorios indicados en el pathwork (comando path). Si queremos conocer los M-files que tenemos en nuestro directorio de trabajo, escribiremos la orden what en la lnea de comandos. Si queremos ver el contenido del M-file pvt.m, entonces teclearemos en la lnea de comandos: >> type pvt Llamada a una funcin Podemos llamar a una funcin desde la lnea de comandos, como si fuera cualquier otra orden o funcin ya definida en MATLAB. Tambin podemos llamar a una funcin dentro de otra, como veremos en posteriores prcticas.

>> precio = 1000; >> preciofinal = pvt(precio) >> preciofinal = 1160 Observar que los parmetros de entrada y salida no tienen por qu tener el mismo nombre que en la definicin de la funcin. >> preciofinal = pvt(1400) >> preciofinal = 1624 Es importante escribir todos los parmetros de entrada entre parntesis y todos los parmetros de salida entre corchete, siempre en el orden correspondiente: >> [v, w] = mifuncion (a, b, c) Las variables de una funcin son locales, de modo que, aunque en el seno de la funcin se modifiquen los argumentos de entrada, el valor de dichas variables en el Workspace queda inalterado. Ejercicios 1. a. Escribir una funcin que calcule el permetro de un crculo dado su radio. b. Escribir una funcin que calcule el rea de un crculo dado su radio. c. Modifica la funcin anterior para que dado el crculo, calcule tanto el rea como la longitud de la circunferencia. 2. Escribir una funcin que calcule las dos races de una ecuacin de segundo grado: ax2+bx+c=0. a, b, y c son parmetros de entrada. 3. a. Escribir una funcin que convierta un nmero binario en hexadecimal. b. Escribir una funcin (base2base) que convierta una cadena que representa un nmero en cualquier base a cualquier otra base que se indique.

4. La siguiente funcin calcula la parbola y=x2 entre n y -n a intervalos de 0.1:


function y = x(n) % x Calcula la funcin y=x2 % La funcin se representa entre los valores -n y n

x=-n:0.1:n; y=x.^2; plot(x,y); grid;

a. Escribir dicha funcin y comprobar su funcionamiento. b. Modificar la funcin para que podamos calcular la funcin y=xp, donde p sea cualquier valor positivo. 5. La presin atmosfrica (p) vara en funcin de la altura (h) segn la siguiente expresin: p=1035*e-0.12h, donde la altura se mide en kilmetros y la presin en milibares. a. Escribir una funcin presion que calcule la presin para una altura dada (utilizar la funcin de MATLAB exp). b. Queremos ahora observar en una grfica cmo vara la presin en funcin de la altura. Para ello, definiremos a_vec como un vector de alturas que toma los valores enteros entre 0km y 30km, aplicaremos la funcin que hemos escrito para obtener los valores del vector de presiones p_vec y dibujaremos la grfica con la altura en las abscisas y la presin en las ordenadas: >> a_vec = 0:1:30; >> p_vec = presion (a_vec); >> plot (a_vec, p_vec);

6. Disear una funcin en MATLAB que calcule la superficie y volumen de un cilindro dados su radio (r) y altura (h) (V=r2h, S=2r2+2rh). 7. Sabiendo que la resistencia total de 3 resistencias conectadas en serie es: rT= r1 + r2 + r3 Y que si dichas resistencias se conectan en paralelo, entonces su resistencia total es: 1/rT = 1/r1 + 1/r2 + 1/r3

Escribir una funcin tal que dadas 3 resistencias calcule su resistencia total conectadas en paralelo y en serie. 8. Sabiendo que cada carcter se representa con 8 bits, escribir una funcin tal que dada una cadena de unos y ceros que representa una palabra en binario (la longitud de la cadena debe ser mltiplo de 8), devuelva la palabra (con caracteres) que representa. Utilizar la funcin length para conocer la longitud de la cadena y la funcin reshape para separar la cadena de unos y ceros en grupos de 8 bits.

También podría gustarte