ANEXO A
-
Upload
hender-guarin-gonzalez -
Category
Documents
-
view
212 -
download
0
description
Transcript of ANEXO A
15/05/2011
Autores:
Jesús Armando Álvarez Machado
Cesar Augusto Jiménez Hernández
Directores:
Ing. Edgar Hidalgo Santos
Ing. Feissan Alonso Gerena Mateus
Material didáctico
para el tutor
Contenido
Introducción.
Vectores/Matrices.
Funciones.
Cadenas de Texto.
Graficas 2D y 3D.
15/05/2011
15/05/2011
• Lenguaje de Programación
• Alto Rendimiento
• Computación Técnica
• Computación, Visualización y Programación
• Problemas y soluciones en notación Matemática (de Matrices).
Que es MATLAB
15/05/2011
Aplicaciones
•Matemáticas y Computación.
•Desarrollo y Test de algoritmos.
•Modelado, Simulación y Prototipos.
•Análisis de Datos, exploración y visualización.
•Gráficas de Ingeniería y Científicas.
•Desarrollo de Aplicaciones finales (GUI)
15/05/2011
MATLAB
•Matrix Laboratory (Laboratorio de Matrices).
•Elemento básico: [Matriz] (en adelante Arreglo) que no
requiere dimensión.
•Problemas que involucran matrices y vectores son
consumidores de tiempo (C, C++, Fortran, etc.)
15/05/2011
Entorno de Trabajo
•Abra MATLAB.
•Identifique:
–Ventana de Comandos.
–Historial de Comandos.
–Directorio Actual.
–Espacio de Trabajo.
–Barra de Menús.
15/05/2011
MATLAB como Calculadora
•Desde la ventana de comandos ingrese:
•>> 2 + 3/4*5
•Verifique la respuesta de MATLAB.
•Verifique el workspace.
15/05/2011
Números
•Por defecto se usa la notación decimal convencional.
•La letra “e” se usa para definir notación científica
(x10).
•Los números imaginarios se definen usando las
letras “i” y “j”.
15/05/2011
Números
•Los números tienen una precisión de 16 dígitos
significativos decimales y un rango entre 10-308 y 10+308 .
•Todas las operaciones en MATLAB se realizan en precisión
doble.
•El formato es la manera en como se muestran los valores
15/05/2011
Variables
•La variable ANS es
básica en MATLAB.
•Ejecute:
•>> 3-2^4
•Verifique el resultado
almacenado en ANS.
•Ejecute:
•>> ans*5
•Verifique el uso de
variables y resultado.
15/05/2011
Variables
•Las variables no requieren de una declaración de tipo o
tamaño.
•>>num_estudiantes = 25
•MATLAB crea el espacio necesario y asocia el tipo adecuado
para definir esa variable, si es que no la encuentra en el
Workspace.
15/05/2011
Variables
•Las variables tienen un limite de tamaño de nombre de 31
caracteres.
•Deben empezar con una letra SIEMPRE.
•NO deben contener caracteres especiales, salvo el “underscore” _
15/05/2011
Las letras “i” y “j”
•“i” y “j” están reservadas para definir números complejos.
•>>i
•>>i=20
•>>i
•Verifique el comportamiento de “i”
15/05/2011
Otras palabras reservadas
•pi 3.14159265...
•i unidad imaginaria
•realmin el número más pequeño, 2-1022
•realmax el número más grande, 21023
•Inf infinito
15/05/2011
Comandos de manejo de Sesión
•clc
•clear
•clear var1, var2
•exist(„nombre‟)
•quit
•who
•whos
15/05/2011
Vectores Fila
•Vectores que “se ven como filas”
•Se definen con espacios o comas entre sus
elementos.
•>>v = [ 1 3, sqrt(5)]
•Verifique el resultado en el workspace.
•>> length(v)
•Verifique el resultado en el workspace.
15/05/2011
Vectores Fila
•Puede haber problemas con los
espacios.
•Ejecute:
•v2 = [3+ 4 5]
•Verifique el comportamiento
•Ejecute:
•v3 = [3 +4 5]
•Verifique el comportamiento
15/05/2011
Operaciones Vectores
Fila
•Deben tener la misma dimensión para
la suma.
•>> v + v3
•Pueden multiplicarse por un escalar.
•>> v4 = 3*v
•Pruebe: >> v + v2
15/05/2011
Definición Vectores
•Se pueden formar vectores a partir
de otros vectores (variables) ya
definidos:
•>> w = [1 2 3], z = [8 9]
•>> cd = [2*z,-w], sort(cd)
•Verifique el comportamiento.
15/05/2011
Indice en Vectores Fila
•Se puede recuperar (ver) el valor de
un componente de un vector o
cambiarlo haciendo uso de un índice.
•El índice se define con el nombre de
variable del vector y con los paréntesis
para acceder a la posición del
elemento a cambiar/ver.
•>> w(2) = -2, w(3)
15/05/2011
El operador :
•Ejecute:
•>>1:10
•Verifique el resultado.
•Cual es la función del operador “:”?
•De manera general a : b : c produce
un vector con valor inicial a, valor final
c e incrementos de b.
15/05/2011
El operador :
•Se puede usar el operador : para
definir vectores:
•>> r5 = [1:2:6, -1:-2:-7]
•Para obtener los elementos del 3 al 6
•>> r5(3:6)
•Cual será el resultado de?
•r5(6:-2:1)
15/05/2011
Vectores Columna
•Vectores que se ven como columna.
•Se definen usando “;”
•Pruebe:
•>> c = [ 1; 3; sqrt(5)]
•>> c2 = [3
•4
•5]
15/05/2011
Transpuesta
•Se puede convertir un vector fila en
un vector columna y viceversa.
•>> w, w', c, c'
•Defina el vector complejo:
•>> x = [1+3i, 2-2i]
•La transpuesta para x corresponderá
a la transpuesta conjugada.
15/05/2011
Producto de Vectores
•Multiplicación de Vector Fila x Columna
•>> u = [ 10, -11, 12], v = [20; -21; -22]
•>> prod = u*v
•Es una multiplicación Matricial!.
•>> w = [2, 1, 3], z = [7; 6; 5]
•>> u*w
•Verifique ambos ejemplos.
15/05/2011
Norma de un Vector
•El siguiente muestra dos maneras de
obtener la norma (distancia euclidiana)
de un vector:
•>> [ sqrt(u*u'), norm(u)]
15/05/2011
El operador
•Corresponde al producto Hadamard.
•Trabaja sobre vectores del mismo tipo
(fila o columna).
•>> u.*v'
•Tabulemos la función para
15/05/2011
El operador .
•Se puede usar también para la
división:
•>> a = 1:5, b = 6:10, a./b
•>> a./a
•>> c = -2:2, a./c
•>> a.*b -24, ans./c
•Verifique el resultado.
15/05/2011
Ingreso de Matrices
•Ingrese en la ventana de comandos:
•>>A = [ 16 3 2 13; 5 10 11 8; 9 6 7 12;
4 15 14 1 ]
•Verifique el resultado.
•Use la flecha “hacia arriba” y
reemplace los espacios en blanco con
“comas”.
•Verifique el resultado.
•Ejecute: A‟
•Verifique el resultado
15/05/2011
Manejo de Subíndices
•Subíndices será la manera de
acceder a un elemento de una matriz.
•Usa los paréntesis y el nombre de la
variable.
•>>A(1,4)
•Verifique el resultado y la relación con
A.
15/05/2011
El operador :
•>>A(1:4,4)
•Verifique el resultado.
•Ejecute:
•>>A(:,4)
•Verifique el resultado?
•Cual es la función del operador “:”
manejando subíndices?
15/05/2011
El operador :
•Se puede utilizar el operador : para
generar matrices:
•>> D = [1:5; 6:10; 11:2:20]
•Verifique el resultado anterior.
15/05/2011
Vectores y Matrices
•En MATLAB en general todos son
arreglos.
•Un vector columna será una matriz de
mx1.
•Un vector fila será una matriz de 1xn.
15/05/2011
Tamaño de Matrices
•El comando size nos devuelve la
dimensión de la matriz que se usa
como parámetro.
•>> size(A)
•>> size(ans)
•El ultimo comando muestra que el
valor retornado por size es en si
mismo una matriz de 1x2.
15/05/2011
Tamaño de Matrices
•También se puede guardar las
dimensiones de una matriz en
variables separadas.
•>> [r c] = size(A'), S = size(A')
•Verifique los valores de r y c y de S.
•Verifique también los tipos de dato
(arreglo) de dichas variables.
15/05/2011
Matrices Especiales
•MATLAB provee algunas funciones
propias de un tamaño deseado.
•ones(m, n) da una matriz de mxn
llena de unos.
•>> P = ones(2,3)
•zeros(m,n) da una matriz de mxn
llena de ceros.
•Z = zeros(2,3)
15/05/2011
Matriz Identidad
•Es una matriz de ceros pero en su
diagonal principal esta llena de unos.
•>> I = eye(3), x = [8; -4; 1], I*x
•Note que eye(3) es una matriz
cuadrada identidad.
•Verifique el resultado de I*x.
15/05/2011
Matriz Diagonal
•Es una matriz identidad pero su
diagonal principal no es
necesariamente ceros.
•>> D = [-3 0 0; 0 4 0; 0 0 2]
•El comando diag puede generar una
matriz diagonal a partir de un vector.
•>> d = [-3 4 2], D = diag(d)
15/05/2011
Matriz Diagonal
•Por otro lado si A es una matriz el
comando diag(A) extrae la diagonal
principal de dicha matriz, incluso si la
matriz A no es cuadrada.
•>> F = [0 1 8 7; 3 -2 -4 2; 4 2 1 1]
•>> diag(F)
•Verifique la variable ans e identifique
“la diagonal” de F.
15/05/2011
Construcción de Matrices
•A veces es necesario generar
matrices grandes a partir de otras mas
pequeñas (o vectores).
•>> C=[0 1; 3 -2; 4 2]; x=[8;-4;1];
•>> G = [C x]
•Note que C es una matriz y x es un
vector columna.
15/05/2011
Construcción de Matrices
•Se pueden construir matrices usando
también funciones y operaciones
sobre matrices:
•>> J = [1:4; 5:8; 9:12; 20 0 5 4
•>> K = [ diag(1:4) J; J' zeros(4,4)]
•Pruebe el siguiente comando:
•>> spy(K), grid
15/05/2011
Expresiones
•Expresiones Matemáticas
elementales:
•>> help elfun
•Expresiones Matemáticas especiales:
•>>help specfun
•Expresiones de Matrices elementales:
•>>help elmat
15/05/2011
Números Aleatorios
•Para generarlos usamos las
funciones:
•rand, randn, randint.
•Verifique el uso de:
•>> rand(2)
•>> randn(2)
•>> randint(2,2,[-4 4])
15/05/2011
Suma de Elementos
•Se utiliza el comando sum.
•Genere un matriz para probar los
siguientes comandos:
15/05/2011
Manejo de valores
•Se manejan complejos automáticos:
•>> c=15+sqrt(-1)
•Y valores “excepción” correctamente:
•>> a=123/0
•>> b=0/0
•>> Inf-Inf
15/05/2011
Residue
•La función residue, descompone el
cociente de una fracción en fracciones
parciales.
•Teniendo un cociente de la forma:
•La función es:
•>>[r,p,k] = residue(b, a)
15/05/2011
Residue
•En fracciones parciales:
•>> b=[1 1 1 2];
•>> a=[1 0 3 0 2];
•>> [r,p,k]=residue(b, a)
•El resultado será:
15/05/2011
Mostrar y Pedir datos
•La función INPUT imprime un
mensaje en la ventana de comandos y
devuelve el resultado de una
expresión teclada por el usuario.
•INPUT espera hasta que el usuario
ingrese un valor numérico o una
expresión
15/05/2011
Mostrar y Pedir datos
•Cualquier expresión válida de
MATLAB es aceptada por INPUT.
•>> edad = input(„Ingrese la edad: ')
•En el caso que sea una cadena de
texto es recomendable:
•>> nombre = input('¿Cómo te
llamas?','s')
15/05/2011
Mostrar y Pedir datos
•La función DISP imprime un mensaje
en la ventana de comandos, puede ser
un mensaje de texto o variables.
•>> disp('El programa ha terminado')
•>> A=rand(4,4)
•>> disp(A)
15/05/2011
Scripts
•Son archivos de texto (.m) que
contienen comandos de MATLAB.
•Para ejecutar los comandos de ese
archivo se debe escribir el nombre del
archivo en la ventana de comandos.
•Las variables y resultados son de
ámbito GLOBAL.
15/05/2011
Scripts
•Debe estar contenido en el directorio
actual para poder ejecutarlo (F5 o
como comando).
•Los nombres de los scripts deben
seguir la regla de las variables de
MATLAB.
•Mucho ojo con los espacios.
15/05/2011
Scripts
•El nombre del script no debería
interferir con alguna función o con una
variable (error común).
•Los comentarios en MATLAB se
generan con el símbolo %:
•>> %Esto es un comentario
15/05/2011
Funciones
•Son “user-defined” a diferencia de las
“built-in”, también escritas en .m.
•Las buit-in también son llamadas
funciones de llamada.
•Las user-defined son llamadas funciones
de definición.
•SIEMPRE reciben parámetros para
realizar los cálculos.
15/05/2011
Funciones
•Los comandos dentro de las
funciones operan sobre los
parámetros.
•Las variables y resultados son de
ámbito LOCAL.
•Los .m de funciones deben
encontrarse en el directorio actual
para poder ser llamadas
15/05/2011
Funciones
•Luego de ser creadas y siempre que
estemos en el directorio actual donde
esta contenido el .m de la función de
definición, entonces la función se
convertirá en de llamada.
•También se puede agregar funciones
de definición a MATLAB.
15/05/2011
Funciones
•El nombre de la función no DEBERIA
interferir con alguno de una “buit-in”, ni
de otra variable (error común).
•El nombre del archivo .m conteniendo
a la definición de la función DEBE ser
igual al nombre de la función.
15/05/2011
Funciones •La primera línea del archivo debe tener el
formato:
•Luego de esta línea se puede documentar la
función usando comentarios.
15/05/2011
Tipos de Datos
•Nos devuelve el tipo de dato de “x”.
•También existen comandos que nos
dan información lógica sobre cada
tipo:
•isinteger(x), isfloat(x), ischar(x),
islogical(x), iscell(x), isstruct(x).
•isempty(x), isnan(x), isinf(x).
15/05/2011
Conversión de Tipo
•Para convertir se usa el nombre del
tipo a generar como si fuera función:
•>> a = 522.08
•>> int8(a)
•>> int16(a)
•Verifique el redondeo.
15/05/2011
Funciones de Redondeo
•round: redondea al entero mas
próximo.
•floor: redondea a –inf.
•ceil: redondea a +inf.
•fix: redondea hacia cero.
15/05/2011
Funciones de Redondeo
•>> x = pi*(-1:3), round(x)
•>> fix(x)
•>> floor(x)
•>> ceil(x)
•>> sign(x), rem(x,3)
15/05/2011
Caracteres, Cadenas y Texto
•MATLAB maneja el tipo Carácter.
•Una cadena es un vector de caracteres.
•Un Texto es una matriz de caracteres.
•>> t1 = 'A'
•Asigna el valor de „A‟ al arreglo de carácter 1x1
t1.
15/05/2011
Caracteres, Cadenas y Texto
•>> t2 = 'BCDE'
•Asigna el valor BCDE al arreglo de
caracteres 1x4 t2.
•Las cadenas creadas se pueden tomar
como arreglos regulares y manipularlos.
•>> t3 = [t1,t2]
15/05/2011
Construcción de Cadenas
•Asigne:
•>> t4 = [t3,' are the first 5 ';...
•„characters in the alphabet.']
•Asigna el valor:
•'ABCDE are the first 5 '
•„characters in the alphabet.'
15/05/2011
Construcción de Cadenas
•Al arreglo de 2x27 t4, es NECESARIO que
ambas filas del arreglo tengan el mismo
numero de caracteres (elementos), eso es una
regla general de arreglos en MATLAB.
•Los … significan que el comando continua en
la línea siguiente.
15/05/2011
Cadenas y Números
•Todo carácter tiene un equivalente en
valor numérico.
•str2num convierte una cadena a su
correspondiente representación
numérica.
•int2str y num2str convierte
respectivamente un entero y un
numero real a su correspondiente
cadena de caracteres.
15/05/2011
Cadenas y Números
•Deseamos generar la cadena: „El valor de
pi es 3.1416'.
•[„El valor de pi es ',num2str(pi)].
•Otro ejemplo:
•>> N = 5; h = 1/N;
•>> ['The value of N is ',int2str(N),...
•', h = ',num2str(h)]
15/05/2011
Manejo de Cadenas
•El operador == realiza comparaciones
entre vectores (elemento a elemento)
15/05/2011
PLOT
•La función PLOT realiza gráficos con por lo menos un
parámetro.
•En el siguiente ejemplo se crea un vector x con valores
entre 0 y 2π, se calcula el seno de esos valores y se
grafican los resultados:
15/05/2011
PLOT: Ejemplo 1
•>>x = 0:pi/100:2*pi;
•>>y = sin(x);
•>>plot(x, y)
PLOT: Ejemplo 2
•> >x = [1; 2; 3; 4; 5]
•> >y = [0; .25; 3; 1.5; 2]
•> >plot(x, y)
15/05/2011
PLOT y Muestreo
•Para graficar para el rango [0,1] se muestrea la
función a un numero suficientemente grande de puntos y
luego se los une con líneas rectas.
•Para tomar N+1 puntos igualmente espaciados a una
distancia h:
•>> N = 10; h = 1/N; x = 0:h:1;
15/05/2011
PLOT y Muestreo
•Se define el conjunto:
•>> y = sin(3*pi*x);
•>> plot(x, y)
•Verifique el gráfico e identifique que el
numero N es muy pequeño aun.
•Cambie N=100 y verifique el
resultado.
15/05/2011
PLOT y Muestreo
•El “seno” es una función continua.
•MATLAB trabaja con datos discretos.
•PLOT realiza una interpolación lineal entre esos
datos para graficar.
•Mayor cantidad de puntos (muestras) harán que
la gráfica sea prácticamente “continua”.
15/05/2011
Propiedades de un PLOT
•>>xlabel('x = 0:2\pi')
•>>ylabel('Seno de x')
•>>title('Gráfica de la función
seno','FontSize',12)
15/05/2011
PLOTs con Estilo
•Plot puede recibir un tercer
argumento.
•Tercer argumento es una cadena que
recibe como primer carácter el color y
segundo el estilo de línea.
15/05/2011
Multi-PLOT
•>>x = 0:pi/100:2*pi;
•>>y = sin(x);
•>>plot(x, y)
•>>y2 = sin(x-.25);
•>>y3 = sin(x-.5);
•>>plot(x,y,x,y2,x,y3)
•>>legend('seno(x)','seno(x-
.25)','seno(x-.5)')
15/05/2011
PLOT y el GCA
•Cada llamado de la función PLOT es una
petición para crear un nuevo “eje” (axis –
ventana donde se contiene el gráfico).
•Cada llamado de PLOT entonces reemplazará
la gráfica anterior.
•>>hold on
•“Mantiene” el gráfico actual en el eje actual.
15/05/2011
PLOT y el HOLD
•Se puede llamar muchas veces a PLOT pero no se
reemplazará el gráfico hasta que exista un:
•>>hold off
•Comparar con lo aprendido en “Varios Gráficos en
un PLOT”.
15/05/2011
AXIS
•La función/comando axis ajusta los ejes del gráfico
actual. Tiene esta sintaxis:
•>>axis([xmin xmax ymin ymax])
•Cuando se crea un plot y no se ha definido “axis”
entonces el axis es automático:
•>>axis auto
15/05/2011
AXIS
•Pruebe estos valores para axis e
identifique el efecto:
•>>axis square
•>>axis equal
•>>grid on
•>>grid off
15/05/2011
SUBPLOT
•Divide la ventana de gráficos en un arreglo mxn en
donde se pueden plotear mxn gráficos.
•Se enumeran de izquierda a derecha, de arriba
hacia abajo.
•subplot(221) (o subplot(2,2,1)) indica que se divide
en 2x2 gráficos y selecciona el 1 subgráfico.
15/05/2011
SUBPLOT
•>> subplot(221), plot(x, y)
•>> xlabel('x'),ylabel('sin 3 pi x')
•>> subplot(222), plot(x, cos(3*pi*x))
•>> xlabel('x'),ylabel(„cos 3 pi x')
•>> subplot(223), plot(x, sin(6*pi*x))
•>> xlabel('x'),ylabel('sin 6 pi x')
•>> subplot(224), plot(x, cos(6*pi*x))
•>> xlabel('x'),ylabel(„cos 6 pi x')
15/05/2011
Figuras, Ejes y Panel
•clf, limpia la figura actual.
•close 1, cierra la ventana llamada
“Figure 1”.
•figure, abre una nueva ventana.
•figure(9), abre una nueva ventana
“Figure 9”.
15/05/2011
Figuras, Ejes y Panel
•Cuando se ha ejecutado el comando PLOT se “crea” (abre)
una nueva ventana que puede recibir gráficos (ejes).
•El comando figure crea una ventana adicional y la convierte
en la actual, lo que significa que si ejecutamos un comando
relacionado a gráficos (plot) usara la “ventana actual” para
graficarlo.
15/05/2011
Figuras, Ejes y Panel
•El comando close cierra la ventana actual y el comando
close all cierra todos los gráficos.
•Se pueden tener también varias graficas sobre la misma
ventana.
•La función hold permite montar los gráficos de una
misma ventana actual.
15/05/2011
Setear Propiedades a un Plot
•Todas las propiedades de cada objeto del gráfico
(figura, ejes, elemento gráfico,...) están guardadas en
"handles“
•gcf current figure, gca current axis
•get(handle) muestra todos las propiedades que se
pueden cambiar.
15/05/2011
Setear Propiedades a un Plot
•set(handle, 'PropertyName', 'Value',...) cambia propiedades.
•Para personalizar el eje x sin dependencia del vector:
•set(gca,'Xtick',[1 2 3 4 5 6]);
•set(gca,'XtickLabel',['ene';'feb';'mar';'abr';'may';'jun']);
15/05/2011
Otras Funciones para Graficar
•» x=[1 3 5 9 1 1 6 8 2 3 6 1 2 9 3 4 9 8];
•» hist(x)
•» figure
•» bar(x)
•Interprete los resultados.
15/05/2011
Practica
•Ejecute el siguiente código:
•>> x = 0:0.05:6; y = sin(pi*x); Y =
(y>=0).*y;
•>> plot(x,y,':',x,Y,'-' )
•Interprete los resultados.