Diapositiva 1 - Universidad de Huelva

Download Report

Transcript Diapositiva 1 - Universidad de Huelva

Laboratorio IA Tema 1
Introducción a MATLAB
Como funciona
cada variable se supone que es una matriz y no existe ningún requisito para el
dimensionamiento y declaración de variables. Las dimensiones de la matriz se definen
mediante una lista explícita de elementos o por reglas que se aplican a las
operacionesmatemáticas.
Las sentencias de MATLAB están típicamente en el formato general de
variable=expresión
(o simplemente expresión), 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 cálculo
Entorno
El entorno principal es la ventana de comandos, en ella cualquier
expresión 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 histórico 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 línea hay que usar “. . . ” al final de
cada línea 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
extensión .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 simétrica de diagonal constante con v como primera fila
y primera columna
toeplitz(w, v) matriz simétrica 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 (distribución uniforme).
randn(n) genera una matriz de n × n cuyos elementos siguen una
distribución 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 expresión que se puede utilizar para generar un vector que
describa el tiempo . Se considera un vector fila con valores numéricos del tiempo que
aumentan desde 0 a 4 con un tamaño de paso fijo de 0,02.
El procedimientomás 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 gráficas son un ejemplo de ello:
plot (A)
Otras:
bar
Graficos y Matrices
La ventana Gráfica contiene muchas opciones que
permiten mejorar el aspecto del gráfico
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 título 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 título a los
ejes x e y respectivamente : “Eje x” “Eje y”
Prueba las funciones:
plot(b,'*')
axis([0 10 0 10])
¿qué efecto tienen?
Gráficos 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 línea  tercer argumento. por defecto línea continua
de color negro
Ejemplo:
plot(x, y,'r+ :')
dibuja r en rojo, los puntos en forma de + y unidos por línea de
puntos.
plot(x, y,' --')
hold :conserva el gráfico anterior mientras se dibuja uno nuevo.
Importante si se quieren comparar gráficos
Ejercicio 4
• Sabiendo que ecuación cinematica del espacio
es :s= so + vo*t + 1/2at^2.
(ojo multiplicación 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 aceleración y representalo en la
misma gráfica
Órdenes básicas de programación
for La función sin(x) calcula el seno de cada una de las componentes
del vector x. Esto se podía haber hecho también 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 ecuación del número aureo es
Calcular su valor de forma iterativa
Órdenes básicas de programación
Órdenes básicas de programación
Órdenes básicas de programación
Órdenes básicas de programación
Órdenes básicas de programación
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 : número de parametros de entrada y salida
•nargcheck, nargoutchk :chequea número de parámetros
•persistent vs global
Ejercicio 4
• Sabiendo que ecuación cinematica del espacio
es :s= so + vo*t + 1/2at^2.
(ojo multiplicación 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 aceleración y representalo en la
misma gráfica
Ejercicio 5
• Sabiendo que ecuación cinematica del espacio
es :s= so + vo*t + 1/2*a*t*t
(ojo multiplicación escalar .*)
• Realiza la versión programada con bucles
• Crea ahora un fichero espacio.m que recibiendo velocidad inicial ,
espacio inicial y aceleración 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 gráfico similar a este
Ejercicio 7
Con la orden fill(x,y,color) puede rellenarse con color el polígono
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 multiplicación 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
0
5
10
15
20
Ejercicio 9
• La ventana gráfica de MATLAB puede albergar varios
gráficos subplot(m,n,k). matriz m×n 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 multiplicación 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 más 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 fácil de contour
mesh(Z) Dibuja la función Z (ejes matriciales)
mesh(X,Y,Z) Dibuja la función Z (ejes cartesianos)
meshc(Z) mesh + contour (ejes matriciales)
meshc(X,Y,Z) mesh + contour (ejes cartesianos)
surf(Z) Dibujo sólido (ejes matriciales)
surf(X,Y,Z) Dibujo sólido (ejes cartesianos)
surfc contour + surf
Ver Demo superficies