You are on page 1of 63

16/10/2013 Ing. Pablo Méndez. UTN.

1
SEMINARIO INTRODUCCIÓN A
MATLAB-SIMULINK.

16/10/2013 Ing. Pablo Méndez. UTN. 2
SEMINARIO INTRODUCCIÓN A
MATLAB-SIMULINK.
• Programa
Características generales de MatLab.
Comandos básicos.
Control de flujo de instrucciones.
Funciones.
Arreglos (Vectores, Matrices, Hipermatrices).
Estructuras.
Gráficos 2D, 3D.
Programación en MatLab.

16/10/2013 Ing. Pablo Méndez. UTN. 3
Arreglos (Vectores,
Matrices, Hipermatrices).

• MATLAB trabaja esencialmente con matrices de números
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. Aún así,
conviene saber que la matriz está guardada por columnas
y que nos podemos referir a un elemento empleando sólo
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.

16/10/2013 Ing. Pablo Méndez. UTN. 4
Arreglos (Vectores,
Matrices, Hipermatrices).
• Ejercicio 4.
• Ej: Guardarlo como (nombre_avmh.m)

• Realizar todas las instrucciones que
veremos de arreglos.

16/10/2013 Ing. Pablo Méndez. UTN. 5
Arreglos (Vectores,
Matrices, Hipermatrices).

• Creación de un vector fila
• x = [1 2 3 4];
Creación de un vector columna
• y = [1;2;3;4]
• y = 1
• 2
• 3
• 4

16/10/2013 Ing. Pablo Méndez. UTN. 6
Arreglos (Vectores,
Matrices, Hipermatrices).

• El vector anterior se pudo haber creado así:
• y = x’ % el apóstrofe implica trasponer la
fila
• Búsqueda de un término específico en el
vector, sea
• x(2)
• ans =
• 2


16/10/2013 Ing. Pablo Méndez. UTN. 7
Arreglos (Vectores,
Matrices, Hipermatrices).

• También 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


16/10/2013 Ing. Pablo Méndez. UTN. 8
Arreglos (Vectores,
Matrices, Hipermatrices).

• logspace(d1,d2,n)
• Genera un arreglo logarítmico de 10^d1 a 10^d2
con n puntos

• w = logspace(-1,2,n);
• Genera un arreglo logarítmico de 10^-1 a 10^2
con n puntos

• w = logspace(-1,2)
• Genera un arreglo logarítmico de10^-1 a 10^2
con 50 puntos


16/10/2013 Ing. Pablo Méndez. UTN. 9
Arreglos (Vectores,
Matrices, Hipermatrices).

• Dimensión de un vector

• Se utiliza el comando length

• length(t)
• ans =
• 11


16/10/2013 Ing. Pablo Méndez. UTN. 10
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


16/10/2013 Ing. Pablo Méndez. UTN. 11
Arreglos (Vectores,
Matrices, Hipermatrices).

• Restar una constante a una matriz,
término a término
• z =g – 2
• z =
• -1 0 1
• 2 3 4


16/10/2013 Ing. Pablo Méndez. UTN. 12
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


16/10/2013 Ing. Pablo Méndez. UTN. 13
Arreglos (Vectores,
Matrices, Hipermatrices).

• Multiplicación de matrices término a término
• 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


16/10/2013 Ing. Pablo Méndez. UTN. 14
Arreglos (Vectores,
Matrices, Hipermatrices).

• Si se escribe
• g*x da error, pues no se da la
condición para la multiplicación de
matrices, ya que ambas matrices son
de dimensión 2x3
• Si se escribe
• g*x’ Si sería válida la multiplicación
matricial


16/10/2013 Ing. Pablo Méndez. UTN. 15
Arreglos (Vectores,
Matrices, Hipermatrices).

• Sea el caso de la división término a término
• x = [1 4 5;3 1 6] y g = [1 2 3;4 5 6]

• g./x división por la derecha
• ans=
• 1.0000 0.5000 0.6000
• 1.3333 5.0000 1.0000
• g.\x división por la izquierda
• ans =
• 1.0000 2.0000 1.6667
• 0.7500 0.2000 1.0000


16/10/2013 Ing. Pablo Méndez. UTN. 16
Arreglos (Vectores,
Matrices, Hipermatrices).

• Exponenciación término a término
• g.^2
• ans=
• 1 4 9
• 16 25 36
• 2.^g
• ans =
• 2 4 8
• 16 32 64


16/10/2013 Ing. Pablo Méndez. UTN. 17
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 = d’
• e =
• 1.0000 –1.0000i
• 2.0000 – 2.0000i


16/10/2013 Ing. Pablo Méndez. UTN. 18
Arreglos (Vectores,
Matrices, Hipermatrices).

• Para que se mantenga el signo en la
transpuesta
• se debe poner un punto antes del apóstrofo
• d =
• 1.0000 + 1.0000i 2.0000 + 2.0000i
• f = d.’
• f =
• 1.0000 + 1.0000i
• 2.0000 + 2.0000i


16/10/2013 Ing. Pablo Méndez. UTN. 19
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


16/10/2013 Ing. Pablo Méndez. UTN. 20
Arreglos (Vectores,
Matrices, Hipermatrices).

• Dimensión 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 dimensión
• size(a)
• ans =
• 2 3


16/10/2013 Ing. Pablo Méndez. UTN. 21
Arreglos (Vectores,
Matrices, Hipermatrices).

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


16/10/2013 Ing. Pablo Méndez. UTN. 22
Arreglos (Vectores,
Matrices, Hipermatrices).

• Manipulación de arreglos
• a = [1 4 7;3 5 8];

• Sea a(2,2) = 0 % anular un término
• a =
• 1 4 7
• 3 0 8
• a(:,1) = 4 % Obligar a los términos de la columna 1
• % a que valgan 4
• ans=
• 4 4 7
• 4 0 8


16/10/2013 Ing. Pablo Méndez. UTN. 23
Arreglos (Vectores,
Matrices, Hipermatrices).

• a(:,3) % Buscar los términos
% de la columna 3
• ans =
• 7
• 8


16/10/2013 Ing. Pablo Méndez. UTN. 24
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

16/10/2013 Ing. Pablo Méndez. UTN. 25
Arreglos (Vectores,
Matrices, Hipermatrices).

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


16/10/2013 Ing. Pablo Méndez. UTN. 26
Arreglos (Vectores,
Matrices, Hipermatrices).

• D = B(:) % ordena columna tras columna
• D =
• 1
• 4
• 7
• 3
• 6
• 9
• F= D.’ % transponer
• F =
• 1 4 7 3 6 9


16/10/2013 Ing. Pablo Méndez. UTN. 27
Arreglos (Vectores,
Matrices, Hipermatrices).

• Comparación 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 dimensión y términos
%idénticos.

• ans =
• 0



16/10/2013 Ing. Pablo Méndez. UTN. 28
Arreglos (Vectores,
Matrices, Hipermatrices).

• ismember identifica términos de la
primera matriz que no están en la
segunda.

• ismember(A,B)
• ans =

• 1 1 1
• 1 1 1
• 1 0 1

16/10/2013 Ing. Pablo Méndez. UTN. 29
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
( ( (
( ( (
=
( ( (
( ( (
¸ ¸ ¸ ¸ ¸ ¸
1
x A b
÷
=

16/10/2013 Ing. Pablo Méndez. UTN. 30
Arreglos (Vectores,
Matrices, Hipermatrices).

• Para resolver dicha ecuación 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



16/10/2013 Ing. Pablo Méndez. UTN. 31
Arreglos (Vectores,
Matrices, Hipermatrices).

• Cuando el número de ecuaciones es
diferente al número de incógnitas no
existe solución única.
• Sea el caso de mas ecuaciones que
incógnitas, el operador de división
automáticamente halla la solución que
minimiza el error cuadrático en
• Ax – b = 0


16/10/2013 Ing. Pablo Méndez. UTN. 32
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


16/10/2013 Ing. Pablo Méndez. UTN. 33
Arreglos (Vectores,
Matrices, Hipermatrices).

• Cuando hay menos ecuaciones que incógnitas,
• existen infinitas soluciones. MATLAB da dos
• soluciones, una con el número máximo de
• ceros y otra con la norma mínima
• 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


16/10/2013 Ing. Pablo Méndez. UTN. 34
Arreglos (Vectores,
Matrices, Hipermatrices).

• Solución con norma mínima
• xn = pinv(A)*b

• xn=
• 30.8182
• -168.9818
• 99.0000
• 159.0545

• norma(xn) = 254,173

• norma(x) = 256.2200


16/10/2013 Ing. Pablo Méndez. UTN. 35
Arreglos (Vectores,
Matrices, Hipermatrices).

• Funciones matriciales

• det(A) Determinante de A
• [v,d]=eig(A) Vectores y raíces de A
• inv(A) Inversa de A
• poly(A) Polinomio característico de A
• polyvalm(p,A) Evalúa el polinomio p con argumento
• matricial
• trace(A) Suma de los elemento de la diagonal


16/10/2013 Ing. Pablo Méndez. UTN. 36
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 representación mediante MATLAB es:
• p=[1 -12 0 25 116]

4 3
12 25 116 0 x x x ÷ + + =

16/10/2013 Ing. Pablo Méndez. UTN. 37
Arreglos (Vectores,
Matrices, Hipermatrices).

• Para obtener las raíces 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 convención de que los polinomios
• son vectores filas y las raíces son vectores columnas

16/10/2013 Ing. Pablo Méndez. UTN. 38
Arreglos (Vectores,
Matrices, Hipermatrices).

Teniendo las raíces 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 común que se presenten
coeficientes con valores cercanos a cero. Ello se resuelve
mediante el comando

• pp(abs(pp)<1e-12)=0

16/10/2013 Ing. Pablo Méndez. UTN. 39
Arreglos (Vectores,
Matrices, Hipermatrices).

Multiplicación 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
= + + +
= + + +

16/10/2013 Ing. Pablo Méndez. UTN. 40
Arreglos (Vectores,
Matrices, Hipermatrices).

• Suma de polinomios
• MATLAB no suministra comandos para la
• realización 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


16/10/2013 Ing. Pablo Méndez. UTN. 41
Arreglos (Vectores,
Matrices, Hipermatrices).

• Si los polinomios no son del mismo orden o
• dimensión, 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 2
6 20 62 81 96 84 x x x x x x + + + + + +

16/10/2013 Ing. Pablo Méndez. UTN. 42
Arreglos (Vectores,
Matrices, Hipermatrices).

• División 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

16/10/2013 Ing. Pablo Méndez. UTN. 43
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]

• x
6
+ 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

16/10/2013 Ing. Pablo Méndez. UTN. 44
Arreglos (Vectores,
Matrices, Hipermatrices).

• Evaluación de un polinomio

• Para evaluar los polinomios se utiliza el
• comando polyval
• Sea el polinomio

• Se desea evaluarlo para

3 2
( ) 4 7 10 p x x x x = + ÷ ÷
1 3 x ÷ s s

16/10/2013 Ing. Pablo Méndez. UTN. 45
Arreglos (Vectores,
Matrices, Hipermatrices).

• x= linspace(-1,3);

• p = [1 4 – 7 –10];

• v = polyval(p,x);


16/10/2013 Ing. Pablo Méndez. UTN. 46
Arreglos (Vectores,
Matrices, Hipermatrices).

• Polinomios racionales



• En MATLAB esta función es considerada como
• dos polinomios independientes. Sea
• n = [1 –10 100];
• d = [1 10 100 0];
• La derivada de esta relación 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 n n x
d x d x d x d
÷
+
÷
+
+ + +
=
+ + +
16/10/2013 Ing. Pablo Méndez. UTN. 47
Arreglos (Vectores,
Matrices, Hipermatrices).

• Cálculo del residuo
• Para descomponer en fracciones parciales
una una función se utiliza el comando residue
• [r,p,k]=residue(n,d)
• donde
• r : coeficiente de la expansión
• p: polos de la función
• k: el término directo


16/10/2013 Ing. Pablo Méndez. UTN. 48
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


16/10/2013 Ing. Pablo Méndez. UTN. 49
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
= ÷ +
+ ÷ + +

16/10/2013 Ing. Pablo Méndez. UTN. 50
Arreglos (Vectores,
Matrices, Hipermatrices).

• Operadores relacionales y lógicos
• MATLAB considera, que un número no nulo es
• verdadero y cuando es cero que es falso, para las
entradas a las expresiones lógicas y relacionales.
• Las salidas de los expresiones lógicas 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
• tamaño o comparar un arreglo con un escalar.


16/10/2013 Ing. Pablo Méndez. UTN. 51
Arreglos (Vectores,
Matrices, Hipermatrices).

• Operadores relacionales

• Operador descripción
• < menor que
• <= menor o igual que
• > mayor que
• >= mayor o igual que
• == igual a
• ~= no igual a

16/10/2013 Ing. Pablo Méndez. UTN. 52
Arreglos (Vectores,
Matrices, Hipermatrices).

• A = 1:9, B = 9-A
• A =
• 1 2 3 4 5 6 7 8 9

• B=
• 8 7 6 5 4 3 2 1 0
• tf = A > 4
• tf =
• 0 0 0 0 1 1 1 1 1


16/10/2013 Ing. Pablo Méndez. UTN. 53
Arreglos (Vectores,
Matrices, Hipermatrices).

• df = (A==B)
• df =
• 0 0 0 0 0 0 0 0 0
• Note la diferencia entre = y ==
• == compara dos variables y retorna un uno si son
iguales y un cero, si no lo son.
• = se usa para asignar la salida de una operación a
una variable.


16/10/2013 Ing. Pablo Méndez. UTN. 54
Arreglos (Vectores,
Matrices, Hipermatrices).

• A= [1 2 3 4 5 6 7 8 9];
• B=[8 7 6 5 4 3 2 1 0];
• tf = B – (A>2)
• tt =
• 8 7 5 4 3 2 1 0 –1.
• Como las salidas de las operaciones lógicas son
arreglos de unos y ceros, pueden ser utilizadas en
operaciones matemáticas


16/10/2013 Ing. Pablo Méndez. UTN. 55
Arreglos (Vectores,
Matrices, Hipermatrices).

• Operadores lógicos

Operador lógico Descripción
& AND
| OR
~ NOT

16/10/2013 Ing. Pablo Méndez. UTN. 56
Arreglos (Vectores,
Matrices, Hipermatrices).

• Los operadores lógicos proveen una vía para
• combinar o negar expresiones relacionales.
• A=1:9;
• tf = A > 4
• tf =
• 0 0 0 0 1 1 1 1 1
• tf = ~(A>4)
• tf =
• 1 1 1 1 0 0 0 0 0


16/10/2013 Ing. Pablo Méndez. UTN. 57
Arreglos (Vectores,
Matrices, Hipermatrices).

• A=1:9;

• tf= (A>2)&(A<6)
• tf =
• 0 0 1 1 1 0 0 0 0


16/10/2013 Ing. Pablo Méndez. UTN. 58
Arreglos (Vectores,
Matrices, Hipermatrices).

• En ocasiones es conveniente conocer
los índices de los elementos de un
arreglo que satisfacen alguna
expresión relacional. El comando find
cumple esa función. Halla los índices de
los términos que no son nulos


16/10/2013 Ing. Pablo Méndez. UTN. 59
Arreglos (Vectores,
Matrices, Hipermatrices).

• x =-3:3
• x =
• -3 –2 –1 0 1 2 3
• h = find(x)
• h =
• 1 2 3 5 6 7
• L = find(x>0)
• L =
• 5 6 7


16/10/2013 Ing. Pablo Méndez. UTN. 60
Arreglos (Vectores,
Matrices, Hipermatrices).

• Uso de la variable eps

• x =(-3:3)/3;
• x =
• -1.0000 -0.6667 -0.3333 0.0000 0.33330.6667 1.0000

• y = sin(x)./x
• Warning: divide by zero
• y =
• 0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415


16/10/2013 Ing. Pablo Méndez. UTN. 61
Arreglos (Vectores,
Matrices, Hipermatrices).

• Para eliminar dicha dificultad, se agrega eps a x

• x= x +(x==0)*eps;

• y = sin(x)./x

• y =
• 0.8415 0.9276 0.9816 1.0000 0.9816 0.9276
0.8415

16/10/2013 Ing. Pablo Méndez. UTN. 62
Arreglos (Vectores,
Matrices, Hipermatrices).

• Hipermatrices (nxmxl)

• D=rand(2,3,4)

• Si deseamos ingresar una de (3x3x3)
• E(:,:,1)=[1 2 3;1 2 3;1 2 3]
• E(:,:,2)=[1 2 3;1 2 3;1 2 3]
• E(:,:,3)=[1 2 3;1 2 3;1 2 3]


16/10/2013 Ing. Pablo Méndez. UTN. 63
Arreglos (Vectores,
Matrices, Hipermatrices).

• Ejercicio 4.1.
• En un examen las notas obtenidas son las
siguientes:
• notas = [60 75 72 72 78 67 80 63 75 90 89 …
43 59 99 82 12 100]
• Realice un programa que determine el número de
alumnos con notas menores que 60 puntos, el
número de alumnos con notas entre 60 puntos y 89
puntos y los alumnos con notas mayor o igual 90
puntos.