Está en la página 1de 43

Laboratorio IA Tema 1

Introduccin a MATLAB

Como funciona
cada variable se supone que es una matriz y no existe ningn requisito para el
dimensionamiento y declaracin de variables. Las dimensiones de la matriz se definen
mediante una lista explcita de elementos o por reglas que se aplican a las
operacionesmatemticas.
Las sentencias de MATLAB estn tpicamente en el formato general de

variable=expresin
(o simplemente expresin), entonces el resultado lo tiene la variable ans

Ejemplo

y = 10*sin(pi/6) 10*sin(pi/6)
El resultado devuelto es un escalar (matriz de 1 por 1) con un valor de 5,0.

Apartir de ese momento y estar diponible en el sistema para cualquier clculo

Entorno
El entorno principal es la ventana de comandos, en ella cualquier
expresin que tecleemos porducir una respuesta que quedar
almacenada en ans o en una variable.
Todas las variables creadas estan
representadas en el Workspace
Haciendo click se accede a un editor
El histrico de comandos
permite acceder a los comandos ,
bien con un click o con las flechas

Entorno II
Tecleando HELP nombre_de_comando obtendremos ayuda en linea, si no
especificamos tema o comando mostrara todos los items disponibles:
>> help
HELP topics
matlab\general
matlab\ops
matlab\lang
matlab\elmat
matlab\elfun
matlab\specfun
matlab\matfun
matlab\datafun
matlab\polyfun

- General purpose commands.


- Operators and special characters.
- Programming language constructs.
- Elementary matrices and matrix manipulation.
- Elementary math functions.
- Specialized math functions.
- Matrix functions - numerical linear algebra.
- Data analysis and Fourier transforms.
- Interpolation and polynomials.....

Si no queremos que muestre la salida (util si hacemos varias operaciones


encadenadas ;
A = 5 ; B= 3 ; A*B
ans =
15

Entorno III
Para continuar una lnea hay que usar . . . al final de
cada lnea que se quiera continuar.
Los comentarios en MATLAB deben ir precedidos por %.
La orden clear all borra el contenido de todas las variables,
funciones,resulta interesante cuando se depuran
programas.

Entrada/salida

Entorno IV
Guardar variables y matrices
diary graba tanto los comandos introducidos como la salida de
MATLAB, pero no graba los valores de las variables y matrices.
whos elabora un lista de dichas variables, as como de las
dimensiones de la matrices.
save xxx guarda las matrices y variables de esta lista en un archivo
denominado xxx. MATLAB etiqueta estos archivos con una
extensin .mat.

Funciones Matlab

Complex.
abs - Absolute value.
angle - Phase angle.
complex - Construct complex data from real and imaginary parts.
conj - Complex conjugate.
imag - Complex imaginary part.
Rounding and remainder.
fix - Round towards zero.
floor - Round towards minus infinity.
ceil - Round towards plus infinity.
round - Round towards nearest integer.
mod - Modulus (signed remainder after division).
rem - Remainder after

Funciones Matlab

Trigonometric.
sin - Sine.
cos - Cosine.
acos - Inverse cosine.
tan - Tangent.
atan - Inverse tangent.
Exponential.
exp - Exponential.
log - Natural logarithm.
log10 - Common (base 10) logarithm.
log2 - Base 2 logarithm and dissect floating

Matrices
Crear una matriz:
A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
ones(dimensiones) eye(dimensiones)
A = [12 3
4 5 6]

Dimensiones de una matriz


Size (A)

Limpiar una matriz


Clear A

Ver variables existentes


Whos

Matrices especiales

diag(v) matriz diagonal con el vector v como diagonal.


toeplitz(v) matriz simtrica de diagonal constante con v como primera fila
y primera columna
toeplitz(w, v) matriz simtrica de diagonal constante con w como primera
columna y v como primera fila. (probar para ver!)
ones(n) genera una matriz de n n con todos los valores iguales a uno.
zeros(n) genera una matriz de n n con todos los valores iguales a cero.
eye(n) genera una matriz identidad de n n.
rand(n) genera una matriz de n n con elementos de valor aleatorio entre
0 y 1 (distribucin uniforme).
randn(n) genera una matriz de n n cuyos elementos siguen una
distribucin normal (media 0 y varianza 1).
ones(m, n), zeros(m, n), rand(m, n) generan matrices de m n.
ones(size(A)), zeros(size(A)), eye(size(A)) generan matrices de la misma
forma que A

Operadores de Matriz I
Sumar:
sum(A)
A+ 5 (suma 5 a cada elemento)

Multiplicar
A*A Estandard
A.*A Elemento a elemento
A*3 Cada elemento*3
det(A) es el determinante

Transponer e Inversa
A

X = inv(A)

Diagonal
diag(A)

Acceso a los elementos


A(1,4) + A(2,4) + A(3,4) + A(4,4)

Cambiar un valor de la matriz


a(1,2)= 30

Operadores de Matriz II
Intervalos
1:10

Intervalos con paso


100:-7:50

Trigonometricos
0:pi/4:pi
Submatriz:
g = a(1,:), g = a( : , 1:3)

Utilidad del intervalo


Es til considerar una expresin que se puede utilizar para generar un vector que
describa el tiempo . Se considera un vector fila con valores numricos del tiempo que
aumentan desde 0 a 4 con un tamao de paso fijo de 0,02.
El procedimientoms simple que generar este vector es una sentencia que expresa:

t =0 : 0.02 : 4
El resultado es una variable matricial t con una fila y 201 columnas.
Columns 1 through 7
0

0.0200

0.0400

0.0600

Columns 8 through 14
0.1400

0.1600

0.1800

0.0800

0.1000

0.1200

Ejercicio 1 Matrices
Considere la siguiente matriz:
Se pide:
a) Introducir la matriz A.
b) Obtener los valores de la primera columna
c) Obtener los valores de la segunda fila.
d) Obtener los valores de la segunda y la tercera columna.
e) Obtener la diagonal de A.
f) Obtener una matriz de 2x2 donde todos los elementos sean 1.
g) Obtener una matriz unidad de orden 2x2.
h) Multiplica A por su inversa. qu se obtiene?

Graficos y Matrices
En matlab un gran numero de funciones intentan
traducir la entrada de datos a traves de una matriz.
Las funciones grficas son un ejemplo de ello:
plot (A)
Otras:
bar

Graficos y Matrices
La ventana Grfica contiene muchas opciones que
permiten mejorar el aspecto del grfico
Plot (A)
Grid on
Otras:

xlabel('Sample #')

ylabel('Pounds')

Ejercicio 2
- Crea una matriz b con una fila y valores de 2 a 10 .
- Suma a cada elemento el numero 2
- Dibuja utilizando la funcion bar y pon de ttulo a los
ejes x e y respectivamente : Eje x Eje y
Prueba las funciones:
plot(b,'*')
axis([0 10 0 10])
qu efecto tienen?

Ejercicio 3
- Crea una matriz b con una fila y valores de 2 a 10 .
- Suma a cada elemento el numero 2
- Dibuja utilizando la funcion bar y pon de ttulo a los
ejes x e y respectivamente : Eje x Eje y
Prueba las funciones:
plot(b,'*')
axis([0 10 0 10])
qu efecto tienen?

Grficos II
- plot(x, y): utiliza dos vectores, x e y, de la misma longitud. ste
dibujar los puntos (xi, yi) y los unir mediante rectas continuas.
- Si no se le da vector x plot (i, y(i)).
- Tipo y color de la lnea tercer argumento. por defecto lnea continua
de color negro
Ejemplo:

plot(x, y,'r+ :')

dibuja r en rojo, los puntos en forma de + y unidos por lnea de


puntos.

plot(x, y,' --')


hold :conserva el grfico anterior mientras se dibuja uno nuevo.
Importante si se quieren comparar grficos

Ejercicio 4
Sabiendo que ecuacin cinematica del espacio
es :s= so + vo*t + 1/2at^2.
(ojo multiplicacin escalar y ^ escalar .* .^)
1) Crea las matrices de tiempo para calcular el espacio recorrido con
una velocidad inicial de 12, espacio inicial de 5 y aceleracion de 5.5
Representa la curva resultante con t en el eje x y
s en el eje y
2) Hazlo ahora para un movimiento sin aceleracin y representalo en
la misma grfica

rdenes bsicas de programacin


for La funcin sin(x) calcula el seno de cada una de las componentes
del vector x. Esto se poda haber hecho tambin con un bucle del
tipo for ... end
for i=1:n
y(i) = sin(x(i));
end;
el uso de este tipo de bucles consume mucho tiempo en MATLAB.
se recomienda utilizarlos lo menos posible
El ndice del bucle puede tener la forma i=i0:ipaso:ifinal e incluso
i=[1,3,4,6,7,8].
>> for i=[1,3,5,8:12]; i, end
>> for i=1:10; i, end

Ejercicio 4_1
Sabiendo que la ecuacin del nmero aureo es

Calcular su valor de forma iterativa

rdenes bsicas de programacin

rdenes bsicas de programacin

rdenes bsicas de programacin

rdenes bsicas de programacin

rdenes bsicas de programacin


Ejemplo Switch

switch (metodo)
case {1,2,3}
disp([1,3])
case {4,5,6,7}
disp([4-7])
case {8}
disp([8])
otherwise
disp(< 1 o > 8)
end

Scripts M-Files

Scripts M-Files

Scripts M-Files

Globales y . escalares

Otros comandos importantes


FEVAL : Evalua un funcion pasada por parametro
nargin, nargout : nmero de parametros de entrada y salida
nargcheck, nargoutchk :chequea nmero de parmetros
persistent vs global

Ejercicio 4
Sabiendo que ecuacin cinematica del espacio
es :s= so + vo*t + 1/2at^2.
(ojo multiplicacin escalar y ^ escalar .* .^)
1) Crea las matrices de tiempo para calcular el espacio recorrido con
una velocidad inicial de 12, espacio inicial de 5 y aceleracion de 5.5
Representa la curva resultante con t en el eje x y
s en el eje y
2) Hazlo ahora para un movimiento sin aceleracin y representalo en
la misma grfica

Ejercicio 5
Sabiendo que ecuacin cinematica del espacio
es :s= so + vo*t + 1/2*a*t*t
(ojo multiplicacin escalar .*)

Realiza la versin programada con bucles


Crea ahora un fichero espacio.m que recibiendo velocidad inicial ,
espacio inicial y aceleracin devuelva un vector espacio de 50
valores.

Ejercicio 5_1

Ejercicio 5_1:salida

Ejercicio 6
Crea un vector x de 1 a 5 en intervalos de 0.5
y = 1./(1 + 10*(x-3).^2).*sin(x);
z = 1./(1 + 10*(x-3).^2).*cos(x);
Utiliza plot(x,y,x,z) para representar la salida.
Usando title Nota letras especiales: \beta = \alpha {\gamma 1}\omega'), xlabel ylabel
legend grid on haz un grfico similar a este

Ejercicio 7
Con la orden fill(x,y,color) puede rellenarse con color el polgono
definido por los vectores x e y.
Crea una funcion de seno basado en un vector x uniformemente
espaciado y representalo para que aparezca como el de la figura
(color = b).

Ejercicio 8
Sabiendo que una espiral se define como :

x= t*cos(t); y=t*sin(t) (ojo multiplicacin escalar)


Crea t como t=linspace(0,6*pi,90);(vector con 90 valores equidistantes)
15
10
5
0
-5
-10
-15
-20
-20

-15

-10

-5

10

15

20

Ejercicio 9
La ventana grfica de MATLAB puede albergar varios
grficos subplot(m,n,k). matriz mn de subventanas, y
realizando el dibujo en la ventana k, contando por filas.
Cree una matriz de 2*2 subventanas y dibuje los 4 ltimos dibujos en
ellas

Ejercicio 10
Crea una espiral en tres dimensiones con el comando

plot3(x,y,z)
x=t*cos(t); y=t*sin(t); z=t; (ojo multiplicacin escalar)
Curva con plot3

50
40

z(t)

30
20
10
0
50
50
0
y(t)

0
-50

-50

x(t)

Superficies
Las rdenes de dibujo 3D ms usuales son:
contour(X,Y,Z,num) Dibuja num curvas de nivel
contourf(X,Y,Z,num) Dibuja y rellena num curvas de nivel
ezcontour(f,dominio) version fcil de contour
mesh(Z) Dibuja la funcin Z (ejes matriciales)
mesh(X,Y,Z) Dibuja la funcin Z (ejes cartesianos)
meshc(Z) mesh + contour (ejes matriciales)
meshc(X,Y,Z) mesh + contour (ejes cartesianos)
surf(Z) Dibujo slido (ejes matriciales)
surf(X,Y,Z) Dibujo slido (ejes cartesianos)
surfc contour + surf
Ver Demo superficies

También podría gustarte