UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA "ANTONIO JOS DE SUCRE"
VICERRECTORADO DE BARQUISIMETO DEPARTAMENTO DE INGENIERA ELECTRNICA
LAB. II DE SISTEMAS DE CONTROL PROF. FRANCISCO DE LA CRUZ 2009
INTRODUCCIN A MATLAB Para un tutorial mucho ms completo visite: http://isa.uniovi.es/~cuadrado/archivos/IntroduccionMatlab.pdf http://www.esi2.us.es/~fsalas/asignaturas/LCA3T04_05/Intro_matlab.pdf http://www.imse.cnm.es/tec_exp/downloads/enunciados/0506_INTRO_MATLAB.pdf A continuacin se muestran algunos ejemplos de manejo de datos y empleo de funciones
bsicas. Las letras en negrilla corresponden a instrucciones de Matlab. Escrbalas en la
ventana de comandos. Al pulsar Enter deber aparecer el resultado de dicha instruccin,
siempre y cuando no escriba punto y coma (;) al final de la instruccin.
Para una explicacin rpida de cualquier comando use >>help comando
1. Caracteres especiales
[ ] Son usados para formar vectores y matrices: [ 1 2 3 ; 4 5 6 ]
( ) Usados para expresiones matemticas: sqrt(2)
= Usado para hacer asignaciones: x = 5
' - Transpuesta de una matriz: A'
- Usado para separar cadena de caracteres: 'radianes'
. Punto decimal: 3.1415
... Al final de una lnea indican que continua 2,3,4,5,6 ....
en el siguiente rengln. 7,8,9,10 ]
, Para separar elementos [1,2,3,4]
; - Para separar filas en las matrices: [ 1 2; 3 4]
- Para evitar que se despliegue resultado de un comando: y=a+2;
% Para hacer comentarios: % este programa permite...
2. Operaciones bsicas Operaciones Aritmticas:
Suma C = a + b
Resta d = a - b
Multiplicacin e = a * b
Divisin F = a / b
F = a \ b
Potenciacin a ^ 2
Funciones trigonomtricas
Trigonomtricas estndar sin, cos, tan (radianes)
sind, cosd, tand (grados)
asin, acos, atan (radianes)
asind, acosd, atand (grados)
Trigonomtricas hiperblicas sinh, cosh, tanh
asinh, acosh, atanh
Otras funciones
Logaritmo natural log(x)
Logaritmo decimal. log10(m)
Exponencial : e ( x ) exp(-3.5)
Valor absoluto o magnitud de un nmero complejo abs (sel)
Redondea hacia ms infinito ceil (123.123123)
Redondea hacia menos infinito floor(X)
Redondea hacia cero fix (X)
Redondea hacia el entero ms prximo round(X)
Parte imaginaria de un nmero complejo imag(30+4*i)
Parte real de un nmero complejo real(comp)
Angulo de un nmero complejo angle(comp)
Complejo conjugado conj(comp)
Devuelve el signo del argumento (1 o -1) sign(-5)
Resto despus de la divisin ( x / y) rem(a,b)
Raz cuadrada sqrt(2)
3. Comandos y variables de entorno ans Respuesta ultimo comando no asignada a variable
clear a Borra la variable " a "
clear a b c Borra las variables " a ", " b " y " c "
clear Borra todas las variables y no se pueden recuperar.
clc Borra ventana de comando
who Muestra variables en uso
whos Muestra las variables con informacin adicional
pi
i, j 1 Constante imaginaria. inf . Se trata de un valor excesivamente grande para ser almacenado.
NaN Not a number
4. Manejo de Vectores Vector fila a = [1 2 3 4 5 6 9 8 7]
a = 1 2 3 4 5 6 9 8 7
Secuencia de nmeros pares entre 0 y 20
t = 0:2:20
t = 0 2 4 6 8 10 12 14 16 18 20
Suma de escalar a todos los elementos de un vector
b = a + 2
b = 3 4 5 6 7 8 11 10 9
Suma de vectores c = a + b
c = 4 6 8 10 12 14 20 18 16
Vector transpuesto (columna) a = a
a = 1 2 3 4 5 6 9 8 7
Multiplicacin de vectores b*a
ans= 375
Mayor elemento de a max(a)
ans= 9
Ordenamiento ascendente de los elementos del vector b
sort(b)
ans = 3 4 5 6 7 8 9 10 11
5. Polinomios Los polinomios se representan usando sus coeficientes en orden ascendente como elementos de un vector.
P(s)= 4 3 23 10 5s s s s+ + + p= [1 3 -10 1 5];
Races de un polinomio roots(p)
ans= -5.0000 1.6180 1.0000
-0.6180 Evaluacin de un polinomio para
un valor especfico
polyval(p,2)
ans= 7
Generacin de un polinomio a partir de sus races
p2=poly([-1 -2])
p2= 1 3 2
6. Manejo de matrices Cada fila de elementos debe
separarse por un punto y coma (;). Ejemplos:
B = [1 2 3 4;5 6 7 8;9 10 11 12]
B =
1 2 3 4
5 6 7 8
9 10 11 12
E = [1 2;3 4]
E =
1 2
3 4
D = [2 3; 4 5]
D =
2 3
4 5
Matriz identidad de orden n = 3 I = eye(3) I =
1 0 0
0 1 0
0 0 1
Matriz de ceros de orden n por m C = zeros(3);
C = zeros(3,3)
C =
0 0 0
0 0 0
0 0 0
Matriz transpuesta E = E
E =
1 3
2 4
Potencia de una matriz E^3
ans=
37 54
81 118
Potencia de los elementos de una matriz
E.^3
ans=
1 27
8 64
Inversa de una matriz no singular X = inv(E)
X=
-2.0000 1.0000
1.5000 -0.5000
Multiplicacin de matrices F= D*E
F=
11 16
19 28
Multiplicacin elemento a elemento de dos matrices
G=D.*E
G=
2 6
12 20
Multiplicacin del elemento (2,1) de la matriz G por 5 (sin cambiarlo)
G(2,1)*5
ans= 60
Sustitucin del elemento (2,1) de la matriz G
G(2,1)=10
G=
2 6
12 10
Multiplicacin de la segunda fila de G por 4 y asignacin del resultado a un vector
g = G(2,:)*4
g= 40 80
Determinacin del mayor elemento de cada columna de B
max(B)
ans= 9 10 11 12
Determinacin del mayor elemento de cada columna de B e indicacin de ubicacin
[valor lugar]=max(B)
valor = 9 10 11 12
lugar = 3 3 3 3
7. GRFICAS Generacin de vector de fracciones de x=[0:pi/10:2*pi];
Generacin de vector de valores de funcin seno para fracciones de y=sin(x);
Graficar dos vectores relacionados plot(x,y)
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Activacin de cuadricula grid on
Etiqueta del eje x xlabel('angulo')
Etiqueta del eje y ylabel('amplitud')
Ttulo de la grfica title(seno(\alpha))
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
angulo
ampl
itud
seno()
Obtencin de vector de valores de dos funcin seno desfasadas y2 = sin(x-0.25);
y3 = sin(x-0.5);
Opciones de Plot
color marcador lnea b blue . point - solid g green o circle : dotted r red x x-mark -. dashdot c cyan + plus -- dashed m magenta * star (none) no line y yellow s square k black d diamond v triangle (down) ^ triangle (up) < triangle (left) > triangle (right) p pentagram h hexagram
Trazado simultneo de tres funciones. Matlab asigna colores diferentes automticamente. En este caso, se pierde la grfica anterior.
plot(x,y,x,y2,x,y3)
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
Trazado simultneo de tres funciones usando tipos de lnea o caracteres diferentes.
plot(t,y,'-',t,y2,'--',t,y3,':')
Colocacin de rtulos. legend('Y','Y2','Y3')
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1YY2Y3
Grficas simultaneas con ejes diferentes subplot(2,1,1)
plot(t,y,'-')
subplot(2,1,2)
plot(t,y2,'--r')
0 1 2 3 4 5 6 7-1
-0.5
0
0.5
1
0 1 2 3 4 5 6 7-1
-0.5
0
0.5
1
Trazado consecutivo sin perder las anteriores plot(t,y,'-')
hold on
plot(t,y2,'--r')
0 1 2 3 4 5 6 7-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
8. Programando en MatLab
8.1. Operadores de relacin < Menor que Mayor que >= Mayor o igual == Igual a ~= No igual a
8.2. Operadores lgicos & AND lgico
| OR lgico
~ NOT lgico (Alt Gr 4)
8.3. Lazos y estructuras condicionales Estructuras if
if expresin1 % Se ejecutan las instrucciones % dentro de este lazo si expresin1 es verdadera
end if expresin2
% Se ejecutan las instrucciones % dentro de este lazo si expresin2 es verdadera
else % Se ejecutan las instrucciones % dentro de este lazo si expresin2 es falsa
end if expresin3
% Se ejecutan las instrucciones % dentro de este lazo si expresin3 es verdadera
elseif expresin4 % Se ejecutan las instrucciones % dentro de este lazo si expresin3 es falsa % pero expresin4 es verdadera
else % Se ejecutan las instrucciones
% dentro de este lazo si expresin3 y % expresin4 son falsas
end
Lazo for for x = inicial : incremento : final
% Instrucciones que se ejecutan hasta que % la variable x alcance su valor final % El valor de x se incrementa automticamente % en cada ejecucin del lazo
end
Lazo while While condicion1
% Instrucciones que se ejecutan mientras que % la condicin1 sea verdadera
End
Break La sentencia break le permite salir de un bucle for o while antes de
tiempo. Cuando se emplean bucles anidados, break sale al nivel inmediatamente superior.
9. Representacin de funciones de transferencia 2
3
2 1( )3 5
sG ss s
+= + + num = [2 1];
den = [1 3 5];
sys1=tf(num,den);
( ) ( )( )( )
5 1 2( )
3 5s s
G ss s s
+ += + +
z = [-1 -2];
p = [0 -3 -5];
k = 5;
sys2=zpk(z,p,k);
10. Respuesta a un escaln step(num,den);
o bien
step(sys1)
11. Mostrar arreglos p=[ 0 -3 -5]
p =
0 -3 -5
>> disp(p)
0 -3 -5
Mostrar cadenas de caracteres
disp('Los polos del sistema son);disp(p) Los polos del sistema son 0 -3 -5 O bien
disp(['Los polos del sistema son num2str(p)] Los polos del sistema son: 0 -3 -5
12. Programa MatLab (demo1.m) %%%%% Programa basico en Matlab %%%%%%%%%% % En cada ejecucion se incrementa la variable sel % y se ejecuta una parte diferente del lazo
clear clc for sel=1:3 if sel ==1 %primera iteracion num=10; %funcion de transferencia den=[1 2 10]; ts=0:0.01:10; %tiempo simulacion y=step(num,den,ts); %obtencion de la respuesta al escalon plot(ts,y) hold on
%pause elseif sel==2 %segunda iteracion for j=1:1000 if y(j)>1 t1=ts(j); plot(t1,y(j),'xk') disp(['El tiempo de subida es tr = ' num2str(t1) 's']) break; end end else %tercera iteracion [ymax tmax]=max(y); plot((tmax-1)/100,ymax,'k+') disp(['El maximo sobreimpulso es Mp = ' num2str(ymax) ]) disp(['y ocurre en tp = ' num2str((tmax-1)/100) 's']) legend('Salida', 'Punto de tr', 'Mp') end end La grfica obtenida es la siguiente:
0 1 2 3 4 5 6 7 8 9 100
0.2
0.4
0.6
0.8
1
1.2
1.4SalidaPunto de trMp
El tiempo de subida es tr = 0.63s El maximo sobreimpulso es Mp = 1.3509 y ocurre en tp = 1.05s
13. Simulink Realizacin de lazos de control dados los parmetros del sistema
Gp(s)
K
tao.s+1ys
Scope
SP=1
PID
Controlador PI
Simulacin de ecuaciones diferenciales
'1 2
'2 1 2 3 1
'3 4
'4 1 3 4 2
10 15 2 5
4 5 10 2
x xx x x x u
x xx x x x u
= + + = = + + =
( )
( )
'1 2'2 1 2 3 1
'3 4
'4 1 3 4 2
0.1 15 2 5
0.25 5 10 2
x xx x x x u
x xx x x x u
= = + + = = +
x2 x1
x3x4
Step1
Step
Scope1
Scope
1s
Integrator3
1s
Integrator2
1s
Integrator1
1s
Integrator
2
Gain7
1/3
Gain6
2
Gain5
5
Gain4
0.25
Gain3
2
Gain2
15
Gain1
0.1
Gain
UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA "ANTONIO JOS DE SUCRE"
VICERRECTORADO DE BARQUISIMETO DEPARTAMENTO DE INGENIERA ELECTRNICA
Toolbox Matemticas Simblica
3 3 2( 3) 9 27 27x x x x+ = + + + syms a b c x y expand((x+3)^3) ans = x^3+9*x^2+27*x+27
3 2 3 2 2(5 9 27 4 9 27 ) 9 ( 2 6)x x x x x x x x x+ + + + + = + + factor(5*x^3+9*x^2+27*x+4*x^3+9*x^2+27*x) ans = 9*x*(x^2+2*x+6)
2
2
0
4x =2
ax bx c
b b aca
+ + =
x = solve('a*x^2 + b*x + c = 0') x = [ 1/2/a*(-b+(b^2-4*a*c)^(1/2))] [ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
- 1- -25x aybx cy
= + = [x,y]=solve('x-a*y=1','-b*x+c*y=-25')
x = (25*a-c)/(b*a-c) y = -(b-25)/(b*a-c)
- 2 1-10 5 -25x y
x y= + =
[x,y]=solve('x-2*y=1','-10*x+5*y=-25')
x = 3 y = 1
2
2
3 - 4 3 0
x xy yx x
+ + =+ =
[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
x = [ 1] [ 3] y = [ 1] [ -3/2]
' ;
' -x ydx dyy xy xdt dt
= = = = [x,y]=dsolve('Dx = y', 'Dy = -x')
x = cos(t)*C1+sin(t)*C2 y = -sin(t)*C1+cos(t)*C2
' ' -
x yy x
= = [x,y]=dsolve('Dx = y', 'Dy = -x', 'x(0)=0', 'y(0)=1')
x = sin(t) y = cos(t)