Sie sind auf Seite 1von 17

Prctica 1 - Introduccin al entorno de trabajo: MatLab

1 Introduccin
MatLab constituye actualmente un estndar dentro de las herramientas de simulacin
de sistemas, tanto por su gran capacidad y sencillez de manejo como por su enorme
versatilidad y difusin.
En esta primera sesin el objetivo es aprender los fundamentos bsicos de este
programa y los comandos que definen el lenguaje de simulacin. Al final de la sesin
debemos estar en condiciones rutinas y funciones en Matlab.
Los ficheros necesarios, as como, la gua explicativa de las prcticas en formato
pdf se encuentran disponibles en la siguiente pgina de Internet del laboratorio.
2 Estudio previo
Dadas las caractersticas especiales de esta primera sesin no existe estudio previo.
Sin embargo, todo el mundo deber disponer de un diskette de 3 que previamente
habr sido formateado y en el que se habr creado un directorio "prctica1". En este
directorio debers, ms adelante, colocar los ficheros necesarios para la ejecucin de
esta primera prctica.
3 Trabajo de laboratorio
3.1 Arranque del ordenador
1. Pon en marcha el ordenador. Si ya est funcionando haga "clic" con el ratn
sobre el botn "Inicio" de la barra de tareas de "Windows 95". Seleccione
"Reiniciar el equipo". Haga "clic" en "S".
2. Cuando el equipo encienda te pedir un nombre de usuario (login) y una palabra
clave (password). Introduce los login y password de la cuenta de correo que
posees como alumno de la ESI.
3. Una vez autentificado por el servidor tendrs acceso a un men en el que podrs
seleccionar el sistema operativo deseado. Aunque parezca irnico debes elegir
Windows, el cual, a su vez, te pedir otra identificacin (login-password).
4. Para cada sala hay creado un usuario cuya contrasea sala??? coincide con el
nombre de usuario. Lo que aparece como interrogaciones depende de la sala en la
que ests, as en la sala 321 debes utilizar sala321, por tanto, en este caso
deberas introducir lo siguiente
Login: sala321
Password: sala321
Es imprescindible no saltarse esta identificacin si luego quieres poder acceder a
la pgina web del laboratorio.
5. Abre el navegador y conctate a la pgina Internet del laboratorio:
http://viento.us.es/~sergio/ltx
Nota: si el smbolo ~ no aparece en el teclado, ste se puede conseguir pulsando
la tecla ALT y, sin soltarla, tecleando 126 en el teclado numrico (NumLock debe
estar activo).
6. Los ficheros necesarios, as como, la gua explicativa de las prcticas en formato
pdf se encuentran disponibles en esta pgina de web. Coge toda la informacin
relativa a la prctica 1 y bjatela al directorio prctica1 que has creado en tu
diskette. Son tres ficheros: uno es la memoria de la prctica en formato pdf, el
segundo fichero pdf tambin te puede ayudar a aprender MatLab (aparece como
referencia complementaria de la prctica) y, por ltimo, un fichero zip.
7. Antes de seguir, descomprime en el directorio prctica1 de tu diskette el
fichero que tiene extensin zip.
3.2 Inicio y cierre de una sesin MatLab
El proceso a seguir para iniciar una sesin MatLab va a ser siempre el mismo:
1. Haga "doble clic" con el ratn sobre el icono "MatLab". Ya ha iniciado una
sesin en MatLab. Sin embargo, todava queda una cosa por hacer. Para poder
acceder a su diskette de trabajo, deber teclear "cd a:\prctica1" y pulsar "Enter".
Ahora los ficheros de este directorio de su diskette son visibles desde MatLab.
2. Compruebe que se encuentra en el directorio adecuado mediante el comando
pwd. Teclee "dir" para ver la lista de ficheros que existen en el directorio en el
que est.
3. Vamos a ejecutar ahora uno de los ficheros. Teclee "punto11" (y pulse Enter -
este comentario se obviar a partir de este momento). El sistema responder con
el siguiente mensaje: "Bienvenido a MatLab". Esa es la nica labor de este
fichero.
4. Esta es la forma de iniciar una sesin MatLab y de acceder a los ficheros que van
a constituir nuestro entorno de trabajo a lo largo de las sesiones de prcticas.
5. Para finalizar la sesin bastar con teclear "exit" o "quit" (son indiferentes) desde
el prompt de MatLab (el smbolo >> que aparece al principio de la lnea de
comandos). Hgalo ahora. El programa se cerrar y volver a la pantalla principal
de Windows.
3.3 Operaciones bsicas en MatLab
La forma ms sencilla de usar MatLab es hacerlo funcionar como si se tratara de una
gran calculadora. Las operaciones disponibles son:
+ suma
- resta
* producto
/ divisin
^ exponenciacin
Por ejemplo, tecleando:
3+2
MatLab responder con el resultado de la operacin:
ans =
5
18*76
ans =
1368
Ahora pruebe a evaluar las siguientes expresiones y consigne los resultados en la hoja
de respuestas:
1. 18631
2. 124312-5478
3. 17456^0.4
4. 711/134
El resultado de las operaciones puede asignarse a variables. Las variables pueden
tener cualquier nombre, siempre que ste cumpla con las reglas habituales (empezar
por una letra e ir seguido de letras o nmeros). Por ejemplo, tecleando:
x=12/2
MatLab calcula la operacin indicada y asigna el resultado a x
x =
6
Si nicamente desea que se asigne el valor, pero no quiere ver el resultado por
pantalla, basta con aadir un ; despus de la orden. As, si tecleamos:
z=36-7;
el resultado se asignar a z, pero no se mostrar por pantalla. Para inspeccionar
posteriormente el valor de z bastar con hacer
z
a lo que MatLab responder con:
z =
29
Otras funciones habituales de calculadora que se encuentran incluidas en MatLab son
las funciones trigonomtricas: sin,cos,tan,acos,asin,atan al igual que los logaritmos:
log,log10, la funcin exponencial: exp y las funciones hiperblicas: sinh,cosh, etc.
Para usar cualquiera de estas funciones se debe colocar el argumento entre
parntesis. Por ejemplo:
y=log(18*z+x);
asignar a la variable y el resultado de la operacin anterior.
Tecleando
y
obtendremos como respuesta:
y =
6.2691
Realice las siguientes operaciones y consigne sus resultados en la hoja de respuestas.
1. v=

,
`

.
|

2
12
1 . 8 170
120 e
ln 10
2. x=

,
`

.
| +
23
18 v
sin
3. z=
x
v 114
3.4 Vectores
MatLab puede operar con vectores. Para introducir un vector basta con teclear:
b=[7 3 4 9 2 11];
donde los espacios actan como separadores entre elementos. Podan haberse
utilizado comas para separarlos, con el mismo resultado.
b=[7,3,4,9,2,11];
Si ahora pedimos el valor de b, MatLab responder con:
b =
7 3 4 9 2 11
Se pueden sumar o restar vectores siempre que tengan el mismo nmero de
elementos. Por ejemplo:
a=b;
b+a
da como resultado
ans =
14 6 8 18 4 22
Los vectores anteriores son vectores fila. Tambin pueden introducirse vectores
columna. Para ello basta con separar los elementos por ; en lugar de ,. Por ejemplo:
c=[6;4;8;-12;4]
c =
6
4
8
-12
4
Tambin puede obtenerse un vector columna a partir de un vector fila (o viceversa)
mediante la transposicin. El operador ' sirve para trasponer un vector cambiando las
filas por columnas. Ejemplos:
a'
ans =
7
3
4
9
2
11
d=c';
d
d =
6 4 8 -12 4
El operador * multiplica dos vectores siguiendo las leyes del producto de matrices.
Es decir, los vectores se interpretan como una matriz de una sola fila (vector fila) o
una sola columna (vector columna). Por tanto, para poder multiplicar dos vectores,
estos deben tener las dimensiones apropiadas. Por ejemplo:
c*a
ans =
42 18 24 54 12 66
28 12 16 36 8 44
56 24 32 72 16 88
-84 -36 -48 -108 -24 -132
28 12 16 36 8 44
d*c
ans =
276
Obtenga ahora la matriz que resulta al multiplicar los dos vectores siguientes. Asigne
el resultado a la variable M y consgnelo en la hoja de respuestas.
[ ] 7 2 5 4 8
4
2
7
3

]
]
]
]
]
]

MatLab almacena los vectores comenzando en el ndice 1. Se puede


acceder a los elementos de un vector individualmente. Por ejemplo:
c(4)
devolver como resultado el cuarto elemento del vector c (no importa si
c es un vector fila o columna)
ans =
-12
mientras que escribiendo
d(3)=18
lo que hace MatLab es asignar al tercer elemento de d el valor 18
d =
6 4 18 -12 4
Ahora modifique el vector a de forma que su segundo elemento tome el valor 7.
Aparte de las funciones matemticas habituales, como
sin(c)
que operan sobre cada elemento del vector
ans =
-0.2794
-0.7568
0.9894
0.5366
-0.7568
existen funciones especiales para manejar vectores. Por ejemplo, "mean" devuelve la
media de un vector, "max" y "min" los elementos mximo/mnimo respectivamente,
"norm" calcula la norma de un vector, etc.
Calcule ahora el valor medio del vector b y asgnelo a la variable mb. Consigne el
resultado en la hoja de respuestas.
Cuando se desean realizar operaciones con vectores elemento a elemento se usa un .
despus del operador para indicarlo. As, por ejemplo, la divisin de dos vectores no
es una operacin definida. Sin embargo, puede calcularse la divisin elemento a
elemento. Ejemplo:
a./b
ans =
1.0000 2.3333 1.0000 1.0000 1.0000 1.0000
Siguiendo el mismo esquema existen otros operadores. Si necesita ayuda en algn
momento teclee "help .".
Ahora, introduzca los vectores f y g siguientes y calcule su producto elemento a
elemento. Consigne el resultado en la hoja de respuestas.
f=[3,8,-2,15,3] g=[4,0,4,-12,2]
3.5 Matrices
MatLab interpreta todas las variables como matrices. Introducir una matriz es
semejante a introducir un vector. Los elementos de una misma fila se separan
mediante "," y las filas se separan con ";". Por ejemplo al teclear:
A=[2,-1,4;6,9,-4;0,2,1]
obtenemos la matriz A
A =
2 -1 4
6 9 -4
0 2 1
Se puede acceder a los elementos de una matriz a travs de su ndice. Por ejemplo,
A(2,1) es el elemento de la segunda fila y primera columna de A
A(2,1)
ans =
6
Se puede extraer una fila o una columna de una matriz usando el operador :. Por
ejemplo, tecleando
A(3,:)
se obtiene la tercera fila de la matriz A
ans =
0 2 1
Ahora asigne a la variable "k" el valor de la segunda columna de A.
MatLab incorpora diversas funciones para utilizar con matrices, adems de las
habituales (*,+,-). Por ejemplo, "inv" calcula la inversa de una matriz, por lo que
resulta til para resolver sistemas de ecuaciones.
Otro operador interesante es el operador ' que calcula la matriz traspuesta. Por
ejemplo:
A'
ans =
2 6 0
-1 9 2
4 -4 1
Defina ahora la matriz siguiente y asgnela a la variable B:
]
]
]
]
]
]
]
]

7 0 0 3 10
1 2 1 9 9
0 1 6 8 0
0 4 14 3 1
4 6 5 8 2
Calcule tambin su inversa y asgnela a C. Consigne el resultado en la hoja de
respuestas.
El resto de operaciones explicadas para vectores son tambin vlidas para matrices.
Pueden mezclarse matrices con vectores, siempre que las dimensiones de ambos se
correspondan de forma adecuada. Por ejemplo:
e=[1;-1;3]
e =
1
-1
3
inv(A)*e
ans =
-1.0000
1.0000
1.0000
Usando lo que ha aprendido sobre matrices y vectores, resuelva el
siguiente sistema de ecuaciones:
3u+4v-6x+5z=-8;
2u-12v+z=10;
-u+v-14x+y+z=20;
10v+10x-y-3z=6;
2u-3v+y=-5;
asignando el resultado al vector "solucion". Consigne el resultado en la hoja de
respuestas.
3.6 Grficas
MatLab le permite presentar sus resultados en forma grfica, en una gran diversidad
de formatos. Dado un vector fila o columna puede utilizarse la funcin "plot" para
mostrar el grfico del vector en pantalla. Ejemplo:
x=[1,3,-2,9,4,-1,5,7,8,1,-3];
plot(x)
Estas rdenes generan un vector x y muestran su grfica por pantalla.
Como ha podido observar, MatLab siempre muestra los datos contenidos en el vector
haciendo que el primer elemento del mismo aparezca en el punto 1 de abcisas. A la
hora de representar una funcin o una secuencia, debemos especificarle,
adicionalmente, de donde a donde va el eje de abcisas. Por ejemplo, para representar
la secuencia siguiente
s(n) | n
2 | -1
-4 | 0
-2 | 1
6 | 2
-1 | 3
1 | 4
deberamos seguir los siguientes pasos:
s=[2,-4,-2,6,-1,1];
plot(-1:4,s);
donde -1:4 indican el inicio y el final de la secuencia s.
Tambin puede aadirse una rejilla a la grfica si fuera necesario. Para ello debe
usarse la funcin "grid". Simplemente tecleando:
grid
MatLab superpone a la grfica una rejilla. Comprubelo.
Otras posibilidades que ofrece MatLab es etiquetar los ejes, a travs de las funciones
"xlabel" para el eje de abcisas e "ylabel" para el eje de ordenadas. Por ejemplo, si
s(n) representase una seal de tensin y estuviera medida en voltios podramos
escribir
xlabel('n')
ylabel('Tensin (en V)')
MatLab ofrece adems la posibilidad de presentar varias grficas al mismo tiempo en
pantalla, as como de realizar grficas tridimensionales. Si desea ms informacin
sobre grficas puede teclear "help plot" desde la lnea de comandos de MatLab.
Ejecute ahora el programa grafdemo.m tecleando "grafdemo" para ver una
demostracin automtica de diferentes posibilidades grficas de MatLab.
3.7 Ficheros
Hasta ahora ha visto como poda usar MatLab desde el prompt, tecleando
directamente los comandos apropiados. Cuando el nmero de operaciones a realizar
es largo, o debe repetirse varias veces, puede resultar cmodo introducir todas esas
ordenes en un fichero. Para ello el nico requisito que debe cumplirse (a fin de que
MatLab pueda leerlo) es que el fichero debe tener extensin ".m". Para ejecutar el
fichero una vez en MatLab basta con teclear el nombre (sin extensin). Para editar el
fichero basta con seleccionar dicho fichero desde Windows y editarlo utilizando el
bloc de notas u otro programa similar.
Tambin existe la posibilidad de crear nuevas funciones. La principal ventaja de las
funciones es que permiten variables locales y parmetros de entrada y salida. Para
declarar una funcin de forma que MatLab sea capaz de entenderlo, deben cumplirse
los requisitos siguientes:
1. La funcin debe estar contenida en un fichero .m cuyo nombre debe ser el mismo
que el de la funcin.
2. La primera lnea ejecutable del fichero (comentarios aparte) debe seguir la
sintaxis: function [y1,y2,...]=nombrefuncin(x1,x2,...) donde x1,x2... son los
parmetros de entrada e y1,y2... son los parmetros de salida.
Adems de las operaciones normales los ficheros .m y las funciones pueden tener
construcciones del tipo FOR,WHILE e IF al igual que muchos otros lenguajes de
ordenador. La sintaxis para cada una de ellas puede obtenerse tecleando "help for",
"help while" o "help if" segn el caso. Por ejemplo, la sentencia
N=4;
for i=1:N; x(i)=i^2; end;
o
N=4;
for i=1:N;
x(i)=i^2;
end;
genera un vector de N elementos con los cuadrados de los nmeros del 1 al N y la
sentencia
for i=N:-1:1; x(i)=i^2; end;
produce el vector en orden invertido. Si deseas invertir el orden de los elementos de
un vector directamente puedes utilizar los comandos fliplr (flip left/right) o
flipud (flip up/down) segn el vector sea fila o columna.
La forma general de un bucle WHILE (mientras) es
while condicin
comandos
end;
los comandos se repetirn indefinidamente mientras la condicin sea verdadera. Por
ejemplo:
n=0;
while 2^n<10
n=n+1;
end
n
La forma general de la sentencia IF (si) se ilustra a continuacin:
if N<0
x(n)=-1;
elseif N>0
x(n)=1;
else
x(n)=0;
end;
Los operadores relacionales en MatLab, que puedes utilizar para establecer las
condiciones de las sentencias IF y WHILE son
< menor que
> mayor que
< = menor o igual que
> = mayor o igual que
= = igual que
~ = distinto de
Fjate que = denota una asignacin mientras que = = denota una relacin. Otros
operadores lgicos que tambin puedes utilizar para establecer condiciones son:
& AND
| OR
~ NOT
Prueba a teclear 2>3 observars que el resultado debe ser FALSO lo que en MatLab
se denota como cero. Si la relacin fuese verdadera obtendras un uno (por ej. 3>2 o
4 = = 3+1).
Intente ahora escribir una funcin "suma" contenida dentro de un fichero "suma.m" que
acepte dos argumentos de entrada y de cmo resultado la suma de ambos. Una vez que
la tenga lista y haya comprobado que funciona escrbala en la hoja de resultados.
Adems de las opciones vistas anteriormente, MatLab ofrece diversas posibilidades
de inters que no caen dentro de ninguno de los grupos presentados. En primer lugar
tenemos la posibilidad de guardar todos los comandos que vayamos tecleando en un
fichero. Para ello basta con escribir al inicio de la sesin la orden:
diary nombrefichero
donde nombrefichero es el nombre del fichero donde deseamos que se guarden las
rdenes tecleadas.
Tambin es posible guardar todas las variables en un fichero para poder recuperarlas
posteriormente. Para ello basta con teclear:
save nombrefichero
con lo que todas las variables se guardan el fichero cuyo nombre (sin extensin) se
haya especificado. Posteriormente se pueden recuperar los datos con:
load nombrefichero
LOAD y SAVE tambin pueden usarse sin dar el nombre de un fichero. En ese caso
MatLab enva los datos a un fichero por defecto llamado "MatLab.MAT". Si slo se
quieren salvar unas variables (digamos por ejemplo x e y) basta con hacer:
save nombrefichero x y
Para ms opciones sobre LOAD o SAVE teclee "help load" o "help save" desde la
lnea de comandos de MatLab.
El operador ! permite ejecutar rdenes del sistema operativo sin que
sea necesario salir de MatLab. As, por ejemplo:
!dir
realiza un directorio de la unidad actual en formato DOS. Tambin se
poda haber realizado el directorio con la orden de MatLab
dir
con lo que el directorio se mostrara en formato MatLab.
MatLab nicamente ve los ficheros que se encuentran en el directorio
actual. Puede cambiarse de directorio desde MatLab con la orden "cd".
Por ejemplo, tecleando:
cd ..
se pasa al directorio padre del actual. Esta opcin puede ser til cuando
desea ejecutar un fichero .m o una funcin y MatLab no la encuentra.
Otras funciones de MatLab que pueden resultar interesantes se comentan
brevemente a continuacin:
whos Muestra las variables actuales
size Devuelve el tamao de una variable (filas y columnas)
pause Detiene la ejecucin hasta que se pulse una tecla
why Le pide a MatLab que explique el porqu de un resultado
quit Sale de MatLab y retorna al sistema operativo
3.8 Tarea prctica
Un programa que se ejecuta a travs de la rutina principal consta del siguiente cuerpo:
principal.m
%
% PROGRAMA PRINCIPAL: Grbalo en el fichero "principal.m"
%
clear;
format short e;
% variables
lado=2;
radio=lado/2;
cada=100;
iter=input('Iteraciones: ');
dibuja(radio);
flops(0);
dentro=0;
for i=1:iter
veces=i;
dentro=dentro+calcula(radio,lado);
prob=dentro/veces;
valor_estimado=prob*(lado/radio)^2;
fprintf('Valor estimado: %1.3f \r',valor_estimado);
end;
fprintf('Operaciones en punto flotante %d \r',flops)
fprintf('Valor estimado: %1.3f \r',valor_estimado);
y de las siguientes rutinas auxiliares:
dibuja.m
%
% function dibuja(r); Graba esta funcin en "dibuja.m"
%
function dibuja(r);
clf;
cuadrado_x=[-r,-r,r,r,-r];
cuadrado_y=[-r,r,r,-r,-r];
plot(cuadrado_x,cuadrado_y);
axis('square')
hold;
n=0:.01:1;
seno_x=sin(2*pi*n);
coseno_y=cos(2*pi*n);
plot(seno_x,coseno_y);
calcula.m
% function resultado=calcula(radio,lado);
% Graba esta funcin en el fichero "resultado.m"
%
function resultado=calcula(radio,lado);
x=rand(1,1);
y=rand(1,1);
x=(x-.5)*lado;
y=(y-.5)*lado;
plot(x,y,'.')
r=sqrt(x^2+y^2);
if r<radio
resultado=1;
else
resultado=0;
end;
1. Con ayuda del comando help y toda la informacin de la que dispones comenta cada
lnea o bloque de lneas del siguiente programa, hazlo al lado del cdigo MatLab
sobre el mismo papel. Esto no hace falta que lo entregues.
2. Implementa el programa y ejectalo para ver como se comporta. Si encuentras
errores repasa si has introducido bien el cdigo.
3. Utiliza tus comentarios para averiguar la labor que tiene cada subrutina y, si eres
capaz, el objetivo del programa. Explica la funcin del programa y de las subrutinas
en la hoja de respuestas.
3.9 Desvela el mensaje oculto.
1. Lee la variable mensaje del fichero mensaje.mat con el comando load. Este
mensaje se encuentra codificado en binario.
2. Para poder descifrarlo construye una subrutina convierte.m que convierta un
conjunto de 8 bits agrupados en un vector en su equivalente decimal. La ordenacin
de los bits debe ser la normal, los primeros por la izquierda son los bits de mayor
peso. Puedes comprobar la rutina con el siguiente ejemplo:
D=convierte([0,1,0,0,0,0,0,1]) % el resultado debe dar 65.
3. El nmero decimal resultante se puede convertir en carcter utilizando el comando
char. Por ejemplo char(D) debera devolver A para D=65.
4. Utiliza la subrutina construida junto con el comando anterior para descifrar el
mensaje oculto. Puedes escribir una pequea rutina .m con un bucle que te
simplifique esta tarea.
FIN DE LA PRCTICA
Referencias complementarias
MATLAB Primer. Elaborado por el prof. Kermit Sigmon, Universidad de Florida
(se te facilita una versin traducida de este fichero en formato pdf en la pgina de
Internet del Laboratorio).
PRCTICA 1 Nombre:___________________________________________
4 Hoja de resultados
4.1 Trabajo de laboratorio
4.1.1 Evaluacin de las expresiones
1.-
2.-
3.-
4.-
4.1.2 Resultados de las operaciones
1.- v=
2.- x=
3.- z=
4.1.3 Matriz resultante
4.1.4 Valor medio del vector b
mb=
4.1.5 Producto de los vectores f y g
elemento a elemento
4.1.6 Inversa de la matriz B
4.1.7 Solucin del sistema de
ecuaciones
u=
v=
x=
y=
z=
4.1.8 Listado del fichero suma.m
(sigue en el reverso de la hoja
si no te llega el espacio).
Comenta brevemente el objetivo de cada subrutina (dibuja.m, resultado.m) y el
de todo el programa (calcula.m):
Mensaje Oculto: ____________________________________________________

Das könnte Ihnen auch gefallen