introd matlab

Upload: jose

Post on 06-Jan-2016

274 views

Category:

Documents


1 download

TRANSCRIPT

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