Documente Academic
Documente Profesional
Documente Cultură
=
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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 3
12 25 116 0 x x x + + =
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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)<1e-12)=0
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
= + + +
= + + +
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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 2
6 20 62 81 96 84 x x x x x x + + + + + +
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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]
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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 10 p x x x x = +
1 3 x s s
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 46
Arreglos (Vectores,
Matrices, Hipermatrices).
x= linspace(-1,3);
p = [1 4 7 10];
v = polyval(p,x);
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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 n n x
d x d x d x d
+
+ + +
=
+ + +
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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
= +
+ + +
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 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.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 52
Arreglos (Vectores,
Matrices, Hipermatrices).
Operadores relacionales
Operador descripcin
< menor que
<= menor o igual que
> mayor que
>= mayor o igual que
== igual a
~= no igual a
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 53
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 54
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 operacin a
una variable.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 55
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
arreglos de unos y ceros, pueden ser utilizadas en
operaciones matemticas
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 56
Arreglos (Vectores,
Matrices, Hipermatrices).
Operadores lgicos
Operador lgico Descripcin
& AND
| OR
~ NOT
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 57
Arreglos (Vectores,
Matrices, Hipermatrices).
Los operadores lgicos proveen una va 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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 58
Arreglos (Vectores,
Matrices, Hipermatrices).
A=1:9;
tf= (A>2)&(A<6)
tf =
0 0 1 1 1 0 0 0 0
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 59
Arreglos (Vectores,
Matrices, Hipermatrices).
En ocasiones es conveniente conocer
los ndices de los elementos de un
arreglo que satisfacen alguna
expresin relacional. El comando find
cumple esa funcin. Halla los ndices de
los trminos que no son nulos
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 60
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 61
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 62
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 63
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]
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 64
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 nmero de
alumnos con notas menores que 60 puntos, el
nmero de alumnos con notas entre 60 puntos y 89
puntos y los alumnos con notas mayor o igual 90
puntos.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 65
Arreglos (Vectores,
Matrices, Hipermatrices).
Cadenas de caracteres
En MATLAB las variables texto se
denominan cadenas de caracteres o
simplemente cadenas.
Las cadenas de caracteres en MATLAB son
arreglos de valores ASCII. La cadena de
caracteres hay que encerrarla entre
apstrofes
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 66
Arreglos (Vectores,
Matrices, Hipermatrices).
Sea
t= Esta es una cadena de caracteres
t =
Esta es una cadena de caracteres
Cada caracter en una cadena es un
elemento en el arreglo y cada elemento
ocupa 2 bytes
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 67
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 68
Arreglos (Vectores,
Matrices, Hipermatrices).
Como las cadenas son arreglos numricos
con atributos especiales, con ellos se
pueden utilizar todas las herramientas para
el trabajo con arreglos, sea
u = t(20:32)
u=
de caracteres
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 69
Arreglos (Vectores,
Matrices, Hipermatrices).
Conversin de cadenas
double Convierte cadenas al cdigo ASCII
str2num Convierte cadenas a nmeros
num2str Convierte nmeros a cadenas
bin2dec Convierte cadena binaria a decimal entero
dec2bin Convierte nmero decimal a cadena binaria
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 70
Arreglos (Vectores,
Matrices, Hipermatrices).
Las cadenas como las matrices, pueden tener
mltiples filas, pero cada fila tiene que tener
el mismo nmero de columnas.
r= [Una cadena de caracteres con
mas de una fila debe tener
igual numero de columnas ]
Note que se agregaron espacios en blanco
para completar el nmero de columnas. Si
eso no se hace, en la pantalla aparece error.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 71
Arreglos (Vectores,
Matrices, Hipermatrices).
En ocasiones es conveniente colocar un resultado
numrico dentro de una cadena, sea
radio = 2.5 ; % metros
rea = pi*(radio)^2; % metros cuadrados
t = [ Un circulo de radio num2str(radio) ...
tiene un rea de num2str(rea) .];
disp(t)
Un circulo de radio 2.5 tiene un rea de 19.63.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 72
Arreglos (Vectores,
Matrices, Hipermatrices).
Funciones de cadenas
blanks(n) Retorna una cadena de n espacios
en blanco
eval(string) Evala una cadena como un
comando MATLAB
findstr(s1,s2) Busca una cadena dentro de otra
ischar(s) Verdadero si la entrada es una
cadena
lower(s) Cambia la cadena a minscula
strncmp(s1,s2,n) Verdadero si los n primeros
caracteres son idnticos.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 73
Arreglos (Vectores,
Matrices, Hipermatrices).
Ejemplos
b = Juan fue a jugar con su hijo
findstr(b, ) halla la posicin de los espacios
ans =
5 9 11 17 21 24
findstr(b,j) halla la letra j
ans =
12 27
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 74
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
permite que usted nombre y manipule un
grupo de datos de diferentes tamaos y
tipos.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 75
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 76
Arreglos (Vectores,
Matrices, Hipermatrices).
Los arreglos de celdas se direccionan de la
misma manera que los arreglos.
C(2:3)
ans =
entonces
mas tarde
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 77
Arreglos (Vectores,
Matrices, Hipermatrices).
Como cualquier tipo de arreglo, los arreglos de
celdas se pueden construir asignando datos a cada
celda individual. Sea
A(1,1)={[1 2 3;4 5 6;7 8 9]};
A(1,2)={2+ 3i};
A(2,1)={Una cadena texto};
A(2,2)={12:-2:0};
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 78
Arreglos (Vectores,
Matrices, Hipermatrices).
Cada elemento del arreglo se puede escribir tambin
as:
A{1,1}=[1 2 3;4 5 6;7 8 9];
Las llaves indican que es un elemento de celda.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 79
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]
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 80
Arreglos (Vectores,
Matrices, Hipermatrices).
Para mostrar el contenido de cada celda
utilice el comando:
celldisp(A)
A{1,1} =
1 2 3
4 5 6
7 8 9
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 81
Arreglos (Vectores,
Matrices, Hipermatrices).
A{2,1} =
Una cadena texto
A{1,2} =
2.0000 + 3.0000i
A{2,2} =
12 10 8 6 4 2 0
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 83
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.
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 84
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
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 85
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)
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 86
ESTRUCTURAS.
T =
Nombre: 'Efren'
Edad: 38
T =
1x2 struct array with fields:
Nombre
Edad
T =
1x3 struct array with fields:
Nombre
Edad
19/10/2014
Ing. Efrn Herrera Muentes.
ESPOL-FIEC. 87
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.