Anda di halaman 1dari 240

Introduccin a MATLAB

para Ingenieros
Ing. Jos Crdova Garca
Capacitacin en MATLAB
Cursos Anteriores:
MATLAB.
MATLAB Aplicado a la Ingeniera.
Nuevo curso:
Introduccin a MATLAB para Ingenieros.
Cursos especializados.
Contenido
Introduccin.
Vectores/Matrices.
Funciones.
Cadenas de Texto.
Graficas 2D.
Graficas 3D.
GUI y GUIDE.




Scripts y Funciones.
Estructuras de
Control.
Celdas.
Aplicaciones.
Excel.
Data Acquisition.
Presentacin del Curso.
Perfil de los participantes:
Nombre
Estudios.
Expectativas del curso
Conocimientos de:
MATLAB
Programacin Estructurada
Competencias a adquirir al finalizar el Curso.
Evaluacin del Curso
Para obtener el CERTIFICADO DE APROBACION
del curso necesita obtener por lo menos el 70% de
calificacin.
50% Evaluacin Terica a mitad del contenido del curso
(opcional).
50%/100% Evaluacin del desempeo Grupal
(Asistencia) y Proyecto final.
Para obtener el CERTIFICADO DE ASISTENCIA al
curso usted necesita tener por lo menos el 70% de
asistencias del total de horas impartidas del curso.

Formato del Curso
Practicas Guiadas y Hands-on.
10 Sesiones Planificadas de ~ 2 horas y
media de duracin.
La asistencia se considera solo al completar
la practica.
Poltica de Examen y Ejemplo.
Fecha de Entrega de Certificados.
MATLAB
Introduccion
Que es MATLAB
Lenguaje de Programacin.
Alto Rendimiento.
Computacin Tcnica.
Computacin, Visualizacin y Programacin.
Problemas y soluciones en notacin
Matemtica (de Matrices).
Aplicaciones?
Matemticas y Computacin.
Desarrollo y Test de algoritmos.
Modelado, Simulacin y Prototipos.
Anlisis de Datos, exploracin y
visualizacin.
Grficas de Ingeniera y Cientficas.
Desarrollo de Aplicaciones finales (GUI)
Aplicaciones?
MATLAB?
Matrix Laboratory (Laboratorio de Matrices).
Elemento bsico: [Matriz] (en adelante
Arreglo) que no requiere dimensin.
Problemas que involucran matrices y
vectores son consumidores de tiempo (C,
C++, Fortran, etc.)

Entorno de Trabajo
Abra MATLAB.
Identifique:
Ventana de Comandos.
Historial de Comandos.
Directorio Actual.
Espacio de Trabajo.
Barra de Mens.
MATLAB como Calculadora
Desde la ventana de comandos ingrese:
>> 2 + 3/4*5
Verifique la respuesta de MATLAB.
Verifique el workspace.
Nmeros
Por defecto se usa la notacin decimal
convencional.
La letra e se usa para definir notacin
cientfica (x10).
Los nmeros imaginarios se definen usando
las letras i y j.

Nmeros
Los nmeros tienen una precisin de 16
dgitos significativos decimales y un rango
entre 10
-308
y 10
+308
.
Todas las operaciones en MATLAB se
realizan en precisin doble.
El formato es la manera en como se
muestran los valores

Formato
Usando el comando format:

Variables
La variable ANS es bsica en MATLAB.
Ejecute:
>> 3-2^4
Verifique el resultado almacenado en ANS.
Ejecute:
>> ans*5
Verifique el uso de variables y resultado.
Variables
Las variables no requieren de una
declaracin de tipo o tamao.
>>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.
Variables
Las variables tienen un limite de tamao de
nombre de 31 caracteres.
Deben empezar con una letra SIEMPRE.
NO deben contener caracteres especiales,
salvo el underscore _
Las letras i y j
i y j estan reservadas para definir
numeros complejos.
>>i
>>i=20
>>i
Verifique el comportamiento de i
Otras palabras reservadas
pi 3.14159265...
i unidad imaginaria
realmin el nmero ms pequeo, 2
-1022
realmax el nmero ms grande, 2
1023
Inf infinito
Comandos de manejo de Sesin
clc
clear
clear var1, var2
exist(nombre)
quit
who
whos
MATLAB
Vectores
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.


Vectores Fila
Puede haber problemas con los espacios.
Ejecute:
v2 = [3+ 4 5]
Verifique el comportamiento
Ejecute:
v3 = [3 +4 5]
Verifique el comportamiento
Operaciones Vectores Fila
Deben tener la misma dimensin para la
suma.
>> v + v3
Pueden multiplicarse por un escalar.
>> v4 = 3*v
Pruebe: >> v + v2



Definicin 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) ;; sort() es ordenar
Verifique el comportamiento.
Indice en Vectores Fila
Se puede recuperar (ver) el valor de un
componente de un vector o cambiarlo
haciendo uso de un indice.
El indice se define con el nombre de variable
del vector y con los parntesis para acceder
a la posicin del elemento a cambiar/ver.
>> w(2) = -2, w(3)

El operador :
Ejecute:
>>1:10
Verifique el resultado.
Cual es la funcin del operador :?
De manera general a : b : c produce un
vector con valor inicial a, valor final c e
incrementos de b.

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 sera el resultado de?
r5(6:-2:1)
Vectores Columna
Vectores que se ven como columna.
Se definen usando ;
Pruebe:
>> c = [ 1; 3; sqrt(5)]
>> c2 = [3
4
5]
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.
Producto de Vectores
Multiplicacin de Vector Fila x Columna
>> u = [ 10, -11, 12], v = [20; -21; -22]
>> prod = u*v
Es una multiplicacin Matricial!.
>> w = [2, 1, 3], z = [7; 6; 5]
>> u*w
Verifique ambos ejemplos.
Norma de un Vector
El siguiente muestra dos maneras de
obtener la norma (distancia euclidiana) de
un vector:
>> [ sqrt(u*u'), norm(u)]

El operador .
Corresponde al producto Hadamard.
Trabaja sobre vectores del mismo tipo (fila o
columna).
>> u.*v'
Tabulemos la funcin para


El operador .
Se puede usar tambin para la divisin:
>> a = 1:5, b = 6:10, a./b
>> a./a
>> c = -2:2, a./c
>> a.*b -24, ans./c
Verifique el resultado.
MATLAB
Matrices
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

Manejo de Subindices
Subindices ser la manera de acceder a un
elemento de una matriz.
Usa los parentesis y el nombre de la
variable.
>>A(1,4)
Verifique el resultado y la relacin con A.
El operador :
>>A(1:4,4)
Verifique el resultado.
Ejecute:
>>A(:,4)
Verifique el resultado?
Cual es la funcin del operador :
manejando subindices?
El operador :
Se puede utilizar el operador : para generar
matrices:
>> D = [1:5; 6:10; 11:2:20]
Verifique el resultado anterior.
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.

Tamao de Matrices
El comando size nos devuelve la dimensin
de la matriz que se usa como parametro.
>> size(A)
>> size(ans)
El ultimo comando muestra que el valor
retornado por size es en si mismo una matriz
de 1x2.


Tamao de Matrices
Tambin 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 tambin los tipos de dato (arreglo)
de dichas variables.
Matrices Especiales
MATLAB provee algunas funciones propias
de un tamao 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)
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.
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)

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.

Construccin de Matrices
A veces es necesario generar matrices
grandes a partir de otras mas pequeas (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.
Construccin de Matrices
Se pueden construir matrices usando
tambin 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

El operador end
Indica el ultimo elemento.
Ejemplo:



Verifique el resultado.
MATLAB
Comandos y Funciones tiles
Expresiones
Expresiones Matemticas elementales:
>> help elfun
Expresiones Matemticas especiales:
>>help specfun
Expresiones de Matrices elementales:
>>help elmat
Nmeros Aleatorios
Para generalos usamos las funciones:
rand, randn, randint.
Verifique el uso de:
>> rand(2)
>> randn(2)
>> randint(2,2,[-4 4])
Suma de Elementos
Se utiliza el comando sum.
Genere un matriz para probar los siguientes
comandos:


Manejo de valores
Se manejan complejos automaticos:
>> c=15+sqrt(-1)
Y valores excepcin correctamente:
>> a=123/0
>> b=0/0
>> Inf-Inf
Residue
La funcin residue, descompone el cociente
de una fraccin en fracciones parciales.
Teniendo un cociente de la forma:


La funcin es:
>>[r,p,k] = residue(b,a)

Residue
Entrega los resultados para:


Descomponga:
Residue
En fracciones parciales:
>> b=[1 1 1 2];
>> a=[1 0 3 0 2];
>> [r,p,k]=residue(b,a)
El resultado ser:
Sistema Lineal
Use representacin en MATLAB para
resolver un sistema lineal del tipo:

Mostrar y Pedir datos
La funcin INPUT imprime un mensaje en la
ventana de comandos y devuelve el
resultado de una expresin teclada por el
usuario.
INPUT espera hasta que el usuario ingrese
un valor numrico o una expresin
Mostrar y Pedir datos
Cualquier expresin vlida de MATLAB es
aceptada por INPUT.
>> edad = input(Ingrese la edad: ')
En el caso que sea una cadena de texto es
recomendable:
>> nombre = input('Cmo te llamas?','s')


Mostrar y Pedir datos
La funcin 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)


MATLAB
Scripts y Funciones
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 ambito
GLOBAL.
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.
Scripts
El nombre del script no debera interferir con
alguna funcin o con una variable (error
comun).
Los comentarios en MATLAB se generan
con el smbolo %:
>> %Esto es un comentario
Script de Ejemplo
Funciones
Son user-defined a diferencia de las built-
in, tambin escritas en .m.
Las buit-in tambin son llamadas funciones
de llamada.
Las user-defined son llamadas funciones de
definicin.
SIEMPRE reciben parametros para realizar
los calculos.
Funciones
Los comandos dentro de las funciones
operan sobre los parmetros.
Las variables y resultados son de ambito
LOCAL.
Los .m de funciones deben encontrarse en
el directorio actual para poder ser llamadas.
Funciones
Luego de ser creadas y siempre que
estemos en el directorio actual donde esta
contenido el .m de la funcin de definicin,
entonces la funcin se convertir en de
llamada.
Tambin se puede agregar funciones de
definicin a MATLAB.
Funciones
El nombre de la funcin no DEBERIA
interferir con alguno de una buit-in, ni de
otra variable (error comn).
El nombre del archivo .m conteniendo a la
definicin de la funcin DEBE ser igual al
nombre de la funcin.

Funciones
La primera linea del archivo debe tener el
formato:


Luego de esta linea se puede documentar la
funcin usando comentarios.

Ejemplo Funciones




Escriba desde la ventana de comandos:
>> help med_des
Scripts vs. Funciones
MATLAB
Otros Tipos de Datos
Tipos de Datos
Tipos de Datos

Nos devuelve el tipo de dato de x.
Tambien existen comandos que nos dan
informacin lgica sobre cada tipo:
isinteger(x), isfloat(x), ischar(x), islogical(x),
iscell(x), isstruct(x).
isempty(x), isnan(x), isinf(x).
Tipos de Datos
El tipo de Dato entero corresponde:



El tipo de Dato float corresponde:

Conversin de Tipo
Para convertir se usa el nombre del tipo a
generar como si fuera funcin:
>> a = 522.08
>> int8(a)
>> int16(a)
Verifique el redondeo.
Funciones de Redondeo
round: redondea al entero mas proximo.
floor: redondea a inf.
ceil: redondea a +inf.
fix: redondea hacia cero.


Funciones de Redondeo
>> x = pi*(-1:3), round(x)
>> fix(x)
>> floor(x)
>> ceil(x)
>> sign(x), rem(x,3)

Caracteres, Cadenas y Texto
MATLAB maneja el tipo Carcter.
Una cadena es un vector de caracteres.
Un Texto es una matriz de caracteres.
>> t1 = 'A'
Asigna el valor de A al arreglo de carcter
1x1 t1.
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]
Acceso de Cadenas
El direccionamiento funciona como en
vectores:
Construccin 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.'

Construccin 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 lnea siguiente.
Cadenas y Nmeros
Todo carcter tiene un equivalente en valor
numrico.
str2num convierte una cadena a su
correspondiente representacin numrica.
int2str y num2str convierte
respectivamente un entero y un numero real
a su correspondiente cadena de caracteres.
Cadenas y Nmeros
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)]


Manejo de Cadenas
El operador == realiza comparaciones entre
vectores (elemento a elemento)

Manejo de Cadenas
MATLAB
Grficas
PLOT
La funcin PLOT realiza grficos con por lo
menos un parmetro.
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:
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)

PLOT y Muestreo
Para graficar para el rango [0,1] se
muestrea la funcin a un numero
suficientemente grande de puntos y luego se
los une con lneas rectas.
Para tomar N+1 puntos igualmente
espaciados a una distancia h:
>> N = 10; h = 1/N; x = 0:h:1;
PLOT y Muestreo
Se define el conjunto:
>> y = sin(3*pi*x);
>> plot(x,y)
Verifique el grfico e identifique que el
numero N es muy pequeo aun.
Cambie N=100 y verifique el resultado.
PLOT y Muestreo
El seno es una funcin continua.
MATLAB trabaja con datos discretos.
PLOT realiza una interpolacin lineal entre
esos datos para graficar.
Mayor cantidad de puntos (muestras) harn
que la grfica sea practicamente continua.
Propiedades de un PLOT
>>xlabel('x = 0:2\pi')
>>ylabel('Seno de x')
>>title('Grfica de la funcin
seno','FontSize',12)
PLOTs con Estilo
Plot puede recibir un tercer argumento.
Tercer argumento es una cadena que recibe
como primer carcter el color y segundo el
estilo de linea.

PLOTs con Estilo
La cadena recibe hasta 3 caracteres:
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)')
PLOT y el GCA
Cada llamado de la funcin PLOT es una
peticin para crear un nuevo eje (axis
ventana donde se contiene el grfico).
Cada llamado de PLOT entonces
reemplazar la grfica anterior.
>>hold on
Mantiene el grfico actual en el eje actual.
PLOT y el HOLD
Se puede llamar muchas veces a PLOT pero
no se reemplazar el grfico hasta que
exista un:
>>hold off
Comparar con lo aprendido en Varios
Grficos en un PLOT.
AXIS
La funcin/comando axis ajusta los ejes del
grfico actual. Tiene esta sintaxis:
>>axis([xmin xmax ymin ymax])
Cuando se crea un plot y no se ha definido
axis entonces el axis es automatico:
>>axis auto
AXIS
Pruebe estos valores para axis e identifique
el efecto:
>>axis square
>>axis equal
>>grid on
>>grid off
Resumen
Practica

SUBPLOT
Divide la ventana de graficos en un arreglo
mxn en donde se pueden plotear mxn
grficos.
Se enumeran de izquierda a derecha, de
arriba hacia abajo.
subplot(221) (o subplot(2,2,1)) indica que se
divide en 2x2 grficos y selecciona el 1
subgrfico.

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')

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.

Figuras, Ejes y Panel
Cuando se ha ejecutado el comando PLOT
se crea (abre) una nueva ventana que
puede recibir graficos (ejes).
El comando figure crea una ventana
adicional y la convierte en la actual, lo que
significa que si ejecutamos un comando
relacionado a graficos (plot) usara la
ventana actual para graficarlo.

Figuras, Ejes y Panel
El comando close cierra la ventana actual y
el comando close all cierra todos los
graficos.
Se pueden tener tambien varias graficas
sobre la misma ventana.
La funcion hold permite montar los graficos
de una misma ventana actual.

Setear Propiedades a un Plot
Todas las propiedades de cada objeto del
grfico (figura, ejes, elemento grfico,...)
estn guardadas en "handles
gcf current figure, gca current axis
get(handle) muestra todos las propiedades
que se pueden cambiar.
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';'ma
y';'jun']);



Funciones para Graficar
Funciones para graficar en 2D
bar Grfica de barra
fill Dibujo de polgono en 2D relleno
hist Histograma
image Imagen
loglog Grfica con ambos ejes en escala logartmica
plot Grfica simple
polar Grfica en coordenadas polares
semilogx Grfica con eje x en escala logartmica
semilogy Grfica con eje y en escala logartmica
stairs Grfica de escalera
stem Grfica de secuencia discreta
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.

Otras Maneras de Graficar
Otras Maneras de Graficar
Practica
Ejecute el siguiente cdigo:
>> x = 0:0.05:6; y = sin(pi*x); Y = (y>=0).*y;
>> plot(x,y,':',x,Y,'-' )
Interprete los resultados.
Practica
Grafique en un solo panel:



Para el rango de [0,10].
Practica
MATLAB
Estructuras de Control
Estructuras de Control
Se basan en evaluar una expresin si es
verdadera o falsa (1/0).
Estas expresiones son resultados de
operaciones con:
<(menor que), >(mayor que), == (igual a), <=
(menor o igual que), >= (mayor o igual que)
y ~= (distinto a).

Seleccin: IF
Evala una condicin lgica y si dicha
expresin evala un resultado POSITIVO (1)
entonces selecciona ejecutar un grupo de
instrucciones, sino evala otro grupo.

Seleccin: IF
if expr1
comandos_matlab
elseif expr2
otro_comandos_matlab
...
else
aun_otros_comandos_matlab
end
Seleccin: IF
t = rand(1)
if t >0.5
disp(valor es mayor que 0.5)
elseif t <0.25
disp(valor es menor que 0.25)
else
disp(valor est entre 0.25 y 0.5)
end
Repeticin: Lazos
El uso de lazos es o debera ser MUY
LIMITADO en MATLAB por el uso del
operador :.
Los lazos son grandes consumidores de
tiempo.
Tareas de optimizacin regularmente se
encargan de evitar los lazos.
Repeticin: Lazo For
Se recomienda para: Repetir la ejecucin de
comandos por un nmero definido de veces.
for variable = expresin
comandos_matlab
end
expresin debe definir el nmero de veces
que se ejecutan los comandos, variable
controla ese numero de repeticiones.

Repeticin: Lazo For
Imprimir el cuadrado de los 5 primeros
numeros naturales:
for i=[1, 2, 3, 4, 5]
disp(i^2)
end
Notar que el for anterior tambien pudo ser
escrito asi: for i=1:5

Repeticin: Lazo For
Imprimir el cuadrado de los nmeros
decimales de una cifra decimal de 0 a 1, en
forma decreciente, es decir empezando por
1, 0.9, 0.8, ... 0.1, 0:
for i=1:-0.1:0
disp(i^2)
end

Repeticin: Lazo For
Uso de Matriz para asignar valores
matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4]
for x = matriz
x
end

Repeticin: Lazo For
Creacin de subplots usando FOR.
>> x = -1:.05:1;
>> for n = 1:8
>> subplot(4,2,n), plot(x,sin(n*pi*x))
>> end

Repeticin: Lazo While
Se usa regularmente cuando no se conoce
en primera instancia cuantas repeticiones se
deben ejecutar.
Las repeticiones dependern de la expresin
condicional que se evala.
MIENTRAS se cumpla sigue la repeticin.
Repeticin: Lazo While
while expresin
comandos_matlab
end

Repeticin: Lazo While
Imprimir el valor de x, mientras este sea
positivo, decrementando cada vez x en 17:
x = 100
while x >0
disp(x)
x = x - 17;
end
MATLAB
Comandos y Funciones tiles II
Construccin de Vectores
Construccin de Vectores
x = [1 3 9 33 0 -2] Se crea vector fila x con los elementos
especificados
x = primero:ltimo Se crea vector fila x comenzando con
primero, aumentando en intervalos de
uno, terminando en o antes de ltimo
x = primero:incremento:ltimo Se crea vector fila x comenzando con
primero, aumentando en intervalos de
incremento, terminando en o antes de
ltimo
x = linspace(primero,ltimo,n) Se crea vector fila x comenzando con
primero, terminando en ltimo,
teniendo n elementos
x = logspace(primero,ltimo,n) Se crea vector fila x espaciado
logartmicamente comenzando con
10
primero
, terminando en 10
ltimo
, teniendo
n elementos
Maximo y Minimo
La funcin max opera sobre un vector
retornando el valor mximo.
>> x = [1.3 -2.4 0 2.3], max(x), max(abs(x))
>> [m, j] = max(x)
Cuando tomamos 2 resultados de max, que
representa el 2do. Resultado?

Maximo y Minimo
La funcin min opera d emanera similar a
max.
En el caso de que A sea una matriz max(A)
retorna un vector conteniendo el mximo
elemento de cada columna (similar al
comportamiento de sum).
Busqueda en vectores
El comando find devuelve una lista con las
posiciones de los elementos de un vector
que satisfacen una determinada condicin.
>> x = -1:.05:1;
>> y = sin(3*pi*x).*exp(-x.^2); plot(x,y,':')
>> k = find(y > 0.2)
Verifique el contenido de k e interpretelo.

Busqueda en Vectores
Representacin grfica de la bsqueda:
>> hold on, plot(x(k),y(k),'o')
>> km = find( x>0.5 & y<0)
>> plot(x(km),y(km),'-')

Busqueda en matrices
Opera de manera muy similar en matrices:
>> A = [ -2 3 4 4; 0 5 -1 6; 6 8 0 1]
>> k = find(A==0)
Verifique e interprete el contenido de k.
Find en una matriz realmente primero
reordena (reshape) la matriz en un vector
para buscar.
Busqueda en matrices
A =
-2 3 4 4
0 5 -1 6
6 8 0 1

-2 0 6 3 5 8 4 -1 0 4 6 1
1 2 3 ...
Busqueda en matrices
Los indices del reordenamiento de la matriz
quedan:



>> n = find(A <= 0)
>> A(n)



Busqueda en matrices
n devuelve una lista de los lugares de las
entradas de A que cumplen ser menores
que cero, luego A(n) nos devuelve los
valores de los elementos seleccionados.

Polinomios
Los polinomios se definen en base a un
vector de coeficientes.
MATLAB es una herramienta de clculo
numerico.
Polinomios: Funciones
Se pueden realizar algunas funciones, como
obtener las raices del polinomio y tambin
evaluar el polinomio para un valor de x.
>> pol=[1 0 -8 6 -10]
>> roots(pol)
>> polyval(pol,1)

Polinomios: Funciones
Para realizar la multiplicacin entre
polinomios MATLAB usa el producto de
convolucin.
>> pol1=[1 -2 4]
>> pol2=[1 0 3 -4]
>> pol3=conv(pol1,pol2)

Hipermatrices
Matrices de mas de dos dimensiones.
El tercer subindice representa la tercera
dimensin: La profundidad de la
hipermatriz.

Manejo de Datos: Paginas
Se muestra a continuacin cmo organizar
las matrices x1 y x2 de 3x3 en dos pginas,
o sea en un arreglo x de 3x3x2. (La variable
x debe estar inicialmente vaca o no existir):
x1=[1 2 3; 4 5 6; 7 8 9]
x2=[10 20 30; 40 50 60; 70 80 90]
Hipermatrices
x(:,:,1)=x1;
x(:,:,2)=x2;
La informacin quedar organizada como se
muestra en la figura:

Hipermatrices
Creacin a partir de otras matrices de dos
dimensiones:
>> AA(:,:,1)=[1 2 3; 4 5 6]
>> AA(:,:,2)=[2 3 4; 5 6 7]
Las funciones comunes para uso con
matrices, tambin pueden manejar
hipermatrices.

Hipermatrices
>> BB=randn(2,3,2)
Verifique el resultado como MATLAB
muestra el contenido de las hipermatrices
pequeas.
>> A=zeros(2,3); B=ones(2,3);
Por su naturaleza la concatenacin se
realiza a traves de funciones.

Hipermatrices
La funcin cat concatena arreglos.
Recibe 3 parametros el primero es la
dimensin a lo largo de la cual concatenar
2 matrices pasadas como parametros.
CAT(2,A,B) is the same as [A,B].
CAT(1,A,B) is the same as [A;B].
Hipermatrices
>> cat(1,A,B)
>> cat(2,A,B)
>> cat(3,A,B)
Verifique como MATLAB arma la matriz
usando cat.

Hipermatrices
Tienen reglas especiales para usar
funciones con ellas.
Todas las funciones de MATLAB que operan
sobre escalares (sin(), cos(), etc.) se aplican
sobre hipermatrices elemento a elemento
(igual que sobre vectores y matrices).
Hipermatrices
Las funciones que operan sobre vectores
(sum(), max(), etc.) se aplican a matrices e
hipermatrices segn la primera dimensin,
resultando un array de una dimensin
inferior.
Hipermatrices
Las funciones matriciales propias del
lgebra Lineal (det(), inv(), etc.) no se
pueden aplicar a hipermatrices. Para
poderlas aplicar hay que extraer primero las
matrices correspondientes (por ejemplo, con
el operador dos puntos (:)).


Hipermatrices: Reshape
reshape(x, 3, 6)
ans =
1 2 3 10 20 30
4 5 6 40 50 60
7 8 9 70 80 90

Manejo de Datos
Matlab permite varias opciones para almacenar las
variables con las cuales se trabaja para su posterior
utilizacin. En todos los casos el comando es save.
Para guardar archivos con cdigo ASCII. La sintaxis
es:
save <nombre del archivo> <variables> -ascii
Todas las variables que se graben usando este
metodo deben tener la misma dimensin.

Manejo de Datos
Todas las variables que se graben usando
este metodo deben tener la misma
dimensin.

Manejo de Datos
Para guardar datos en formato binario:
save <nombre del archivo> <variables>
Las variables no necesariamente deben tener la
misma dimensin.
Se pueden generar archivos de datos para leer
desde MATLAB usando un editor de texto como el
Notepad, mantener la extensin .dat para identificar
que es un archivo de datos.

Manejo de Datos
Supongamos un fichero llamado datos.txt
que tiene, por ejemplo, dos columnas de
valores que son nmeros reales.
Para leer los datos del fichero:
[x1,x2] = textread(datos.txt,%f %f);
Manejo de Datos
Otra opcin ms:
load datos.txt -ascii
x1 = datos(:,1);
x2 = datos(:,2);

Manejo de Datos
Creando un archivo llamado flat.txt que
contenga las lneas:
23.456 56.032 67.802
3.749 -98.906 34.910
El comando A=load(flat.txt) leer estos
valores y los asignar a la matriz A.


MATLAB
Grficas 3D
Grficas en 3 Dimensiones
Tambin se basa en graficar puntos:
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
Esta grfica es paramtrica.
Un solo parmetro resulta en una grfica de
linea. Se extiende la etiqueta zlabel(texto)
Graficas en 3 Dimensiones
Se deben generar los valores a graficar,
estos deben ser una matriz.
Ejemplo:
>> z = peaks(10)
>> plot(z)
Graficas en 3 Dimensiones
>> mesh(z)
>> contour(z,10)
>> surf(z)
Se puede cambiar la vista desde la
ventana de comandos:
>> view(0,0)
>> view(90,0)



Superficies
Una superficie tambin se define
matemticamente con una funcin f(x,y).
Para cada valor de (x,y) se calcula la altura
de la funcin: z = f(x,y).
Para plotear esto debemos definir un rango
de x y de y para el grfico.

Superficies
Definiendo el dominio:
x = 2:0.5:4; y = 1:0.5:3;
Definido el dominio debemos definir la
grilla de valores que servirn de los puntos
(x,y) para graficar.
Esto es como relacionar x y y.
Superficies
>> [X,Y] = meshgrid(2:.5:4, 1:.5:3);
>> X
Si tomamos el i-esimo punto desde la
izquierda y el j-esimo punto desde debajo de
la grilla como el correspondiente (i,j) entrada
en una matriz, entonces (X(i,j),Y(i,j)) seran
las coordenadas de ese punto.

Superficies
Plotee la siguiente funcin:


>> [X,Y] = meshgrid(2:.2:4, 1:.2:3);
>> Z = (X-3).^2-(Y-2).^2;
>> mesh(X,Y,Z)
>> title(Silla'), xlabel('x'),ylabel('y')


Superficies
Grafique la siguiente superficie:



Encuentre los valores mximos de la
funcin.
Superficies
>> [X,Y] = meshgrid(-2:.1:2,-2:.2:2);
>> f = -X.*Y.*exp(-2*(X.^2+Y.^2));
>> figure (1)
>> mesh(X,Y,f), xlabel('x'), ylabel('y'), grid
>> figure (2), contour(X,Y,f)
>> xlabel('x'), ylabel('y'), grid, hold on

Superficies
Para encontrar los mximos:
>> fmax = max(max(f))
>> kmax = find(f==fmax)
>> Pos = [X(kmax), Y(kmax)]
>> plot(X(kmax),Y(kmax),'*')
>> text(X(kmax),Y(kmax),' Maximo')

Diferentes Dominios
x=[-20,-10,-5,-2,-1,0,1,2,5,10,20]/10;
y=x;
[X,Y]=meshgrid(x,y);
Z=cos(X)+cos(Y);
subplot(3,1,1)
surf(Z);
Diferentes Dominios
axis([0 11 0 11 0 2])
subplot(3,1,2)
surf(x,y,Z);
subplot(3,1,3)
surf(X,Y,Z);


Otros Graficos 3D
MATLAB
Estructuras y Celdas
Tipos de Datos
Estructuras
Permiten guardar valores de diferente tipo
de dato bajo un mismo nombre.
Organizan la informacin, siguen un modelo
de campo-valor.
El acceso a los elementos de cada una de
las claves se hace con .
Estructuras
>> punto.x=2
>> punto.y=3
>> punto.color='rojo
>> punto
Se pueden crear tambien vectores de
Estructuras:
>> punto(2).x=4, punto(2).y=5, punto(2).color='verde'
Estructuras
Verifique el direccionamiento:
>> punto(1), punto(2)
Y el direccionamiento de campos:
>> campo = x
>> punto.(campo)
Celdas (Cell Array)
Construye un arreglo donde cada elemento
puede ser de un tipo diferente.
>> c={12,'Red',magic(4)};
Verifique el contenido de c en el workspace
Se utilizan llaves { } en lugar de corchetes [ ]
o parntesis ( )

Celdas (Cell Array)
>> b{1}=12;
>> b{2}='Red';
>> b{3}=magic(4);
La diferencia con las estructuras es que se
accede a los valores utilizando un ndice en
lugar del nombre del campo.
Trabajar con estructuras es ineficiente

Celdas (Cell Array)
>> a{1,1} = 12;
>> a{1,2} = 'Red';
>> a{1,3} = magic(4);
>> a{2,1}=ones(3);
>> a{2,2}=43;
>> a{2,3}='texto';

Celdas (Cell Array)
Utilizando ( ) accede a un elemento, que es
tipo cell.
Utilizando { } accede al valor.
Verifique los tipos con:
class(a)
class(a(1,1))
class(a{1,1})
Conexin a EXCEL: Exportar Datos
xlswrite(Archivo', [12.7 5.02;-98 63.9])
d = {'Tiempo', 'Temp'; 12 98; 13 99; 14 97};
s = xlswrite(file.xls', d, 'Temperaturas', 'E1')
Verifique el resultado


Leer Datos
[tipo, hojas] = xlsfinfo(file.xls)
[ndata, headertext] = xlsread(file.xls', Hoja)
A = xlsread(file.xls', 1, 'A4:B5')


Exportar Datos
Cree un script que permita escribir este
archivo:
MATLAB
GUIDE
GUI
GUI (Graphical User Interface) es util para
presentar un desarrollo final.
Adhiere usabilidad al ajuste de parametros y
visualizacion de un programa
La elaboracin de GUI se puede realizar de
dos formas:
Cdigo a travs de un script
GUIDE que es la herramienta de diseo de
MatLAB.
GUIDE
Para iniciarla ejecute el comando guide en
MATLAB
Seleccione un GUI vacio
GUIDE
Obtendra un formulario en blanco al cual
puede agregar CONTROLES.
Se debe antes preparar un diseo de la GUI
Partes de la ventana GUIDE

Estructura Jerrquica de
controles
Ejemplo: PLOTTER
Se desea crear una GUI que realice un
PLOT de una funcion determinada.
Primero se ubican los controles basicos para
el programa del menu: axes, static text, edit
box, button.
Plotter
Controles Basicos
Axes: un espacio para dibujar.
Static text: texto que se adhiere a la
pantalla y el usuario no puede editarlo
Edit box: una caja blanca que el usuario
puede modificar
el contenido
Button: realiza una accion cuando el usuario
da click en el.

El Inspector de Propiedades
Cuando le dan doble click a un control,
muestra una ventana listando todas las
propiedades de ese control (fuente, posicion,
tamao, etc.).
Tag: el nombre del control en el codigo, es
mejor renombrarlo por algo identificable.
El Inspector de Propiedades
String: el texto que
aparece en el control.
ForegroundColor:
color del texto.
Background color:
color del control.

Ejecutando
Si presionan la flecha verde en la parte
superior del editor GUI se grabara el trabajo
actual y correra el programa. La primera vez
que lo corra preguntara el nombre del
programa.
Probar corriendo el programa. (que aun no
hace nada).
Ejecutando
Para agregar funcionalidad a la GUI se debe
definir un callback para el boton para que asi
grafique la funcion cuando se presione

Escribiendo Callbacks
Cuando se corra el programa, se crean 2
archivos:
.fig: contiene el esquema grafico de los
controles.
.m: contiene el codigo que define la funcin
callback para cada uno de los controles.
Escribiendo Callbacks
Generalmente no se edita el codigo de
inicializacion del .m.
Probablemente muchos callbacks de
controles se quedaran en blanco.
Se puede seleccionar el control y dar click
derecho para editar el Callback con la
opcin View Callback.

El Callback del botn
% --- Executes on button press in PlotButton.
function PlotButton_Callback(hObject, eventdata,
handles)
% hObject handle to PlotButton (see GCBO)
% eventdata reserved - to be defined in a future
version of MATLAB
% handles structure with handles and user data (see
GUIDATA)

El Callback del boton
Se pueden borrar los comentarios.
Cada funcion tiene el parametro handles.
Dicho parametro contiene todos los
controles: handles.PlotButton, handles.edit1,
etc
Se pueden agregar variables a handles para
hacerlas disponbiles en todos los
controles/funciones: handles.x=42;

Handles
Cada uno de los objetos de MATLAB tiene
un identificador nico (handle), a los cuales
se les llamar handle o id.
Los identificadores de la ventana activa, de
los ejes activos y del objeto activo se
pueden obtener respectivamente con los
comandos :
Handles
gcf (get current figure) devuelve un entero,
que es el handle de la ventana activa
gca (get current axes) devuelve el handle de
los ejes activos
gco (get current object) devuelve el handle del
objeto activo
delete(handle) borra el objeto correspondiente
y todos sus objetos que dependen de l.
Escribiendo Callbacks
Se puede obtener cualquier propiedad de un
control con la funcion GET. De manera
similar, se puede cambiar el valor de
cualquier propiedad con la funcin SET.
En este caso queremos OBTENER el String
escrito en el edit box y graficarlo.
Escribiendo Callbacks
function PlotButton_Callback(hObject, eventdata,
handles)
x = -10 : 0.1 : 10;
s = get(handles.functionEdit, 'String');
y = eval(s); %eval just evaluates the given string
handles.axes1; %Subsequent commands draw on
axes1.
plot(x, y);

Corriendo el programa
Cuando se modifica el codigo del m-file no
se tiene que volver a correr la GUI (solo se
ha modificado la funcionalidad).
Para correr el GUI se puede usar tambien
desde el command window el nombre de la
GUI como si fuera un script.

Otros controles
Slider bar: el usuario puede moverse
adelante y hacia atrs. La posicion actual es
dada por Value, el cual esta entre un Min y
un Max. El callback se activa en cualquier
momento que el slider es movido.
Check box: el usuario puede activar o
desactivarlo, similar al Radio Button.
Otros controles
Pop-up menu: el usuario puede seleccionar
de una lista de items. En la propiedad String,
se pueden tipear multiples lineas. La opcion
seleccionada actualmente esta dada por
Value.
Panel: un rectangulo para colocar controles,
util para organizar la GUI.

Practica:
Deber re-escribir 3 metodos callback para
la funcionalidad mostrada:
Usar funciones: get y set, conversion de
caracteres, operaciones matematicas, y para
salir muestre un mensaje (msgbox) diciendo
que va a salir del programa durante 3
segundos antes que se cierre (close).

Practica
MATLAB
DAQ
Toolbox: DAQ
El toolbox de Adquisicin de Datos (DAQ) le
permite al usuario capturar y/o generar
seales reales e interactuar con ellas desde
Matlab.
Un sistema de adquisicin de datos es un
conjunto de software y hardware que
permiten a un sistema digital conectarse al
mundo real.
Toolbox: DAQ
Un sistema de adquisicin de datos tpico
est formado de:
Sensores y actuadores
Hardware de adquisicin de datos
Hardware de acondicionamiento de seal
Computadora o procesador
Programa

Esquema de DAQ
Transductores y Hardware
A los sensores y actuadores tambin se les
conoce como transductores.
Transductor es aquel elemento que
convierte una seal de entrada de cierta
naturaleza en una seal de salida de otra
naturaleza.
Transductores y Hardware
Por ejemplo, un micrfono es un sensor que
convierte energa sonora (en forma de
presin) en energa elctrica, mientras que
una bocina es un actuador que convierte
una seal elctrica en una seal sonora.

Transductores y Hardware
El Hardware es el corazn de cualquier
sistema de adquisicin de datos. Su funcin
es convertir seales analgicas provenientes
del mundo real a seales digitales
(convertidores analgico a digital, ADC) y/o
convertir seales digitales a analgicas
(convertidores digital a analgico, DAC).

HW de acondicionamiento de la seal
Generalmente las seales de los sensores
son incompatibles con el hardware de
adquisicin de datos; para lograr la
compatibilidad se requiere acondicionar la
seal.
Por ejemplo, si la seal es muy pequea, es
necesario amplificarla; por el contrario, si la
seal es muy grande se requiere atenuarla.
HW de Acondicionamiento
Tambin es muy comn eliminar
componentes de frecuencias indeseables
que se encuentran presentes en la seal a
procesar. En el caso de las seales de
salida, generalmente estas son de baja
corriente y mediante hardware se les
amplifica y aumenta la corriente.

La computadora y el Software
La computadora proporciona un procesador,
un reloj, un bus para transferir datos y
espacio de memoria o disco para almacenar
datos.
El software de adquisicin de datos permite
intercambiar informacin entre la
computadora y el hardware.
La computadora y el Software
Por ejemplo, los programas tpicos permiten
configurar la tasa de muestreo de una tarjeta
de adquisicin de datos y adquirir un nmero
predefinido de muestras.

Toolbox de DAQ
El toolbox de adquisicin de datos se divide en
tres componentes principales:
Las funciones M establecidas
El motor de adquisicin de datos
Los manejadores (drivers) de la tarjeta de
adquisicin de datos (en este caso, la de
sonido)
DAQ y MATLAB
Adaptadores
Fabricante Nombre del adaptador
National Instruments nidaq
ComputerBoards cbi
Agilent Technologies hpel432
Tarjetas de sonido para Windows winsound
DAQ Bsico: IN
1. Creacin el dispositivo de objeto. Crear el
objeto del canal analgico de entrada ai
para la tarjeta de sonido
ai=analoginput(winsound)
2. Agregar canales. Agregar un canal de
hardware
addchannel(ai,1);
DAQ Bsico: IN
3. Configurar los valores correspondientes.
Configure la tasa de muestreo a 44.1 KHz y
capture un segundo de muestras (44100
muestras)
set(ai,'SampleRate',44100)
set(ai,'SamplesPerTrigger',44100)

DAQ Bsico: IN
4. Adquirir datos. Iniciar la adquisicin.
Cuando terminen de adquirir todos los datos,
ai automticamente detiene la ejecucin.
start(ai)

DAQ Basico: IN
data = getdata(ai);
plot(data)
5. Limpiar el espacio de trabajo. Una vez
que ya no se requiera utilizar ai, debe
eliminarse de la memoria y del espacio de
trabajo de Matlab.
delete(ai)
clear ai
DAQ Basico: OUT
1. Creacin el dispositivo de objeto. Crear el
objeto del canal analgico de salida ao para
la tarjeta de sonido
ao=analogoutput(winsound)
2. Agregar canales. Agregar un canal de
hardware a ao
addchannel(ao,1);
DAQ Bsico: OUT
3. Configurar los valores correspondientes.
Configure la tasa de muestreo a 44.1 KHz y
capture un segundo de muestras (44100
muestras)
set(ao,'SampleRate',44100)

DAQ Bsico: OUT
4. Sacar datos. Iniciar la adquisicin. Crear
un segundo de datos de salida y
almacenarlos para una eventual salida por el
subsistema de salida analgico. Debe
almacenarse una columna de datos para
cada canal aadido.
n=0:1:88200;
data = sin(2*pi*n*1000/44100);
putdata(ao,[data])
DAQ Bsico: OUT
Iniciar la salida. Cuando todos los datos
hayan salido, ao automticamente finaliza
la ejecucin.
start(ao)
Esta lnea bloquea la lnea de comando de
Matlab hasta que se detiene ao
while strcmp(ao.Running,'On')
end

Anda mungkin juga menyukai