Matlab Intro
Matlab Intro
Matlab Intro
Matlab
Objetivo
Presentar una introduccin a la programacin
con Matlab y el uso de su ambiente de desarrollo.
El alumno deber aprender las capacidades y
limitaciones de este lenguaje interpretado as
como comenzar su uso tanto en la plataforma de
desarrollo como en la implementacin de
programas en archivos .m
Al finalizar, el alumno deber ser capaz de
manejar con fluidez el conjunto de instrucciones
bsicas as como ser capaz de redactar y
depurar programas .m (scripts).
2
Matlab
El nombre MATLAB proviene de Matrix Laboratory.
El paquete de Matlab tiene un gran nmero de
funciones y toolboxes con los cuales se pueden
resolver una amplia variedad de problemas de
computo, especialmente aquellos relacionados con
operaciones matriciales y vectoriales.
En Matlab se pueden escribir programas en tan slo
una fraccin de tiempo de lo que costara un
desarrollo similar en otros lenguajes de programacin.
Grficos
MATLAB proporciona herramientas para presentar vectores y
matrices de manera grfica, as como para editarla e
imprimirlas. Incluye funciones que permiten modificar la
apariencia de las grficas as como desarrollar interfaces
grficas que interaccionen con el usuario.
Interfaces externas
La librera de interfaces externas permite enlazar rutinas de
MATLAB con programas escritos en C o Fortran.
Introduccin
Depurador
Set/Clear breakingpoint: Coloca o borra un punto de interrupcin
de programa en la lnea en que est colocado el cursor
Clear all breakingpoints:: Borra todos los puntos de interrupcin
Step: Avanza un paso en el programa
Step in: Avanza un paso en el programa y si en ese paso se llama
a una funcin, entra en dicha funcin
Step out: Avanza un paso en el programa y si en ese paso se
llama a una funcin, entra en dicha funcin
Continue: Continua ejecutando hasta el siguiente punto de ruptura
Quit debugging: Termina la ejecucin del depurador
Nmeros y operaciones
Datos numricos:
No hace falta definir variables enteras, reales, etc. como en otros lenguajes
Nmeros enteros: a=2
Nmeros reales: x=-35.2
Mximo de 19 cifras significativas
2.23e-3=2.23*10-3
Precisin y formatos: Por defecto tiene un formato corto, pero se pueden usar otros
>> format long (14 cifras significativas)
>> format short (5 cifras significativas)
>> format short e (notacin exponencial)
>> format long e (notacin exponencial)
>> format rat (aproximacin racional)
Variables
No se requiere que su tipo sea definido, MATLAB se
encarga
int a;
double b;
float c;
Example:
>>x=5;
>>x1=2;
Variables
Asignar
a = 3, b = 4
Listar
ans
who
whos
Eliminar
clear b
clear all
-99
9.6397238
6.02252e23
-3.14159j
Nmeros Complejos
Forma binmica
z = 3 + 4i
Mdulo y argumento
real(z)
abs(z)
imag(z)
angle(z)
Complejo conjugado
Representacin grfica
conj(z)
plot(z,'*')
compass(z)
Constantes y cadenas
Nmero :
pi
Formatos numricos
format long
format short
format rat
eps
Infinito:
Inf
Indeterminacin:
NaN
Cadenas de caracteres
'Esto es una cadena'
Esto no
Funciones
(x3+1)/x
help elfun
sin
cos
tan
exp
ezplot (x3+1)/x
asin
acos
atan
log
8
6
4
2
0
-2
-4
-6
-2
0
x
Vectores
Edicin
Normas
norm(v,2)
norm(v,1)
norm(v,inf)
u =
v =
w =
w =
2
3]
[1 2 3]
[1,2,3]
[1;2;3]
[1
Progresivos
0:0.1:10
linspace(0,1,11)
1
0.8
0.6
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
-1
-0.6
-0.2
0.2
0.6
Vectores y Matrices
> x = [1 2 5 1]
x=
1 2 5 1
> w = [1 2 3; 5 1 4; 3 2 -1]
w=
1
5
3
2
1
2
3
4
-1
Transpuesta y = x
y=
1
2
5
1
2
6
3
7
4
8
Concatenacin de Matrices
> x = [1 2], y = [4 5], z=[0 0]
> A=[x y]
1 2 4 5
> B = [x ; y]
12
45
> C = [x y ;z]
Error:
??? Error using ==> vertcat CAT arguments dimensions are not consistent.
u+v
de elementos sum(u)
Productos
Transpuesta: u'
Voltear
por escalar:
2*u
fliplr(x)
flipud(x')
escalar:
dot(u,v)
Funciones
elemental:
matricial:
u.*v
de elemtos
prod(u)
x = -1:0.01:1
y = tanh(x)
plot(x,y)
u*w, w*u
Matrices
Edicin
Bloques
A = [1,2;3,4]
M = [A,B;B,A]
B = [-1 -2
-3 -4]
Sub-matrices
Elemento: A(2,1)
Fila:
A(2,:)
Columna: A(:,1)
M41 = M(1:3,2:4)
fil = [1,2,4]
col = [1,3,4]
M32 = M(fil,col)
Determinante
Producto:
.*
det(A)
Potencia:
.^
Inversa
Cociente izq.: /
./
inv(A)
Cociente der.: \
.\
Rango
Transpuesta:
.'
rank(A)
'
(vect. independientes)
Arreglos multi-dimensionales
Una manera de crear arreglos multi-dimensionales es
a travs de las funciones :
zeros, ones, rand, o randn
con 1, 2 o ms argumentos.
E.g.:
R = randn(3,4,5);
crea un arreglo de 3-por-4-por-5 con un
total de 60 ( 3*4*5 ) elementos cuyos
valores estn aleatoriamente
distribuidos.
Matrices usuales
Identidad de orden n:
eye(n)
zeros(m,n)
Matriz de unos:
ones(m,n)
Matriz aleatoria:
rand(m,n)
Matriz de Hilbert:
hilb(n)
Arreglos multivariables
El elemento (i,j) se refiere a la observation # i de la variable j.
Weight
D = [ 72 134 3.2
81 201 3.5
69 156 7.1
82 148 2.4
75 170 1.2 ]
Ahora se pueden emplear funciones de anlisis de MATLAB
para este set de datos.
E.g.: mu = mean(D),
sigma = std(D)
mu
75.8
sigma = 5.6303
161.8
3.48
25.499
2.2107
Polinomios
p( x ) = x 5x + 343 x 7
2
3
Coeficientes
Valor de p en x:
polyval(p,x)
Races:
roots(p)
Multiplicacin:
conv(p,q)
[q,r] = deconv(p,d)
Grficos
MATLAB provee una variedad de herramientas para el
desplige y visualizacin grfica de los datos.
Permite al usuario manipular de manera interactiva
ciertos aspectos de los grficos, tales como, punto de
vista, escala, etc. de manera que permitan una mejor
visualizacin de la informacin
Los grficos tamben pueden ser editados, imprimidos
o exportdos a distintos formatos y paquetes de
cmputo.
1
0.8
0.6
0.4
0.2
En el ejemplo, el estilo de la
lnea se defini mediante:
Color:
r, b, g, c, k, y etc.
- -- : .-
0
-0.2
-0.4
-0.6
-0.8
-1
10
>> x = [0:0.1:2*pi];
>> y = sin(x);
>> plot(x, y, 'b*-')
1.5
1
>> hold on
0.5
sin(x)
2*sin(x)
0
-0.5
-1
-1.5
-2
3
x
Plotting data
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
10
10
12
0.8
0.6
>> x=linspace(0,4*pi,100);
>> y=sin(x);
>> plot(y)
0.4
0.2
0
-0.2
-0.4
-0.6
-0.8
-1
10
20
30
40
50
60
70
80
90
100
>> x=linspace(0,4*pi,100);
>> y=sin(x);
>> y1=exp(-x/3);
>> y2=y.*y1; % mult 1-a-1
>> plot(y2)
0
-0.1
-0.2
-0.3
10
20
30
40
50
60
70
80
90
100
Plot vs Stem
0.7
0.6
0.5
0.4
0.3
0.2
0.1
>> x=linspace(0,4*pi,100);
>> y=sin(x);
>> y1=exp(-x/3);
>> y2=y.*y1; % mult 1-a-1
>> plot(y)
>> plot(y2)
>> stem(y)
>> stem(y2)
0
-0.1
-0.2
-0.3
0
10
20
30
40
50
60
70
80
90
100
10
20
30
40
50
60
70
80
90
100
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
0
Display Facilities
0.7
0.6
plot(.)
0.5
0.4
0.3
Example:
>>x=linspace(0,4*pi,100);
>>y=sin(x);
>>plot(y)
>>plot(x,y)
stem(.)
0.2
0.1
0
-0.1
-0.2
-0.3
10
20
30
40
50
60
70
80
90
100
10
20
30
40
50
60
70
80
90
100
0.7
0.6
0.5
0.4
0.3
Example:
>>stem(y)
>>stem(x,y)
0.2
0.1
0
-0.1
-0.2
-0.3
ezplot
fplot
plot
60
0.75
0.5
150
30
0.25
Polares
polar
120
180
Paramtricas
plot
>> help graph2d
210
330
300
240
270
Opciones grficas 3D
Malla transparente
mesh(x,y,z), hidden off
Superficie color degradado sin malla
surf(x,y,z), shading interp
Mapa fsico
pcolor(x,y,z), hold on
contour(x,y,z,'k')
>> help graph3d
% k es negro
Opciones grficas 3D
E.g.: se trata de visualizar la funcin:
Opciones grficas 3D
E.g.:
Para la malla x,y
x = -3 a 3 y paso de 0.1
mientras tambin se define
y = -3 a 3 y paso de 0.1
>> [x,y] = meshgrid(-3:.1:3,-3:.1:3);
>> z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...
- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...
- 1/3*exp(-(x+1).^2 - y.^2);
>>> surf(z);
Operadores lgicos y
Control de flujo de programas
Operadores lgicos
Igual que: ==
Diferente que: ~=
>> r = results(:,1)
>> log_ind = r > 0.2
>> r(log_ind)
En el ejemplo, log_ind es un arreglo/matriz del mismo tamao que r
pero en lugar de valores contiene ceros (false) en aquellas
localidades que no cumplen con la condicin (i.e.: r > 0.2) y unos
(true) en las localidades correspondientes a donde s se cumple. A
esto se le conoce como vector lgico (Logical Vector).
Operadores Booleanos
Operadores Booleanos:
AND: &
OR: |
NOT: ~
OR
AND
NOT
Resultado
Resultado
~A
Operadores Booleanos
EJEMPLOS:
A=0
B = false C = 1
D=8
F=[0102
0 3 0 1]
Probar:
>>A & B
>>A & C
>>A & D
>>A | B
>>A | C
>>A | D
>> ~A
>> ~B
>> ~C
>> ~F
>> ~A&C
>> ~C & F
E = true
>>A & E
>>A | E
>> ~D
>>A & F
>>A | F
>> ~E
Operadores Booleanos
EJEMPLOS:
A=0
B = false
F=[0102
0 3 0 1]
C=1
D=8
>>A & B = 0
>>A & C = 0
>>A & F = [0 0 0 0 >>A | B = 0
0 0 0 0] >>A | D = 1
>>A | F = [0 1 0 1
>>A & E = 0
0 1 0 1]
E = true
>>A & D = 0
>>A | C = 1
>>A | E = 1
Operadores Booleanos
EJEMPLOS:
A=0
B = false
F=[0102
0 3 0 1]
C=1
D=8
E = true
>> ~A = 1
>> ~B = 1
>> ~C = 0
>> ~D = 0
>> ~E = 0
>> ~F =[1 0 1 0
>> ~A&C = 1 >> ~C & F = [0 0 0 0
1 0 1 0]
0 0 0 0]
** Para comparaciones matriciales, las operaciones
booleanas se realizan elemento-por elemento
Operadores Booleanos
Orden de precedencia:
Cuando se ejecutan mltiples operaciones lgicas al mismo
tiempo sin estar separadas por parntesis, la operacin de
negacin : ~ (NOT) se evala primero, seguida con la y
lgica : & (AND) y finalmente por la o lgica : | (OR)
A&B|C = (A&B) | C
A|B&C = A | (B&C)
A&~B|C = (A&(~B)) | C
A|~B&C = A | ((~B)&C)
Programacin en Matlab
Conditional Control
Loop Control
- for, while, continue, break
Error Control
- try, catch
Program Termination
- return
Expresiones condicionales
If, Else, and Elseif
if comparacin_logica
instrucciones
end
Expresiones condicionales
A=6
B=0
if A > 6
D = [1 2 6]
A=A+1
end
if A | B
E = mean(B)
end
Expresiones condicionales
If, Else, and Elseif
if comparacin_logica
primer set de instrucciones
else
segundo set de instrucciones
end
Expresiones condicionales
A=6
if A > 6
D = [1 2 6]
A=A+1
else
D = [ 0 0 0]
A=A-1
end
B=0
if A & B
E = mean(B)
else
E=0
end
Expresiones condicionales
If, Else, and Elseif
if comparacin_logica
primer set de instrucciones
elseif comparacin_lgica_2
segundo set de instrucciones
elseif comparacin_lgica_3
tercer set de instrucciones
end
Expresiones condicionales
A=6
B=0
if A > 3
D = [1 2 6]
A=A+1
elseif A > 2
D=D+1
A=A+2
end
** Ambas expresiones, la if y la elseif son
evaluadas cada vez.
Expresiones condicionales
switch
Expresiones condicionales
A=6
B=0
switch A
case 4
D = [ 0 0 0]
A=A-1
case 5
B=1
case 6
D = [1 2 6]
A=A+1
** Slo el caso 6 es evaluado
end
Ciclos
Los ciclos son una parte para el control de flujo de
programa permitiendo a MATLAB ejecutar
repetidamente una serie de instrucciones de
manera especfica y controlada
La repeticin de dichas inctrucciones se realiza
principalmente mediante dos tipos de ciclos:
1. Ciclos For
2. Ciclos While
Ciclos
FOR
for ndice=valor_inicial:incremento:valor_final
conjunto de instrucciones
end
** Si incremento no est especifcado,
MATLAB considerar ese valor = 1
Ciclos
FOR
for i = 1 : 1 : 100
x(i) = 0
end
Ciclos
FOR
Como en otros lenguajes de programacin, MATLAB permite
anidar varios ciclos en el cdigo.
A=[]
for i = 1:m
for j = 1:n
A(i,j) = i + j
end
end
Ciclos
WHILE
while expresin_lgica
conjunto de instrucciones
end
Ciclos
WHILE
A = 6; B = 15;
while A > 0 & B < 10
A=A+1
B=B-2
end
Ciclos
WHILE
A = 6; B = 15;
while A > 0 & B < 10
If A < 0
A=A+1
elseif B > 10
B=B2
end
end
Ciclos
WHILE
A = 6; B = 15;
while A > 0 & B < 10
If A < 0
A=A+1
elseif B > 10
B=B2
end
end
Ciclos
Finalizacin de ciclos
La expresin break es una instruccin que permite
terminar de manera inmediata la ejecucin de los ciclos
for y while
Cuando en el cdigo se encuentra un break, MATLAB
terminara dicho ciclo y sigue la ejecucin con la primera
instruccin que encuentre fuera de ste.
Ciclos
Finalizacin de ciclos
A = 6; B = 15;
count = 1
while A > 0 & B < 10
A=A+1
B=B2
count = count + 1
if count > 100
break
end
end
FUNCIONES
Funciones
Una funcin es una rutina que realiza operaciones con la
variable de entrada que se le pasan
function_name(input)
Funciones
El resultado de las funciones puede ser guardado a su
vez en una variable
Funciones
Para obtener ayuda sobre como usar la funcin se puede
usar las instrucciones help o lookfor
Funciones
MATLAB tiene integradas muchas funciones estadsticas
lo que facilita el anlisis de muchas operaciones y datos.
Funciones
Al pasar un vector, las funciones sum, mean, median,
std, etc. calcularn el resultado apartir de los datos
contenidos en l.
>> sum([1,2,3,4,5])
= 15
>> mean([1,2,3,4,5])
=3
Funciones
Para cambiar el sentido sobre el que se hacen las
operaciones se le debe indicar a MATLAB de la siguiente
manera:
>> function_Name(input, 2)
Funciones
De esta manera se
puede incluso aadir
los resultados a la
propia matriz.
E.g.: el promedio y la
desviacin estndar
Funciones especiales
pi
i or j
Inf
NaN
= 3.14159265.
= raiz cuadrada de -1 (imaginarios)
= infinito
= not a number
Variables globales
Si se requiere compartir el valor de una o ms
variables entre distintas funciones de un programa, la
variable deber declararse como variable global en
todas las funciones
E.g.:
function h = falling(t)
global GRAVITY
h = 1/2*GRAVITY*t.^2;
Scripts y Funciones
Existen dos tipos de archivos-M:
- Scripts, los cuales no aceptan argumentos de entrada
ni regresan resultados. Ellos operan con datos en el
espacio de trabajo. Cualquier variable que ellos creen
quedar respaldada en el espacio de trabajo y podr ser
empleada en subsecuentes operaciones.
- Funciones, son las rutinas que aceptan argumentos y
regresan resultados. En estos casos las variables
internas son locales a la funcin. Para el caso de querer
compartir ms resultados se usan las variables globales.
Uso de archivos .m
Presione para
crear un nuevo
archivo .m
Uso de archivos .m
Denem430.m
Si se incluye el ; al final
de cada lnea o instruccin
su resultado no ser
mostrado inmediatamente
Funciones propietarias
Las funciones son en realidad archivos .m los cuales pueden ser
ejecutados especificando ciertas entradas y salidas deseadas.
La instruccin para decirle a MATLAB que un archivo es en
realidad una funcin es:
function out1=nombre_funcin(in1)
function out1=nombre_funcin(in1,in2,in3)
function [out1,out2]=nombre_funcin(in1,in2)
Nota: Se debe escribir dicho comando al inico del archivo .m y
se debe salvar dicho archivo con el mismo nombre con el que
la funcin fue definida
Funciones propietarias
Para la funcin: out=squarer (A, ind)
Mismo nombre
Comentarios
Se utiliza el smbolo % para que el intrprete de
MATLAB omita cualquier texto despus de dicho
caracter dentro de esa lnea (equaivalente al uso de //
en lenguaje C).
En algunos casos es necesario disminuir la velocidad
de ejecucin de algunas instrucciones, para lo anterior
se puede usar la instruccin pause.
>> pause
% espera hasta que se presione una tecla
>> pause(3) % espera 3 segundos
Simulink
Used to model, analyze and simulate dynamic systems
using block diagrams.
Provides a graphical user interface for constructing block
diagram of a system therefore is easy to use.
However modeling a system is not necessarily easy !
Simulink
Simulink
i
Varies
from 0 to
2000 rad/s
100 uF
+
v(t) = 5 sin t
0.01 H
Simulink
10
100 uF
+
v(t) = 5 sin t
0.01 H
di 1
v = iR + L +
idt
dt C
Simulink
1 dv di R d i
i
=
+ 2+
L dt dt L dt
LC
Taking Laplace transform:
sV R
I
2
= sI + s I +
L
L
LC
sV
1
2 R
= I s + s +
L
L
LC
Simulink
s(1/ L )
I = V
R
1
2
s + s +
L
LC
s(1/ L)
R
1
2
s + s+
L
LC
Simulink
Simulink
simout
s+1
Sine Wave
Transfer Fcn
To Workspace
Simulink
s(1/ L)
R
1
2
s + s+
L
LC
s(100)
2
6
s + 1000s + 110
100s
s2+1000s+1e6
Sine Wave
Transfer Fcn
v
To Workspace1
i
To Workspace
Simulink
eg8_sim.mdl
Ramp
v
To Workspace3
w
To Workspace2
1
1000
Constant
s
Integrator
Dot Product3
100s
s2+1000s+1e6
sin
Elementary
Math
Dot Product2
Transfer Fcn1
i
To Workspace
Simulink
1
0.5
0
-0.5
-1
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
-5
Simulink
eg9_sim.mdl
5
Constant1
100s
2000
Constant
0.802
Slider
Gain
sin
s
Dot Product2
Integrator Elementary
M ath
s2+1000s+1e6
Scope
T ransfer Fcn
MATLAB
MATLAB Demos
Demos
Demonstrations
Demonstrations are
are
invaluable
invaluable since
since they
they
give
give an
an indication
indication of
of the
the
MATLAB
MATLAB capabilities.
capabilities.
A
A comprehensive
comprehensive set
set are
are
available
available by
by typing
typing the
the
command
command >>demo
>>demo in
in
MATLAB
MATLAB prompt.
prompt.
MATLAB
MATLAB Demos
Demos
MATLAB
MATLAB works
works with
with scalars,
scalars, vectors
vectors
and
and matrices:
matrices:
Basic
Basic matrix
matrix operations,
operations,
Inverses
Inverses of
of matrices,
matrices,
Graphs
Graphs of
of matrices,
matrices,
Matrix
Matrix manipulation,
manipulation,
Programming,
Programming, application
application development,
development,
and
and GUI
GUI design
design
MATLAB
MATLAB Demos
Demos
MATLAB
MATLAB has
has remarkable
remarkable
graphics
graphics capacities:
capacities:
2-D
2-D and
and 3-D
3-D plots,
plots,
Line
Line plotting,
plotting,
3-D
3-D surface
surface plot,
plot,
Splash
Splash screen
screen plot,
plot,
Plot
Plot of
of complex
complex functions
functions and
and ...
...
MATLAB
MATLAB Demos
Demos
MATLAB
MATLAB has
has remarkable
remarkable graphics
graphics
capacities,
capacities, 3_D
3_D plots
plots are
are some
some of
of
them:
them:
3-D
3-D plots
plots in
in Handel
Handel Graphics
Graphics
Plot
Plot Type,
Type,
Shading,
Shading,
Colomap,
Colomap,
Axis
Axis and
and ...
...
MATLAB
MATLAB Demos
Demos
MATLAB
MATLAB has
has remarkable
remarkable graphics
graphics
capacities,
capacities, gallery
gallery is
is one
one of
of them:
them:
The
The Gallery
Gallery is
is aa place
place to
to hang
hang particularly
particularly
elegant
elegant examples
examples of
of graphics
graphics visualization
visualization in
in
MATLAB.
MATLAB.
Knot,
Knot,
Quiver,
Quiver,
Klein
Klein II,
II,
Cruller
Cruller and
and ...
...
MATLAB
MATLAB Demos
Demos
MATLAB
MATLAB has
has many
many toolboxes:
toolboxes:
Control
Control toolbox
toolbox is
is one
one of
of the
the
important
important toolbox
toolbox in
in MATLAB.
MATLAB.
RLC
RLC Circuit
Circuit Response,
Response,
Gain
Gain and
and Phase
Phase Margins,
Margins,
Notch
Notch Filter
Filter Discrete,
Discrete,
PID
PID and
and ...
...
MATLAB
MATLAB Demos
Demos
MATLAB
MATLAB has
has many
many toolboxes:
toolboxes:
Signal
Signal Processing
Processing toolbox
toolbox is
is one
one of
of the
the
important
important toolobx
toolobx in
in MATLAB.
MATLAB.
Designing
Designing Filter,
Filter,
Filtering
Filtering aa Signal,
Signal,
Discrete
Discrete and
and Continuous
Continuous Fourier
Fourier
Transform,
Transform,
Spectral
Spectral Analysis
Analysis and
and ...
...
MATLAB
MATLAB Demos
Demos
Simulink
Simulink has
has the
the ability
ability to
to simulate
simulate
aa large
large range
range of
of systems,
systems, from
from very
very
simple
simple to
to extraordinarily
extraordinarily complex.
complex.
The
The Model
Model and
and demonstrations
demonstrations that
that
you
you will
will see
see in
in this
this section
section include
include
both
both simple
simple and
and complex
complex systems.
systems.
MATLAB
MATLAB Demos
Demos
Simulink
Simulink has
has the
the ability
ability to
to simulate
simulate aa
large
large range
range of
of systems,
systems, in
in the
the menu
menu
of
of Simulation
Simulation we
we have:
have:
Pause.
Pause.
Stop,
Stop,
Simulation
Simulation Parameters,
Parameters,
Start,
Start,