Seminario Matlab Simulink
Seminario Matlab Simulink
Seminario Matlab Simulink
MATLAB-SIMULINK.
14/01/2015
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
PABLO DANILO MNDEZ MAIGUA.
[email protected]
14/01/2015
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
Programa
14/01/2015
Arreglos (Vectores,
Matrices, Hipermatrices).
MATLAB trabaja esencialmente con matrices de nmeros
14/01/2015
Arreglos (Vectores,
Matrices, Hipermatrices).
Ejercicio 4.
Ej: Guardarlo como (nombre_avmh.m)
14/01/2015
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
4
14/01/2015
Arreglos (Vectores,
Matrices, Hipermatrices).
El vector anterior se pudo haber creado as:
y = x % el apstrofe implica trasponer la
fila
Bsqueda de un trmino especfico en el
vector, sea
x(2)
ans =
2
14/01/2015
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
Arreglos (Vectores,
Matrices, Hipermatrices).
logspace(d1,d2,n)
w = logspace(-1,2,n);
Genera un arreglo logartmico de 10^-1 a 10^2
con n puntos
w = logspace(-1,2)
14/01/2015
Arreglos (Vectores,
Matrices, Hipermatrices).
Dimensin de un vector
Se utiliza el comando length
length(t)
ans =
11
14/01/2015
10
Arreglos (Vectores,
Matrices, Hipermatrices).
Matrices
g = [1 2 3;4 5 6];
4 5 6 % dar retorno
7 8 9]
h=
1
4
7
14/01/2015
2
5
8
3
6
9
Ing. Pablo Mndez. UTN.
11
Arreglos (Vectores,
Matrices, Hipermatrices).
Restar una constante a una matriz,
trmino a trmino
z =g 2
z=
-1 0 1
234
14/01/2015
12
Arreglos (Vectores,
Matrices, Hipermatrices).
Multiplicar una matriz por una
y=
135
7 9 11
14/01/2015
y = 2*g -1
13
Arreglos (Vectores,
Matrices, Hipermatrices).
Multiplicacin de matrices trmino a trmino
1 8 15
12 5 36
14/01/2015
14
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
g*x Si sera vlida la multiplicacin
matricial
14/01/2015
15
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]
16
Arreglos (Vectores,
Matrices, Hipermatrices).
Exponenciacin trmino a trmino
ans=
1 4 9
16 25 36
ans =
2 4 8
16 32 64
14/01/2015
g.^2
2.^g
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=
12
d = a + i*a
d =
e = d
e =
1.0000 1.0000i
2.0000 2.0000i
14/01/2015
18
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 = d.
f=
1.0000 + 1.0000i
2.0000 + 2.0000i
14/01/2015
19
Arreglos (Vectores,
Matrices, Hipermatrices).
Arreglo de unos y ceros
ones(2)
ans =
1 1
1 1
zeros(2,3)
ans =
000
000
14/01/2015
20
Arreglos (Vectores,
Matrices, Hipermatrices).
Dimensin de una matriz
Sea a = [1 4 7; 3 5 8]
a=
147
358
Con el comando size(a) se obtiene su dimensin
size(a)
ans =
2 3
14/01/2015
21
Arreglos (Vectores,
Matrices, Hipermatrices).
ones(size(a))
ans =
111
111
14/01/2015
22
Arreglos (Vectores,
Matrices, Hipermatrices).
Manipulacin de arreglos
a = [1 4 7;3 5 8];
Sea a(2,2) = 0
a=
147
308
a(:,1) = 4
ans=
447
408
14/01/2015
% anular un trmino
23
Arreglos (Vectores,
Matrices, Hipermatrices).
a(:,3)
ans =
14/01/2015
24
Arreglos (Vectores,
Matrices, Hipermatrices).
Crear una matriz a partir de otra
B = [1 2 3;4 5 6;7 8 9]
B=
123
456
789
C=B(2:3,1:2)
C=
45
78
14/01/2015
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
14/01/2015
26
Arreglos (Vectores,
Matrices, Hipermatrices).
D = B(:)
D=
1
4
7
3
6
9
F= D.
% transponer
F=
147369
14/01/2015
27
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
ans =
14/01/2015
0
Ing. Pablo Mndez. UTN.
28
Arreglos (Vectores,
Matrices, Hipermatrices).
ismember identifica trminos de la
primera matriz que no estn en la
segunda.
ismember(A,B)
ans =
14/01/2015
1
1
1
1
1
0
1
1
1
Ing. Pablo Mndez. UTN.
29
Arreglos (Vectores,
Matrices, Hipermatrices).
Conjunto de ecuaciones lineales
1 2 3 x1 366
4 5 6 x 804
7 8 0 x3 351
Ax = b
1
xA b
14/01/2015
30
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
31
Arreglos (Vectores,
Matrices, Hipermatrices).
Cuando el nmero de ecuaciones es
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
14/01/2015
33
Arreglos (Vectores,
Matrices, Hipermatrices).
x = A\b
x=
-165.9000
99.0000
168.0000
14/01/2015
34
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
35
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
36
Arreglos (Vectores,
Matrices, Hipermatrices).
Operaciones con polinomios
x 12 x 25x 116 0
4
14/01/2015
37
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
38
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)<1e-12)=0
14/01/2015
39
Arreglos (Vectores,
Matrices, Hipermatrices).
Multiplicacin de polinomios
Se realiza mediante el comando conv.
Sean los siguientes polinomios
a ( x) x 3 2 x 2 3x 4
b( x) x3 4 x 2 9 x 16
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
14/01/2015
40
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
41
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
14/01/2015
42
Arreglos (Vectores,
Matrices, Hipermatrices).
Divisin de polinomios
deconv
c=[1 6 20 50 75 84 64]
b = [1 4 9 16];
[q,r] = deconv(c,b)
En este caso,
q=
1234
y
r=
0000000
14/01/2015
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]
h = polyder(g)
h=
6 30 80 144 138 72
14/01/2015
44
Arreglos (Vectores,
Matrices, Hipermatrices).
Evaluacin de un polinomio
Para evaluar los polinomios se utiliza el
comando polyval
3
2
Sea el polinomio
p ( x) x 4 x
7 x 10
1 x 3
14/01/2015
45
Arreglos (Vectores,
Matrices, Hipermatrices).
x= linspace(-1,3);
p = [1 4 7 10];
v = polyval(p,x);
14/01/2015
46
Arreglos (Vectores,
Matrices, Hipermatrices).
Polinomios racionales
n( x) n1 x m n2 x m1 ... nm1
d ( x) d1 x n d 2 x n 1 ... d n1
[nd,dd] = polyder(n,d)
nd = -1 20 100 2000 10000
dd = 1 20 300 2000 10000 0 0
14/01/2015
47
Arreglos (Vectores,
Matrices, Hipermatrices).
Clculo del residuo
Para descomponer en fracciones parciales
[r,p,k]=residue(n,d)
donde
r : coeficiente de la expansin
p: polos de la funcin
k: el trmino directo
14/01/2015
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
49
Arreglos (Vectores,
Matrices, Hipermatrices).
El resultado es:
n( x )
1.1547i
1.1547i
1
d ( x) x 5 8.6603i x 5 8.6603i x
[nn,dd] = residue(r,p,k)
nn= 1 10 100
dd= 1 10 100 0
14/01/2015
50
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
14/01/2015
51
Arreglos (Vectores,
Matrices, Hipermatrices).
Operadores relacionales
Operador
<
<=
>
>=
==
~=
14/01/2015
descripcin
menor que
menor o igual que
mayor que
mayor o igual que
igual a
no igual a
52
Arreglos (Vectores,
Matrices, Hipermatrices).
A = 1:9, B = 9-A
A=
123456789
B=
876543210
tf = A > 4
tf =
000011111
14/01/2015
53
Arreglos (Vectores,
Matrices, Hipermatrices).
df = (A==B)
df =
000000000
Note la diferencia entre = y ==
== compara dos variables y retorna un uno si son
iguales y un cero, si no lo son.
14/01/2015
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 lgicas son
14/01/2015
55
Arreglos (Vectores,
Matrices, Hipermatrices).
Operadores lgicos
Operador lgico Descripcin
&
AND
|
OR
~
NOT
14/01/2015
56
Arreglos (Vectores,
Matrices, Hipermatrices).
14/01/2015
57
Arreglos (Vectores,
Matrices, Hipermatrices).
A=1:9;
tf= (A>2)&(A<6)
tf =
001110000
14/01/2015
58
Arreglos (Vectores,
Matrices, Hipermatrices).
En ocasiones es conveniente conocer
14/01/2015
59
Arreglos (Vectores,
Matrices, Hipermatrices).
x =-3:3
x=
-3 2 1 0 1 2 3
h = find(x)
h=
123567
L = find(x>0)
L =
567
14/01/2015
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
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
14/01/2015
62
Arreglos (Vectores,
Matrices, Hipermatrices).
Hipermatrices (nxmxl)
D=rand(2,3,4)
14/01/2015
63
Arreglos (Vectores,
Matrices, Hipermatrices).
Ejercicio 4.1.
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 nmero
alumnos con notas menores que 60 puntos,
nmero de alumnos con notas entre 60 puntos y
puntos y los alumnos con notas mayor o igual
puntos.
14/01/2015
de
el
89
90
64
Arreglos (Vectores,
Matrices, Hipermatrices).
Cadenas de caracteres
En MATLAB las variables texto se
65
Arreglos (Vectores,
Matrices, Hipermatrices).
Sea
t= Esta es una cadena de caracteres
t=
14/01/2015
66
Arreglos (Vectores,
Matrices, Hipermatrices).
Para ver la representacin en cdigo ASCII de cada
caracter de la cadena se utiliza el comando double.
Sea double(t)
Columns 1 through 8
69 115 116 97 32 101 115 32
Columns 9 through 16
117 110 97 32 99 97 100 101
Columns 17 through 24
110 97 32 100 101 32 99 97
Columns 25 through 32
114 97 99 116 101 114 101 115
14/01/2015
67
Arreglos (Vectores,
Matrices, Hipermatrices).
Como las cadenas son arreglos numricos
u = t(20:32)
u=
de caracteres
14/01/2015
68
Arreglos (Vectores,
Matrices, Hipermatrices).
Conversin de cadenas
double
str2num
num2str
bin2dec
dec2bin
14/01/2015
69
Arreglos (Vectores,
Matrices, Hipermatrices).
Las cadenas como las matrices, pueden tener
mltiples filas, pero cada fila tiene que tener
el mismo nmero de columnas.
70
Arreglos (Vectores,
Matrices, Hipermatrices).
disp(t)
71
Arreglos (Vectores,
Matrices, Hipermatrices).
Funciones de cadenas
blanks(n)
14/01/2015
72
Arreglos (Vectores,
Matrices, Hipermatrices).
Ejemplos
ans =
5 9 11 17 21 24
findstr(b,j)
halla la letra j
ans =
12 27
14/01/2015
73
Arreglos (Vectores,
Matrices, Hipermatrices).
Para eliminar la dificultad, con la cadena, se
utilizan arreglos de celdas.
14/01/2015
74
Arreglos (Vectores,
Matrices, Hipermatrices).
Por ejemplo:
C = {como;entonces;mas tarde}
C=
como
entonces
mas tarde
Note que para definir el arreglo de celdas se
utiliz llaves. Cada fila tiene diferente nmero
de caracteres
14/01/2015
75
Arreglos (Vectores,
Matrices, Hipermatrices).
Los arreglos de celdas se direccionan de la
misma manera que los arreglos.
C(2:3)
ans =
entonces
mas tarde
14/01/2015
76
Arreglos (Vectores,
Matrices, Hipermatrices).
Como cualquier tipo de arreglo, los arreglos de
14/01/2015
77
Arreglos (Vectores,
Matrices, Hipermatrices).
Cada elemento del arreglo se puede escribir tambin
as:
14/01/2015
78
Arreglos (Vectores,
Matrices, Hipermatrices).
Si se teclea A, en la pantalla de MATLAB
aparece como se muestra y double indica
doble precisin.
A=
[3x3 double] [2.0000+ 3.0000i]
'Una cadena texto'
[1x7 double]
14/01/2015
79
Arreglos (Vectores,
Matrices, Hipermatrices).
Para mostrar el contenido de cada celda
utilice el comando:
celldisp(A)
A{1,1} =
1 2
4 5
7 8
14/01/2015
3
6
9
80
Arreglos (Vectores,
Matrices, Hipermatrices).
A{2,1} =
Una cadena texto
A{1,2} =
2.0000 + 3.0000i
A{2,2} =
12
14/01/2015
10
81
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
Programa
14/01/2015
83
ESTRUCTURAS.
STRUCT Create or convert to structure array.
S = STRUCT('field1',VALUES1,'field2',VALUES2,...)
S=struct('Nombre','Efrn','Edad',38)
S=
Nombre: 'Efrn'
Edad: 38
14/01/2015
84
ESTRUCTURAS.
Las estructuras pueden manejarse como arreglos:
Ej: Si se desea ingresar una lista.
T(1)=struct('Nombre','Efren','Edad',38)
T(2)=struct('Nombre','Luis','Edad',11)
T(3)=struct('Nombre','Andre','Edad',9)
14/01/2015
85
ESTRUCTURAS.
T=
Nombre: 'Efren'
Edad: 38
T=
1x2 struct array with fields:
Nombre
Edad
T=
1x3 struct array with fields:
Nombre
Edad
14/01/2015
86
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
Programa
14/01/2015
87