Seminario Matlab Simulink

Embed Size (px)

DESCRIPTION

matlab

Citation preview

  • 14/01/2015 Ing. Pablo Mndez. UTN. 1

    SEMINARIO INTRODUCCIN A MATLAB -SIMULINK.

  • 14/01/2015 Ing. Pablo Mndez. UTN. 2

    SEMINARIO INTRODUCCIN A MATLAB -SIMULINK.

    PABLO DANILO MNDEZ MAIGUA.

    [email protected]

    UNIVERSIDAD TCNICA DEL NORTE. CIMANELE.

    Ibarra Ecuador. Octubre.

    2013

    mailto:[email protected]:pablodanilomendez@
  • 14/01/2015 Ing. Pablo Mndez. UTN. 3

    SEMINARIO INTRODUCCIN A MATLAB -SIMULINK.

    Programa Caractersticas generales de MatLab. Comandos bsicos. Control de flujo de instrucciones. Funciones. Arreglos (Vectores, Matrices, Hipermatrices). Estructuras. Grficos 2D, 3D. Programacin en MatLab.

  • 14/01/2015 Ing. Pablo Mndez. UTN. 4

    Arreglos (Vectores, Matrices, Hipermatrices ).

    MATLAB trabaja esencialmente con matrices de nmeros reales o complejos. Las matrices 1x1 son interpretadas como escalares y las matrices fila o columna como vectores .

    Por defecto todas las variables son matriciales y nos podemos referir a un elemento con dos ndices. An as, conviene saber que la matriz est guardada por columnas y que nos podemos referir a un elemento empleando slo un ndice, siempre que contemos por columnas. Insistiremos bastante en este detalle, porque tiene fuertes implicaciones para entender el funcionamiento de bastantes aspectos de MATLAB .

  • 14/01/2015 Ing. Pablo Mndez. UTN. 5

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Ejercicio 4.

    Ej : Guardarlo como (nombre_avmh.m)

    Realizar todas las instrucciones que veremos de arreglos .

  • 14/01/2015 Ing. Pablo Mndez. UTN. 6

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Creacin de un vector fila

    x = [1 2 3 4];

    Creacin de un vector columna

    y = [1;2;3;4]

    y = 1

    2

    3

    4

  • 14/01/2015 Ing. Pablo Mndez. UTN. 7

    Arreglos (Vectores, Matrices, Hipermatrices ).

    El vector anterior se pudo haber creado as:

    % el apstrofe implica trasponer la fila

    Bsqueda de un trmino especf ico en el vector, sea

    x(2)

    ans =

    2

  • 14/01/2015 Ing. Pablo Mndez. UTN. 8

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Tambin se pueden crear arreglos as:

    t = 0:0.1:1 t = 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

    linspace(a,b,n)

    t = linspace(0,1,11) t= 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

  • 14/01/2015 Ing. Pablo Mndez. UTN. 9

    Arreglos (Vectores, Matrices, Hipermatrices ).

    logspace(d1,d2,n) Genera un arreglo logartmico de 10^d1 a 10^d2 con n puntos w = logspace(-1,2,n); Genera un arreglo logartmico de 10^ -1 a 10^2 con n puntos w = logspace(-1,2) Genera un arreglo logartmico de10^ -1 a 10^2 con 50 puntos

  • 14/01/2015 Ing. Pablo Mndez. UTN. 10

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Dimensin de un vector Se utiliza el comando length length(t) ans = 11

  • 14/01/2015 Ing. Pablo Mndez. UTN. 11

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Matrices

    g = [1 2 3;4 5 6]; h=[1 2 3 % dar retorno 4 5 6 % dar retorno 7 8 9] h = 1 2 3 4 5 6 7 8 9

  • 14/01/2015 Ing. Pablo Mndez. UTN. 12

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Restar una constante a una matriz, trmino a trmino

    z =g 2 z = -1 0 1 2 3 4

  • 14/01/2015 Ing. Pablo Mndez. UTN. 13

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Multiplicar una matriz por una constante y restarle al resultado una constante

    y = 2*g -1 y =

    1 3 5

    7 9 11

  • 14/01/2015 Ing. Pablo Mndez. UTN. 14

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Multiplicacin de matrices trmino a trmino

    Sea x = [1 4 5;3 1 6] y g = [1 2 3;4 5 6] Entonces

    g.*x % para ello se agrega el punto

    ans=

    1 8 15

    12 5 36

  • 14/01/2015 Ing. Pablo Mndez. UTN. 15

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Si se escribe g*x da error, pues no se da la condicin para la multiplicacin de matrices, ya que ambas matrices son de dimensin 2x3 Si se escribe

    Si sera vlida la multiplicacin matricial

  • 14/01/2015 Ing. Pablo Mndez. UTN. 16

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Sea el caso de la divisin trmino a trmino

    x = [1 4 5;3 1 6] y g = [1 2 3;4 5 6] g./x divisin por la derecha ans= 1.0000 0.5000 0.6000 1.3333 5.0000 1.0000

    g.\ x divisin por la izquierda ans = 1.0000 2.0000 1.6667 0.7500 0.2000 1.0000

  • 14/01/2015 Ing. Pablo Mndez. UTN. 17

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Exponenciacin trmino a trmino

    g.^2 ans=

    1 4 9

    16 25 36

    2.^g ans =

    2 4 8

    16 32 64

  • 14/01/2015 Ing. Pablo Mndez. UTN. 18

    Arreglos (Vectores, Matrices, Hipermatrices ).

    En el caso de arreglos complejos, cuando se realiza la transpuesta, el signo de la parte imaginaria cambia. Sea

    a =1:2 a = 1 2

    d = a + i*a d = 1.0000 + 1.0000i 2.0000 + 2.0000i

    e = 1.0000 1.0000i 2.0000 2.0000i

  • 14/01/2015 Ing. Pablo Mndez. UTN. 19

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Para que se mantenga el signo en la transpuesta se debe poner un punto antes del apstrofo d = 1.0000 + 1.0000i 2.0000 + 2.0000i

    f = 1.0000 + 1.0000i 2.0000 + 2.0000i

  • 14/01/2015 Ing. Pablo Mndez. UTN. 20

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Arreglo de unos y ceros

    ones(2) ans = 1 1 1 1

    zeros(2,3) ans = 0 0 0 0 0 0

  • 14/01/2015 Ing. Pablo Mndez. UTN. 21

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Dimensin de una matriz

    Sea a = [1 4 7; 3 5 8] a = 1 4 7 3 5 8 Con el comando size(a) se obtiene su dimensin

    size(a) ans = 2 3

  • 14/01/2015 Ing. Pablo Mndez. UTN. 22

    Arreglos (Vectores, Matrices, Hipermatrices ).

    ones(size(a)) ans = 1 1 1 1 1 1

  • 14/01/2015 Ing. Pablo Mndez. UTN. 23

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Manipulacin de arreglos a = [1 4 7;3 5 8];

    Sea a(2,2) = 0 % anular un trmino a = 1 4 7 3 0 8

    a(:,1) = 4 % Obligar a los trminos de la columna 1 % a que valgan 4 ans= 4 4 7 4 0 8

  • 14/01/2015 Ing. Pablo Mndez. UTN. 24

    Arreglos (Vectores, Matrices, Hipermatrices ).

    a(:,3) % Buscar los trminos % de la columna 3 ans = 7 8

  • 14/01/2015 Ing. Pablo Mndez. UTN. 25

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Crear una matriz a partir de otra

    B = [1 2 3;4 5 6;7 8 9] B = 1 2 3 4 5 6 7 8 9

    C=B(2:3,1:2) C = 4 5 7 8

  • 14/01/2015 Ing. Pablo Mndez. UTN. 26

    Arreglos (Vectores, Matrices, Hipermatrices ).

    B(:,2) = [ ] Eliminar una columna B = 1 3 4 6 7 9 Se deben eliminar filas y/o columnas completas

  • 14/01/2015 Ing. Pablo Mndez. UTN. 27

    Arreglos (Vectores, Matrices, Hipermatrices ).

    D = B(:) % ordena columna tras columna D = 1 4 7 3 6 9

    % transponer

    F = 1 4 7 3 6 9

  • 14/01/2015 Ing. Pablo Mndez. UTN. 28

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Comparacin de arreglos A = [1 2 3;4 5 6;7 8 9]; B = [3 5 7;4 9 6;3 2 1]; isequal(A,B) % devuelve 1 si los arreglos tienen %igual dimensin y trminos %idnticos. ans = 0

  • 14/01/2015 Ing. Pablo Mndez. UTN. 29

    Arreglos (Vectores, Matrices, Hipermatrices ).

    ismember identifica trminos de la primera matriz que no estn en la segunda. ismember(A,B) ans = 1 1 1 1 1 1 1 0 1

  • 14/01/2015 Ing. Pablo Mndez. UTN. 30

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Conjunto de ecuaciones lineales Ax = b

    1

    2

    3

    1 2 3 366

    4 5 6 804

    7 8 0 351

    x

    x

    x

    1x A b

  • 14/01/2015 Ing. Pablo Mndez. UTN. 31

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Para resolver dicha ecuacin con MATLAB se utiliza el siguiente comando:

    x = inv(A)*b; o

    x=A\ b x = 25.0 22.0 99.0 Ambos resultados son iguales

  • 14/01/2015 Ing. Pablo Mndez. UTN. 32

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Cuando el nmero de ecuaciones es diferente al nmero de incgnitas no existe solucin nica. Sea el caso de mas ecuaciones que incgnitas, el operador de divisin automticamente halla la solucin que minimiza el error cuadrtico en Ax b = 0

  • 14/01/2015 Ing. Pablo Mndez. UTN. 33

    Arreglos (Vectores, Matrices, Hipermatrices ).

    A = [1 2 3;4 5 6;7 8 0;2 5 8]; b = [366;804;351;514]; x = A \ b x = 247.9818 -173.1091 114.9273

  • 14/01/2015 Ing. Pablo Mndez. UTN. 34

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Cuando hay menos ecuaciones que incgnitas, existen infinitas soluciones. MATLAB da dos soluciones, una con el nmero mximo de ceros y otra con la norma mnima

    A= [1 4 7 2;2 5 8 5;3 6 0 8]; b = [366;804;351]; x = A \ b x = 0 -165.9000 99.0000 168.0000

  • 14/01/2015 Ing. Pablo Mndez. UTN. 35

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Solucin con norma mnima xn = pinv(A)*b xn= 30.8182 -168.9818 99.0000 159.0545 norma(xn) = 254,173 norma(x) = 256.2200

  • 14/01/2015 Ing. Pablo Mndez. UTN. 36

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Funciones matriciales

    det(A) Determinante de A

    [v,d]=eig(A) Vectores y races de A

    inv(A) Inversa de A

    poly(A) Polinomio caracterstico de A

    polyvalm(p,A) Evala el polinomio p con argumento

    matricial

    trace(A) Suma de los elemento de la diagonal

  • 14/01/2015 Ing. Pablo Mndez. UTN. 37

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Operaciones con polinomios En MATLAB un polinomio se representa por un vector fila que contiene sus coeficientes. Sea el polinomio representado por: Su representacin mediante MATLAB es:

    p=[1 -12 0 25 116]

    4 312 25 116 0x x x

  • 14/01/2015 Ing. Pablo Mndez. UTN. 38

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Para obtener las races del polinomio anterior se

    utiliza el comando roots

    r = roots(p) r =

    11.473

    2.7028

    -1.2251 + 1.4672i

    -1.2275 1.4672i

    MATLAB adopta la convencin de que los polinomios

    son vectores filas y las races son vectores columnas

  • 14/01/2015 Ing. Pablo Mndez. UTN. 39

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Teniendo las races se puede buscar el polinomio que lo

    sustenta, mediante el comando poly

    pp = poly( r ) pp = 1 12 1.77642e-14 25 116

    Debido a errores de truncamiento, es comn que se presenten coeficientes con valores cercanos a cero. Ello se resuelve mediante el comando

    pp(abs(pp)

  • 14/01/2015 Ing. Pablo Mndez. UTN. 40

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Multiplicacin de polinomios Se realiza mediante el comando conv. Sean los siguientes polinomios Representados utilizando MATLAB, se tiene que a = [ 1 2 3 4]; b = [1 4 9 16]; c=conv(a,b) c= 1 6 20 50 75 84 64

    3 2

    3 2

    ( ) 2 3 4

    ( ) 4 9 16

    a x x x x

    b x x x x

  • 14/01/2015 Ing. Pablo Mndez. UTN. 41

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Suma de polinomios MATLAB no suministra comandos para la realizacin de la suma o resta de polinomios. La suma o resta de polinomios se resuelve si los polinomios son del mismo orden. a = [ 1 2 3 4]; b = [1 4 9 16]; d = a + b d = 2 6 12 20 f= a b f = 0 2 6 12

  • 14/01/2015 Ing. Pablo Mndez. UTN. 42

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Si los polinomios no son del mismo orden o dimensin, se le agregan ceros para llegar al orden del polinomio mayor, sea

    c=[1 6 20 60 75 84 64] d= [2 6 12 20 ] e = c + [0 0 0 d] e = 1 6 20 62 81 96 84

    6 5 4 3 26 20 62 81 96 84x x x x x x

  • 14/01/2015 Ing. Pablo Mndez. UTN. 43

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Divisin de polinomios Para ello se utiliza el comando deconv c=[1 6 20 50 75 84 64] b = [1 4 9 16];

    [q,r] = deconv(c,b) Donde q es el cociente y r es el resto En este caso, q= 1 2 3 4 y r = 0 0 0 0 0 0 0

  • 14/01/2015 Ing. Pablo Mndez. UTN. 44

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Derivada de un polinomio La derivada de un polinomio se obtiene con el comando polyder Sea g = [1 6 20 48 69 72 44] x6 + 6*x 5 +20*x 4+48*x 3+69*x 2 +72*x + 44

    h = polyder(g) h = 6 30 80 144 138 72

  • 14/01/2015 Ing. Pablo Mndez. UTN. 45

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Evaluacin de un polinomio Para evaluar los polinomios se utiliza el comando polyval Sea el polinomio Se desea evaluarlo para

    3 2( ) 4 7 10p x x x x

    1 3x

  • 14/01/2015 Ing. Pablo Mndez. UTN. 46

    Arreglos (Vectores, Matrices, Hipermatrices ).

    x= linspace(-1,3);

    p = [1 4 7 10]; v = polyval(p,x);

  • 14/01/2015 Ing. Pablo Mndez. UTN. 47

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Polinomios racionales En MATLAB esta funcin es considerada como dos polinomios independientes. Sea n = [1 10 100]; d = [1 10 100 0]; La derivada de esta relacin se obtiene as:

    [nd,dd] = polyder(n,d) nd = -1 20 100 2000 10000 dd = 1 20 300 2000 10000 0 0

    1

    1 2 1

    1

    1 2 1

    ...( )

    ( ) ...

    m m

    m

    n n

    n

    n x n x nn x

    d x d x d x d

  • 14/01/2015 Ing. Pablo Mndez. UTN. 48

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Clculo del residuo Para descomponer en fracciones parciales una una funcin se utiliza el comando residue

    [r,p,k]=residue(n,d) donde r : coeficiente de la expansin p: polos de la funcin k: el trmino directo

  • 14/01/2015 Ing. Pablo Mndez. UTN. 49

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Para los polinomios n y d anteriores se tiene que

    [r,p,k] = residue(n,d) r = 9.7954e -17 + 1.1547i 9.7954e -17 - 1.1547i 1 p = -5 +8.6603i -5 8.6603i 0 k = [] % Debido a que el orden del numerador % es menor que el orden del denominador

  • 14/01/2015 Ing. Pablo Mndez. UTN. 50

    Arreglos (Vectores, Matrices, Hipermatrices ).

    El resultado es: Se puede volver al polinomio original mediante

    [nn,dd] = residue(r,p,k) nn= 1 10 100 dd= 1 10 100 0

    ( ) 1.1547 1.1547 1

    ( ) 5 8.6603 5 8.6603

    n x i i

    d x x i x i x

  • 14/01/2015 Ing. Pablo Mndez. UTN. 51

    Arreglos (Vectores, Matrices, Hipermatrices ).

    Operadores relacionales y lgicos MATLAB considera, que un nmero no nulo es verdadero y cuando es cero que es falso, para las entradas a las expresiones lgicas y relacionales. Las salidas de los expresiones lgicas y relacionales producen un uno cuando es verdadero y un cero cuando es falso. Los operadores relacionales en MATLAB, pueden ser utilizados para comparar arreglos del mismo tamao o comparar un arreglo con un escalar.