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 Ejemplo de nmeros vlidos:

ans 3 -99

who 0.0001 9.6397238

whos 1.60210e-20 6.02252e23
1i -3.14159j
Eliminar
3e5i

clear b

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

format long

format short
Precisin: eps

format rat
Infinito: Inf
Indeterminacin: NaN

Cadenas de caracteres
'Esto es una cadena'
Esto no
Funciones
(x3+1)/x
help elfun
8

sin
asin 6
4

cos
acos 2
0

tan
atan -2
-4

exp
log
-6

ezplot (x3+1)/x -2 0
x
2
Vectores
Edicin Normas
u = [1 2 3] norm(v,2)
v = [1,2,3] norm(v,1)
w = [1;2;3] norm(v,inf)
w = [1 1
0.8
2 0.6
0.4
3] 0.2

Progresivos 0
-0.2

0:0.1:10 -0.4
-0.6

linspace(0,1,11) -0.8
-1
-1 -0.6 -0.2 0.2 0.6 1
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 2 3
5 1 4
3 2 -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 2 3 4
5 6 7 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 Transpuesta: u'


de elementos sum(u) Voltear
Productos fliplr(x)
por escalar: 2*u flipud(x')
escalar: dot(u,v) Funciones
elemental: u.*v x = -1:0.01:1
matricial: u*w, w*u y = tanh(x)
de elemtos prod(u) plot(x,y)
Matrices

Edicin Bloques
A = [1,2;3,4] M = [A,B;B,A]

B = [-1 -2 Sub-matrices
-3 -4]
M41 = M(1:3,2:4)
Elemento: A(2,1)
fil = [1,2,4]
Fila: A(2,:) col = [1,3,4]

Columna: A(:,1) 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 161.8 3.48
sigma = 5.6303 25.499 2.2107
Polinomios

p( x ) = x 5x + 343 x 7
2
3
3 2

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

0.8
>> y = sin(x)
0.6

>> plot(x, y, r.-) 0.4

0.2

En el ejemplo, el estilo de la 0

-0.2
lnea se defini mediante: -0.4

Color: r, b, g, c, k, y etc. -0.6

Marcador: . + * x o > etc. -0.8

Linea: - -- : .- -1
0 1 2 3 4 5 6 7

>> help plot enlista todas las


opciones
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
1 2 3 4 5 6 7 8 9 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]; sin(x)


2*sin(x)
>> y = sin(x); 1.5

>> plot(x, y, 'b*-') 1

>> hold on 0.5

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


y

>> title('Sin Plots'); -0.5

-1
>> legend('sin(x)', '2*sin(x)');
>> axis([0 6.2 -2 2]) -1.5
>> xlabel(x);
>> ylabel(y); -2
0 1 2 3 4 5 6
x
>> hold off
Grficos: Funciones bsicas
Plotting data
0.9

0.8

0.7

0.6

0.5

0.4
>> results = rand(10, 3)
>> plot(results, 'b*') 0.3

>> hold on 0.2


>> plot(mean(results, 2), r.-)
0.1
1 2 3 4 5 6 7 8 9 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
0 2 4 6 8 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); 0.4

0.2

>> y=sin(x); 0

-0.2

>> plot(y) -0.4

-0.6

-0.8

-1
0 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 0.7

0.6

Multiplicar los arreglos y y y1


0.5

0.4

Graficar el resultado y2 0.3

0.2

0.1

>> x=linspace(0,4*pi,100); 0

-0.1

>> y=sin(x); -0.2

-0.3

>> y1=exp(-x/3); 0 10 20 30 40 50 60 70 80 90 100

>> y2=y.*y1; % mult 1-a-1


>> plot(y2)
Plot vs Stem
0.7

0.6

0.5

0.4

0.3

0.2

0.1

>> x=linspace(0,4*pi,100);
0

-0.1

>> y=sin(x);
-0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100

>> y1=exp(-x/3); 0.7

>> y2=y.*y1; % mult 1-a-1


0.6

0.5

>> plot(y)
0.4

0.3

>> plot(y2) 0.2

0.1

>> stem(y) 0

-0.1

>> stem(y2) -0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100
Display Facilities
0.7

0.6

0.5

plot(.) 0.4

0.3

0.2
Example: 0.1

>>x=linspace(0,4*pi,100); 0

>>y=sin(x); -0.1

>>plot(y) -0.2

>>plot(x,y)
-0.3
0 10 20 30 40 50 60 70 80 90 100

stem(.) 0.7

0.6

0.5

0.4

0.3

0.2
Example: 0.1

>>stem(y) 0

>>stem(x,y) -0.1

-0.2

-0.3
0 10 20 30 40 50 60 70 80 90 100
Tipos de grficos (2D)

Cartesianas
ezplot 90 1
120 60
fplot 0.75

plot 150 0.5 30


0.25
Polares
180 0
polar
Paramtricas
210 330
plot
240 300
>> help graph2d 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') % k es negro

>> help graph3d


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


AND OR NOT
A B Resultado A B Resultado A ~A
0 0 0 0 0 0 0 1
0 1 1 0 1 0 1 0
1 0 1 1 0 0
1 1 1 1 1 1
Operadores Booleanos
EJEMPLOS:

A=0 B = false C = 1 D=8 E = true


F=[0102
0 3 0 1]
Probar:
>>A & B >>A & C >>A & D >>A & E >>A & F
>>A | B >>A | C >>A | D >>A | E >>A | F
>> ~A >> ~B >> ~C >> ~D >> ~E
>> ~F >> ~A&C >> ~C & F
Operadores Booleanos
EJEMPLOS:

A=0 B = false C=1 D=8 E = true


F=[0102
0 3 0 1]

>>A & B = 0 >>A & C = 0 >>A & D = 0


>>A & F = [0 0 0 0 >>A | B = 0 >>A | C = 1
0 0 0 0] >>A | D = 1 >>A | E = 1
>>A | F = [0 1 0 1 >>A & E = 0
0 1 0 1]
Operadores Booleanos
EJEMPLOS:

A=0 B = false C=1 D=8 E = true


F=[0102
0 3 0 1]

>> ~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
Las operaciones de control
- if, else, elseif de flujo de programa
- switch, case permiten operar a
MATLAB mas all de una
Loop Control simple calculadora,
- for, while, continue, break convirtindolo en un
lenguaje de alto nivel.
Error Control
El control de flujo se realiza
- try, catch mediante expresiones
condicionales y de control
Program Termination
de ciclo
- return
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 B=0

if A > 6 if A & B
D = [1 2 6] E = mean(B)
A=A+1 else
else E=0
D = [ 0 0 0] end
A=A-1
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
end ** Slo el caso 6 es evaluado
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
En caso de que las
count = count + 1
condicones del ciclo
if count > 100 while no terminen com el
break ciclo, despus de 100
end repreticiones el break se
end 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 = 3.14159265.
i or j = raiz cuadrada de -1 (imaginarios)
Inf = infinito
NaN = 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.
i 10 100 uF
Varies +
from 0 to
v(t) = 5 sin t 0.01 H
2000 rad/s

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 +
dt C
idt
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 2 I
= sI + s I +
L L LC
sV 2 R 1
= I s + s +
L L LC
Simulink

Thus the current can be obtained from the voltage:



s(1/ L )
I = V
R 1
s + s +
2

L LC

s(1/ L)
V R 1 I
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 It is here where we construct our


blocks to construct our model.
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)
s(100)
2 R 1
s + s+ 2
s + 1000s + 110 6
L LC
100s
i
s2+1000s+1e6
Sine Wave To Workspace
Transfer Fcn

To Workspace1
Simulink eg8_sim.mdl

We need to vary the frequency and observe the current

Ramp Amplitude v

w To Workspace3

To Workspace2 100s
1 i
sin s2+1000s+1e6
1000 s To Workspace
Dot Product2 Transfer Fcn1
Constant Dot Product3 Integrator Elementary
Math

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

0.5

-0.5

-1
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

-5
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Simulink eg9_sim.mdl

The waveform can be displayed using scope similar to the


scope in the lab

5
Constant1

100s
1
2000 0.802 sin s2+1000s+1e6
s Scope
Constant Dot Product2
Slider Integrator Elementary T ransfer Fcn
Gain M ath
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.
AA 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 hashas 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 hashas 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 hashas the
the ability
ability to
to simulate
simulate
aa large
large range
range of of systems,
systems, fromfrom very
very
simple
simple toto 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, inin 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