Pract 3

También podría gustarte

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