Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
MATLAB-SIMULINK.
14/12/2014
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
EFRN VINICIO HERRERA MUENTES.
eherrera@espol.edu.ec eherrera@fiec.espol.edu.ec
14/12/2014
LITORAL.
FACULTAD DE INGENIERA ELCTRICA Y
COMPUTACIN.
Guayaquil Ecuador.
Noviembre.
2012
Ing. Efrn Herrera Muentes.
ESPOL-FIEC.
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
Programa
14/12/2014
Arreglos (Vectores,
Matrices, Hipermatrices).
Ej:Guardarlo como:
Deber_Clase#_efren_herrera_m#.m
Ej: Guardarlo como
Clase#_efren_herrera_m#.m
14/12/2014
Arreglos (Vectores,
Matrices, Hipermatrices).
MATLAB trabaja esencialmente con matrices de nmeros
14/12/2014
Arreglos (Vectores,
Matrices, Hipermatrices).
Ejercicio 4.
Realizar todas las instrucciones que
veremos de arreglos.
14/12/2014
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/12/2014
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/12/2014
Arreglos (Vectores,
Matrices, Hipermatrices).
Programa de aplicacin de vectores:
Realizar un programa que me permita
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/12/2014
10
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/12/2014
11
Arreglos (Vectores,
Matrices, Hipermatrices).
Dimensin de un vector
Se utiliza el comando length
length(t)
ans =
11
14/12/2014
12
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/12/2014
2
5
8
3
6
9
Ing. Efrn Herrera Muentes.
ESPOL-FIEC.
13
Arreglos (Vectores,
Matrices, Hipermatrices).
Programa de aplicacin de matrices:
Realizar un programa que me permita
14
Arreglos (Vectores,
Matrices, Hipermatrices).
Restar una constante a una matriz,
trmino a trmino
z =g 2
z=
-1 0 1
234
14/12/2014
15
Arreglos (Vectores,
Matrices, Hipermatrices).
Multiplicar una matriz por una
y=
135
7 9 11
14/12/2014
y = 2*g -1
16
Arreglos (Vectores,
Matrices, Hipermatrices).
Multiplicacin de matrices trmino a trmino
1 8 15
12 5 36
14/12/2014
17
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/12/2014
18
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
ans=
19
Arreglos (Vectores,
Matrices, Hipermatrices).
Exponenciacin trmino a trmino
ans=
1 4 9
16 25 36
ans =
2 4 8
16 32 64
14/12/2014
g.^2
2.^g
20
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/12/2014
21
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/12/2014
22
Arreglos (Vectores,
Matrices, Hipermatrices).
Arreglo de unos y ceros
ones(2)
ans =
1 1
1 1
zeros(2,3)
ans =
000
000
14/12/2014
23
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/12/2014
24
Arreglos (Vectores,
Matrices, Hipermatrices).
ones(size(a))
ans =
111
111
14/12/2014
25
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/12/2014
% anular un trmino
26
Arreglos (Vectores,
Matrices, Hipermatrices).
a(:,3)
ans =
14/12/2014
27
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/12/2014
28
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/12/2014
29
Arreglos (Vectores,
Matrices, Hipermatrices).
D = B(:)
D=
1
4
7
3
6
9
F= D.
% transponer
F=
147369
14/12/2014
30
Arreglos (Vectores,
Matrices, Hipermatrices).
Comparacin de arreglos
ans =
14/12/2014
0
Ing. Efrn Herrera Muentes.
ESPOL-FIEC.
31
Arreglos (Vectores,
Matrices, Hipermatrices).
ismember identifica trminos de la
primera matriz que no estn en la
segunda.
ismember(A,B)
ans =
14/12/2014
1
1
1
1
1
0
1
1
1
Ing. Efrn Herrera Muentes.
ESPOL-FIEC.
32
Arreglos (Vectores,
Matrices, Hipermatrices).
Programa de aplicacin de matrices y
operadores especiales:
matriz cuadrada.
Mostrar la matriz.
Mostrar la matriz haciendo ceros los elementos
debajo de la diagonal secundaria.
Mostrar la matriz haciendo ceros los elementos
arriba de la diagonal principal.
14/12/2014
33
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/12/2014
34
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/12/2014
35
Arreglos (Vectores,
Matrices, Hipermatrices).
Cuando el nmero de ecuaciones es
36
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/12/2014
37
Arreglos (Vectores,
Matrices, Hipermatrices).
x = A\b
x=
-165.9000
99.0000
168.0000
14/12/2014
38
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/12/2014
39
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/12/2014
40
Arreglos (Vectores,
Matrices, Hipermatrices).
Operaciones con polinomios
x 12 x 25 x 116 0
4
14/12/2014
41
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/12/2014
42
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/12/2014
43
Arreglos (Vectores,
Matrices, Hipermatrices).
Multiplicacin de polinomios
44
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/12/2014
45
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
x 6 x 20 x 62 x 81x 96 x 84
6
14/12/2014
46
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/12/2014
47
Arreglos (Vectores,
Matrices, Hipermatrices).
Derivada de un polinomio
Sea g = [1 6 20 48 69 72 44]
h = polyder(g)
h=
6 30 80 144 138 72
14/12/2014
48
Arreglos (Vectores,
Matrices, Hipermatrices).
Evaluacin de un polinomio
1 x 3
14/12/2014
49
Arreglos (Vectores,
Matrices, Hipermatrices).
x= linspace(-1,3);
p = [1 4 7 10];
v = polyval(p,x);
14/12/2014
50
Arreglos (Vectores,
Matrices, Hipermatrices).
Polinomios racionales
n( x) n1 x m n2 x m1 ... nm1
d ( x) d1 x n d2 x n1 ... dn1
[nd,dd] = polyder(n,d)
nd = -1 20 100 2000 10000
dd = 1 20 300 2000 10000 0 0
14/12/2014
51
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/12/2014
52
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
53
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
Se puede volver al polinomio original mediante
[nn,dd] = residue(r,p,k)
nn= 1 10 100
dd= 1 10 100 0
14/12/2014
54
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/12/2014
55
Arreglos (Vectores,
Matrices, Hipermatrices).
Operadores relacionales
Operador
<
<=
>
>=
==
~=
14/12/2014
descripcin
menor que
menor o igual que
mayor que
mayor o igual que
igual a
no igual a
Ing. Efrn Herrera Muentes.
ESPOL-FIEC.
56
Arreglos (Vectores,
Matrices, Hipermatrices).
A = 1:9, B = 9-A
A=
123456789
B=
876543210
tf = A > 4
tf =
000011111
14/12/2014
57
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/12/2014
58
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/12/2014
59
Arreglos (Vectores,
Matrices, Hipermatrices).
Operadores lgicos
Operador lgico Descripcin
&
AND
|
OR
~
NOT
14/12/2014
60
Arreglos (Vectores,
Matrices, Hipermatrices).
14/12/2014
61
Arreglos (Vectores,
Matrices, Hipermatrices).
A=1:9;
tf= (A>2)&(A<6)
tf =
001110000
14/12/2014
62
Arreglos (Vectores,
Matrices, Hipermatrices).
En ocasiones es conveniente conocer
14/12/2014
63
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/12/2014
64
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
65
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/12/2014
66
Arreglos (Vectores,
Matrices, Hipermatrices).
Hipermatrices (nxmxl)
D=rand(2,3,4)
14/12/2014
67
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/12/2014
de
el
89
90
68
Arreglos (Vectores,
Matrices, Hipermatrices).
Cadenas de caracteres
En MATLAB las variables texto se
69
Arreglos (Vectores,
Matrices, Hipermatrices).
Sea
t= Esta es una cadena de caracteres
t=
14/12/2014
70
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/12/2014
71
Arreglos (Vectores,
Matrices, Hipermatrices).
Como las cadenas son arreglos numricos
u = t(20:32)
u=
de caracteres
14/12/2014
72
Arreglos (Vectores,
Matrices, Hipermatrices).
Conversin de cadenas
double
str2num
num2str
bin2dec
dec2bin
14/12/2014
73
Arreglos (Vectores,
Matrices, Hipermatrices).
Las cadenas como las matrices, pueden tener
mltiples filas, pero cada fila tiene que tener
el mismo nmero de columnas.
74
Arreglos (Vectores,
Matrices, Hipermatrices).
disp(t)
75
Arreglos (Vectores,
Matrices, Hipermatrices).
Funciones de cadenas
blanks(n)
14/12/2014
76
Arreglos (Vectores,
Matrices, Hipermatrices).
Ejemplos
ans =
5 9 11 17 21 24
findstr(b,j)
halla la letra j
ans =
12 27
14/12/2014
77
Arreglos (Vectores,
Matrices, Hipermatrices).
Para eliminar la dificultad, con la cadena, se
utilizan arreglos de celdas.
Un arreglo de celdas, es un tipo de dato que
14/12/2014
78
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/12/2014
79
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/12/2014
80
Arreglos (Vectores,
Matrices, Hipermatrices).
Como cualquier tipo de arreglo, los arreglos de
14/12/2014
81
Arreglos (Vectores,
Matrices, Hipermatrices).
Cada elemento del arreglo se puede escribir tambin
as:
14/12/2014
82
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/12/2014
83
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/12/2014
3
6
9
Ing. Efrn Herrera Muentes.
ESPOL-FIEC.
84
Arreglos (Vectores,
Matrices, Hipermatrices).
A{2,1} =
Una cadena texto
A{1,2} =
2.0000 + 3.0000i
A{2,2} =
12
14/12/2014
10
85
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
Programa
14/12/2014
87
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/12/2014
88
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/12/2014
89
ESTRUCTURAS.
T=
Nombre: 'Efren'
Edad: 38
T=
1x2 struct array with fields:
Nombre
Edad
T=
1x3 struct array with fields:
Nombre
Edad
14/12/2014
90
SEMINARIO INTRODUCCIN A
MATLAB-SIMULINK.
Programa
14/12/2014
91