Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Matlab Intro

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 127

Introduccin a

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.

Matlab se compone de:


Herramientas de escritorio y ambiente de
desarrollo
Incluye el escritorio de MATLAB y la ventana de
comandos, un editor y depurador, un analizador de
cdigo, navegadores para revisar la ayuda, y un
sistema de administracin de archivos entre otras
herramientas.

Librera de funciones Matemticas


Amplia coleccin de algoritmos de cmputo que van desde
lo ms elementales como seno y coseno, hasta las
funciones ms sofisticadas como inversin de matrices,
matriz de eigenvalores, funciones de Bessel y
transformada rpida de Fourier.

Matlab se compone de:


El Lenguaje
El lenguaje de MATLAB es de alto nivel con funciones de
control de flujo de programa, funciones, estructuras de datos,
entradas, salidas y soporte para programacin orientada a
objetos.

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.

Ventana principal de Matlab

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)

Ver en men de File: Preferences Command Windows

Preferencias (en el men de File)

Variables
No se requiere que su tipo sea definido, MATLAB se
encarga

int a;
double b;
float c;

Todas las variables al crearse se definen de doble


presicin a menos que se especifique lo contrario.

Example:
>>x=5;
>>x1=2;

Las variables son consideradas por MATLAB como


matrices de 1x1

Variables
Asignar

a = 3, b = 4

Listar

ans
who
whos

Eliminar

clear b
clear all

Ejemplo de nmeros vlidos:


3
0.0001
1.60210e-20
1i
3e5i

-99
9.6397238
6.02252e23
-3.14159j

Nmeros Complejos
Forma binmica
z = 3 + 4i

Parte real e imaginaria

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

Unidad imaginaria: i,j


Precisin:

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

Intervalos en Vectores y Matrices


> t =1:10
t=
1 2 3 4 5 6 7 8 9 10
> k =2:-0.5:-1
k=
2 1.5 1 0.5 0 -0.5 -1
> x = [1:4; 5:8]
x=
1
5

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.

Operaciones con vectores


Suma:

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)

Operaciones con matrices


Suma y resta: +

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)

Nula de tamao mn:

zeros(m,n)

Matriz de unos:

ones(m,n)

Matriz aleatoria:

rand(m,n)

Matriz de Hilbert:

hilb(n)

Matriz de van der Monde: vander(x)

Copiado de datos desde Excel


El editor de variables/arreglos de MATLAB permite copiar
datos directamente desde una hoja de Excel.

1) En Excel seleccione los datos y presione la opcin de copiar


2) Haga doble click en la variable donde desee guardar los datos
Esta accin abrir el editor de arreglos de MATLAB
3) Dentro del Editor haga click derecho en el primer elemento y
seleccione Paste Excel Data

Copiado de datos desde Excel

Arreglos multivariables
El elemento (i,j) se refiere a la observation # i de la variable j.

E.g.: Heart rate

Weight

Hours exercise per week

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

p=[2/3 -5 34/3 -7]

Valor de p en x:

polyval(p,x)

Races:

roots(p)

Multiplicacin:

conv(p,q)

Divisin con resto:

[q,r] = deconv(p,d)

Respaldando o cargando a archivo


Las variables que se encuentran en el entorno de trabajo
pueden ser salvadas o recuperadas de archivo mediante las
instrucciones save y load

MATLAB respaldar los datos o los tomar de archivos


listados en la ruta proporcionada o del actual directorio

Para respaldar use:


>> save File_Name [variable variable ]
Para cargar use
>> load File_Name [variable variable ]

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.

Grficos: Funciones bsicas


Es posible imprimir directamente vectores
plot(nombre_del_vector)
En este caso se imprime el valor del vector contra su ndice.
Para el caso de que se tengan 2 vectores
plot(x,y)
Produce una grfica de y (dependiente) vs x (independiente).
Para el etiquetado de los ejes y la propia grfica se cuenta con:
xlabel, ylabel, y title
E.g.:
xlabel('x = 0:2\pi')
ylabel('Seno de x')
title('Grfica de la funcin Seno','FontSize',12)

Grficos: Funciones bsicas


>> x = [0:0.1:2*pi]
>> y = sin(x)
>> plot(x, y, r.-)

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.

Marcador: . + * x o > etc.


Linea:

- -- : .-

>> help plot enlista todas las


opciones

0
-0.2
-0.4
-0.6
-0.8
-1

Grficos: Funciones bsicas


Graficas de matrices
MATLAB considera cada columna como un set de datos distinto
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

10

Grficos: Funciones bsicas


Multiples pares de argumentos x-y se pueden conjuntar en una sla
grfica
>> x = 0:pi/100:2*pi;
>> y = sin(x);
>> y2 = sin(x-.25);
>> y3 = sin(x-.5);
>> plot(x,y,x,y2,x,y3)

Grficos: Funciones bsicas


Hold on / off es otra manera de dibujar distintas series en la misma
grfica
Sin Plots
2

>> x = [0:0.1:2*pi];
>> y = sin(x);
>> plot(x, y, 'b*-')

1.5
1

>> hold on

>> title('Sin Plots');


>> legend('sin(x)', '2*sin(x)');
>> axis([0 6.2 -2 2])
>> xlabel(x);
>> ylabel(y);
>> hold off

0.5

>> plot(x, y*2, r.-')

sin(x)
2*sin(x)

0
-0.5
-1
-1.5
-2

3
x

Grficos: Funciones bsicas

Plotting data
0.9
0.8
0.7
0.6
0.5

>> results = rand(10, 3)


>> plot(results, 'b*')
>> hold on
>> plot(mean(results, 2), r.-)

0.4
0.3
0.2
0.1

10

Grficos: Funciones bsicas


Grficas con barras de error errorbar
>> errorbar(mean(data, 2), std(data, [ ], 2))
Mean test results with error bars
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1

10

12

Grficar: sin(x) para el intervalo 0x4


Crear un arreglo x de 100 muestras entre 0 y 4.
Calcular el seno del arreglo x
Graficar el resultado y
1

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

Grficar: e-x/3sin(x) para 0x4


Crear un arreglo x de 100 muestras entre 0 y 4.
Calcular el seno del arreglo x
Calcular el exponente e-x/3
Multiplicar los arreglos y y y1
Graficar el resultado y2
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(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

Tipos de grficos (2D)


Cartesianas
90

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

Grficos de datos Complejos


Cuando los argumentos de la instruccin plot son
complejos la parte imaginaria es ignorada excepto cuando
se usa un nico argumento
plot(Z)
Lo que resulta equivalente a:
plot(real(Z),imag(Z))
>> z1=[1+2j;2+6j;3-4j;-5-3j;-1+3j];
>> plot(z1)
>> ylabel('Imaginary');
>> xlabel('Real');

Grficos de datos Complejos


La instruccin feather permite graficar valores complejos a
manera de flechas en grfica.
z1=1+2j;
z2=3+3j;
z3=3+j;
feather(z1,'r');
hold on
feather(z2,'b');
feather(z3,'g');
feather(z3,'k');
ylabel('Imaginary');
xlabel('Real');

Grficos de datos Complejos (Polar)


La instrucciones compass(z) y compass(x,y) permiten
graficar datos complejos de manera polar
Notar que z sigue siendo un mmero complejo en formato
rectangular
z1=3+3i;
compass(z1)
hold on
compass(4,-3)
Los ngulos se representan en
grados

Grficos de 2 variables independientes


Crear la malla de puntos en el plano XY
x = -1:0.1:1; y = x;
[X,Y] = meshgrid(x,y);
Evaluar la funcin sobre X, Y
z = X .* Y;
Representar z respecto a X e Y
surf(x,y,z)

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:

Z = 10e(0.4a) sin (2ft)


para f = 2 y a y t
a = 0.1 a 7 , mientras
t = 0.1 to 2
>> [t,a] = meshgrid(0.1:.01:2, 0.1:0.5:7);
>> f=2;
>> Z = 10.*exp(-a.*0.4).*sin(2*pi.*t.*f);
>> surf(Z);
>> figure(2);
>> mesh(Z);

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

Otras opciones grficas 3D


Curvas en 3D
t = 0:pi/500:4*pi;
x = sin(t); y = cos(t); z = t;
plot3(x,y,z)
% Hlice
Superficies de revolucin
cylinder(x);
Esfera
sphere

Grficas mltiples en una figura


La instruccin subplot(m,n,p) permite la conjuncin de
varios grficos en una sola figura de m x n recuadros,
donde p es el nmero de recuadro.
E.g.:
t = 0:pi/10:2*pi;
[X,Y,Z] = cylinder(4*cos(t));
subplot(2,2,1); mesh(X)
subplot(2,2,2); mesh(Y)
subplot(2,2,3); mesh(Z)
subplot(2,2,4); mesh(X,Y,Z)

Controlando Ejes y Figuras


MATLAB permite el ajuste de los lmites de los ejes y la
resolucin de la trama del cuadriculado mediante la
instruccin: axis([xmin xmax ymin ymax])
de igual manera permite hacer visibles los ejes con:
axis on y axis off
Mismo caso para la trama: grid on y grid off
Para acceder a una figura especfica para ajustarla se
puede usar : figure(n) donde n es el nmero de la
figura mostrado en la cabecera de la imagen
Para cerrar las ventanas se usa: close all

Operadores lgicos y
Control de flujo de programas

Operadores lgicos

Los operadores lgicos permiten interrogar variables o


estructuras de datos con la finalidad de obtener informacin
que ayude a controlar el flujo de ejecucin los programas o
generar nuevas estructuras de datos (logical indexing).

Operadores lgicos relacionales:

Mayor que: >

Menor que: <

Mayor o igual que: >=

Menor o igual que: <=

Igual que: ==

Diferente que: ~=

Indexado lgico (Logical indexing)


En MATLAB se puede averiguar si un particular arreglo /
matriz cumple con alguna condicin lgica

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

La operacin r(log_ind) finalmente presenta los datos en r de las


localidades correspondientes donde log_ind tiene unos (true)

Indexado lgico (Logical indexing)

Operadores Booleanos
Operadores Booleanos:

AND: &

OR: |

NOT: ~

Conecta 2 expresiones lgicas

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

- if, else, elseif


- switch, case

Loop Control
- for, while, continue, break

Error Control
- try, catch

Program Termination
- return

Las operaciones de control


de flujo de programa
permiten operar a
MATLAB mas all de una
simple calculadora,
convirtindolo en un
lenguaje de alto nivel.
El control de flujo se realiza
mediante expresiones
condicionales y de control
de ciclo

Expresiones condicionales
If, Else, and Elseif

La expresin if condiciona la ejecucin de un grupo de instrucciones, a


partir de una comparacin lgica. Dichas instrucciones slo se ejecutan en
caso que el resultado de la comparacin resulte positiva (true).
La lista de las instrucciones condicionadas alcanza su final al encontrarse la
expresin reservada end.
Para el caso que el resultado de la comparacin lgica resulte negativa,
todos las instrucciones condicionadas son omitidas de la ejecucin
En cualquier caso, el resto del programa continuar ejecutandose a partir
de la expresin reservada end

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

La expresin else permite la ejecucin de un segundo grupo de


instrucciones delimitadas nuevamente por la expresin reservada end, si y
slo si el resultado de la expresin if result negativa (false).
Es decir que slo uno de los sets de instrucciones podr ser ejecutado por
cada vez que se evale la expresin condicional.

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

La expresin elseif fuerza la ejecucin del grupo de instrucciones


delimitadas bajo su campo de accin si y slo si el resultado de la
expresin if result negativa (false) y si el resultado de su comparacin
lgica relacionada result positiva(true).

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

La expresin switch acta como una serie de expresiones if-elseif.


Slo una de las expresiones evaluadas podr ser verdadera (true) cada
vez, lo que llevar a que slo el conjunto de instrucciones ejecutadas se
ejecute.

switch expresion_lgica (valor o string)


case valor_1
primer set de instrucciones
case valor_2
segundo set de instrucciones
case valor_n
n set de instrucciones
end

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

La expresin for permite la ejecucin de una instruccin o conjunto de


instrucciones un nmero predeterminado de veces.

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

Asigna 0 a los primeros 100 elementos del


vector x
Para el caso de que x no exista o que contenga
menos de 100 elementos, espacio adicional
ser aadido automticamente

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

Se crea una matriz de m por n cuyos elementos


contienen la suma de su position en la matriz

Ciclos
WHILE

La expresin while ejecuta una instruccin o conjunto de instrucciones


de manera repetida mientras la expresin_lgica de control sea
verdadera.

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

El ciclo while incrementar el valor de A y


decrementar el de B por cada ciclo hasta que
las 2 condiciones en la expresin se cumplan
** Para prevenir entrar en un ciclo infinito, se
requiere que las comparaciones lgicas que
evala el while se cumplan en algn momento.

Ciclos
WHILE
A = 6; B = 15;
while A > 0 & B < 10
If A < 0
A=A+1
elseif B > 10
B=B2
end
end

Expresiones condicionales puden ser anidadas


dentro de los ciclos, permitiendo modificar de
manera interna algunas variables

Ciclos
WHILE
A = 6; B = 15;
while A > 0 & B < 10
If A < 0
A=A+1
elseif B > 10
B=B2
end
end

Expresiones condicionales puden ser anidadas


dentro de los ciclos, permitiendo modificar de
manera interna algunas variables

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

En caso de que las


condicones del ciclo
while no terminen com el
ciclo, despus de 100
repreticiones el break se
ejecutar terminando con
el programa

FUNCIONES

Funciones
Una funcin es una rutina que realiza operaciones con la
variable de entrada que se le pasan

El paso de variables a funciones se realiza a travs de


incluir en la llamada a la funcin los nombres de las
variables flanquedas por parntesis

function_name(input)

Es posible tambin pasar slo partes de vectores o matrices


>> function_name(matrix(:, 1))
or
>> function_name(matrix(:, 2:4))

Funciones
El resultado de las funciones puede ser guardado a su
vez en una variable

>> variable_salida = function_name(variable_entrada)


e.g.
>> mresult = mean(result)

Tambin es posible guardar el resultado en partes de


vectores o matrices

>> matriz(:,5) = function_name(matriz(:, 1:4))

Funciones
Para obtener ayuda sobre como usar la funcin se puede
usar las instrucciones help o lookfor

>> help function_name


e.g.
>> help mean
>> lookfor keyword

Con esto se desplegar la informacin de como se usa


dicha funcin y que es lo que hace

Funciones
MATLAB tiene integradas muchas funciones estadsticas
lo que facilita el anlisis de muchas operaciones y datos.

sum Suma el contenido del vector/matriz enviado


prod Obtiene la multiplicacin de la variable enviada
mean Calcula el promedioe
median Calcula la media
mode Calcula la Moda
std
Calcula la desviacin estandar
sqrt Calcula la raiz cuadrada
max Encuentra el valor mximo dentro de la variable
min Encuentra el mnimo
size Regresa el tamao de la variable

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

Cuando se le pasan a las funciones matrices, el clculo


se realiza por default sobre las columnas

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)

Cuando se usen std, max y min se necesita escribir:


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

Introduccin de cadenas largas


Si una serie o cadena no cabe en una lnea se puede usar
tres puntos , , seguidos por un carcter de Retorno o
Enter para indicar que la cadena contina en la siguiente
lnea.
E.g.: s = 1 -1/2 + 1/3 -1/4 + 1/5 - 1/6 + 1/7 ...
- 1/8 + 1/9 - 1/10 + 1/11 - 1/12;

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

La declaracin deber ocurrir antes de que la


variable sea utilizada en cada funcin.

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

Su extensin debe ser .m


para ser reconocido por
MATLAB como tal

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

Model simplified representation of a system e.g. using


mathematical equation
We simulate a model to study the behavior of a system need
to verify that our model is correct expect results
Knowing how to use Simulink or MATLAB does not mean
that you know how to model a system

Simulink

Problem: We need to simulate the resonant circuit and


display the current waveform as we change the frequency
dynamically.
10

i
Varies
from 0 to
2000 rad/s

100 uF

+
v(t) = 5 sin t

0.01 H

Observe the current. What do we expect ?

The amplitude of the current waveform will become


maximum at resonant frequency, i.e. at = 1000 rad/s

Simulink

How to model our resonant circuit ?


i

10

100 uF

+
v(t) = 5 sin t

0.01 H

Writing KVL around the loop,

di 1
v = iR + L +
idt
dt C

Simulink

Differentiate wrt time and re-arrange:


2

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

Thus the current can be obtained from the voltage:

s(1/ L )
I = V

R
1
2
s + s +

L
LC

s(1/ L)
R
1
2
s + s+
L
LC

Simulink

Start Simulink by typing simulink at Matlab prompt


Simulink library and untitled windows appear

It is where we obtain the


blocks to construct our
model

It is here where we construct our


model.

Simulink

Constructing the model using Simulink:


Drag and drop block from the Simulink library
window to the untitled window
1

simout

s+1
Sine Wave

Transfer Fcn

To Workspace

Simulink

Constructing the model using 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

We need to vary the frequency and observe the current


5
Amplitude

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

From initial problem definition, the input is 5sin(t).


You should be able to decipher why the input works, but
you do not need to create your own input subsystems of
this form.

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

The waveform can be displayed using scope similar to the


scope in the lab

5
Constant1
100s
2000
Constant

0.802
Slider
Gain

sin

s
Dot Product2
Integrator Elementary
M ath

s2+1000s+1e6
Scope
T ransfer Fcn

Graphical User Interfaces


GUIDE, the MATLAB Graphical User Interface
Development Environment, provides a set of tools for
creating graphical user interfaces (GUIs). These tools
greatly simplify the process of designing and building
GUIs. You can use the GUIDE tools to perform the
following tasks:
- Laying out the GUI.

- Programming the GUI.


Example template for a push button

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,

También podría gustarte