Documentos de Académico
Documentos de Profesional
Documentos de Cultura
10/03/16
Introduccin
El control del flujo durante la ejecucin de
comandos se basa en la estructura de toma de
decisiones.
Con clculos anteriores se decide las operaciones
futuras.
Las estructuras de decisin son del tipo: ciclos for,
ciclos while, if-then-else.
Las estructuras pueden requerir numerosas
instrucciones, entonces pueden formar parte de un
archivo M.
10/03/16
10/03/16
Ciclo for
x=
10/03/16
0.9511 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
Ciclo for
for n=1:10
x(n)=sin(n*pi/10);
n=5;
end
x
x=
Columns 1 through 7
0.3090 0.5878 0.8090 0.9511
1.0000 0.9511 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
data=[3 9 45;7 16 -1]
data =
3 9 45
7 16 -1
for n=data
x=n(1)-n(2)
end
10/03/16
x=
-4
x=
-7
x=
46
for n=1:2
for m=3:-1:1
A(n,m)=n*n+m*m;
end
end
A
A=
2 5 10
5 8 13
Ciclo for
n=1:10;
x=sin(n*pi/10)
x=
Columns 1 through 7
0.3090 0.5878 0.8090
0.9511 0.8090
Columns 8 through 10
0.5878 0.3090 0.0000
0.9511 1.0000
10/03/16
Ciclo while
Permite que un grupo de comandos
(instrucciones) se evale un nmero
indefinido de veces.
Sintaxis
while expresin
(comandos)
end
Los comandos entre el while y el end
se ejecutan siempre que los elementos
en la expresin sean verdaderos.
10/03/16
num=0;eps=1;
while (1+eps)>1
eps=eps/2;
num=num+1;
end
num
num =
53
eps=2*eps
eps =
2.2204e-016
Esta es una manera de calcular la variable especial
de MATLAB eps. Es un nmero que al
adicionarse a 1 no es significativamente superior a
1 (debido a la precisin finita de 16 digitos, se
espera 10-16).
If-else-end
Muchas veces las secuencias de
comandos deben valuarse con base a
una prueba relacional.
if expresin
(comandos)
end
Los comandos entre el if y end se
evalan si todos los elementos en
expresin son verdaderos (diferentes de
cero).
10/03/16
manzanas=10;
% nmero de manzanas
costo=manzanas*2.5 % costo de las manzanas
costo =
25
if manzanas>5
end
costo
costo =
20
if-else-end
En casos que tienen dos alternativas.
if expresin
(comandos valuados si Verdadero)
else
(comandos valuados si Falso)
end
Cuando hay ms de dos alternativas:
if expresin1
(comandos valuados si expresin1 es Verdadera)
elseif expresin2
(comandos valuados si expresin2 es Verdadera)
else
(comandos valuados si las otras expresiones son Falsas)
end
10/03/16
10
break
Es posible salir de los ciclos for y while de manera apropiada, usando la
instruccin break.
EPS=1;
for num=1:1000
EPS=EPS/2;
if (1+EPS)<=1
EPS=EPS*2
break
end
end
EPS =
2.2204e-016
num
num =
53
10/03/16
11
10/03/16
12
Funciones
Son creadas en MATLAB como archivos de comandos, pero deben iniciar con el
encabezado siguiente:
Function [variables de salida]= Nombre de la Funcin
(variables de entrada)
Las variables temporales usadas dentro de la funcin son locales. Despus de ejecutada la
funcin desaparecen del espacio de trabajo.
Ejemplo.- funcin trace:
function t = trace(a)
% Trace suma de elementos de la diagonal
% trace(A) es la suma de los elementos diagonal de A
% que es tambin la suma de los eigenvalores de A
t = sum(diag(a));
A=
1 2
3 4
trace(A)
ans =
5
10/03/16
13
Funciones
Una lnea al inicio de la funcin m tiene la sintaxis de
definicin, en la primera lnea del archivo-M el nombre de la
funcin debe ser el mismo que en el archivo sin extensin .m:
function [mean,stdev] = stat(x)
n = length(x);
mean = sum(x)/n;
stdev = sqrt(sum((x-mean).^2/n));
Se define la funcin llamada stat:
Calcula la media y la desviacin estndar de un vector x.
Las variables dentro del cuerpo calculan la media y la desviacin
estndar de un vector. Las variables dentro del cuerpo de la funcin
son variables locales.
10/03/16
14
10/03/16
15
Espacio de trabajo
workspace muestra una herramienta para
administrar el espacio de trabajo.
Graphical Interface
Como alternativa a la funcin workspace, se
selecciona workspace desde el men en el
escritorio de MATLAB.
Descripcin
workspace muestra el buscador workspace, que es
una interfase grfica para el usuario que le permite
ver y manejar el contenido del espacio de trabajo
de MATLAB. Muestra una representacin grfica
del desplegado whos, y permite llevar a cabo
funciones equivalentes a clear, load, open, y save.
10/03/16
16
Trayectoria
Interfase Grfica
Como una alternativa a la funcin de trayectoria, se usa la caja de dilogo Set
Path. Para abrirla se selecciona Set Path desde el menu File en el escritorio de
MATLAB.
Sintaxis
path
path('newpath')
path(path,'newpath')
path('newpath',path)
p = path(...)
10/03/16
17
10/03/16
18
Importacin de datos
Para importar archivos de datos ASCII delimitados
Si los datos usan un caracter diferente a un delimitador de espacio, se tiene varias
funciones para importar. La ms sencilla es la funcin dlmread, por ejemplo para el
archivo ph.dat con contenidos separados por punto y coma:
7.2;8.5;6.2;6.6
5.4;9.2;8.1;7.2
Para leer todo el contenido de este archivo hacia un arreglo llamado A, con la forma
A = dlmread('ph.dat', ';');
Se especifica el delimitador usado en el archivo de datos como el segundo argumento
de dlmread. An cuando los ltimos elementos en cada rengln no tiene al
delimitador, dlmread puede procesar el archivo de manera correcta. dlmread ignora
los caracteres de espacio entre los datos. As el comando dlmread funciona an si el
contenido de ph.dat es
7.2; 8.5;
6.2;6.6
5.4; 9.2 ;8.1;7.2
10/03/16
19
Importacin de datos
Importacin de Datos desde Archivos-MAT
Se usa la funcin load
Se revisan los contenidos de MAT-File
Cargar a una estructura
Cargar Data Binarios
Cargar Datos ASCII
Al usar la funcin de carga
Para importar variables desde un archivo binario o ASCII sobre un disco hacia el
espacio de trabajo, se use la funcin load. Se puede cargar todas las variables desde el
espacio de trabajo en una sola operacin (si se omite el nombre del archivo, MATLAB
carga desde el archivo matlab.mat)
Las variables de carga o cargar justo aquellas variables que ya se especifican:
load nombrearchivo var1 var2 ... varN
Al usar el caracter (*) en el nombre para cargar aquellas variables que cumplen con
un patrn especfico. (Slo funciona para archivos MAT.) Por ejemplo, el siguiente
comando carga todas las variables que inician con str desde el archivo strinfo.mat
load strinfo str*
10/03/16
20
Exportacin de datos
Exportando Archivos de Datos ASCII Delimitados
Para exportar un arreglo como un archivo de datos ASCII delimitado, puede usarse la
funcin save, especificando el calificador -ASCII, o la funcin dlmwrite.
Usando la funcin save
para exportar el arreglo A,
A = [ 1 2 3 4 ; 5 6 7 8 ];
Se usa la funcin save, como se muestra:
save my_data.out A -ASCII
Si se ve el archivo creado en un editor de texto, se tiene:
1.0000000e+000 2.0000000e+000 3.0000000e+000 4.0000000e+000
5.0000000e+000 6.0000000e+000 7.0000000e+000 8.0000000e+000
Por default, save usa espacios como delimitadores pero se pueden usar tabs en lugar de
espacios al especificar la opcin -tabs.
10/03/16
21
Exportacin de datos
Exportando Archivos de Datos ASCII Delimitados
Para exportar un arreglo como un archivo de datos ASCII delimitado, puede usarse la
funcin save, especificando el calificador -ASCII, o la funcin dlmwrite.
Usando la funcin dlmwrite
Para exportar un arreglo en formato ASCII y especificar un delimitador usado en el
archivo, se usa la funcin dlmwrite.
Por ejemplo, para exportar el arreglo A,
A = [ 1 2 3 4 ; 5 6 7 8 ];
Como un archivo de datos ASCII que usa punto y como delimitador, se hace por
medio del comando:
dlmwrite('my_data.out',A, ';')
Si se usa un editor de texto el contenido del archivo se ve como:
1;2;3;4
5;6;7;8
Observe que dlmwrite no inserta delimitadores al final de los renglones.
10/03/16
22
Hojas electrnicas
10/03/16
23
2.5 Polinomios:
races, evaluacin y diferenciacin
10/03/16
24
Races de polinomios
Encontrar races de un polinomio, es decir aquellos valores en los cuales
p(x) = 0. En MATLAB un polinomio se representa por un vector rengln de
sus coeficientes en orden descendente.
p ( x) x 4 12 x 3 25 x 116
10/03/16
>> pp=poly(r)
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
>> pp=real(pp)
pp =
1.0000 -12.0000 -0.0000 25.0000 116.0000
25
Multiplicacin de polinomios
Se lleva a cabo por medio de la convolucin de dos arreglos.
a ( x) x 3 2 x 2 3x 4
b ( x) x 3 4 x 2 9 x 16
10/03/16
26
Suma
No se da una funcin directa para la suma de polinomios.
a ( x) x 3 2 x 2 3x 4
b ( x) x 3 4 x 2 9 x 16
>> d=a+b
d=
2 6 12
20
d ( x) 2 x 3 6 x 2 12 x 20
10/03/16
81
96
84
27
Divisin
Cuando se requiere dividir un polinomio entre otro se usa deconv.
c ( x) x 6 6 x 5 20 x 4 50 x 3 75 x 2 84 x 64
b ( x) x 3 4 x 2 9 x 16
>> [q,r]=deconv(c,b)
q=
1 2 3 4
r=
0 0 0 0 0
10/03/16
28
Derivadas
Con la instruccin polyder se logra este resultado.
>> g=[1 6 20 48 69 72 44]
g=
1 6 20 48 69 72 44
>> h=polyder(g)
h=
6 30 80 144 138 72
10/03/16
29
Grficas
Debe ser posible evaluar polinomios. La funcin polyval
>> x=linspace(-1,3); % Cien puntos entre -1 y 3
>> p=[1 4 -7 -10]
% Usa el polinomio
p=
Evaluacin de polinomio
35
1 4 -7 -10
30
>> v=polyval(p,x);
25
>> plot(x,v),title('Evaluacin de
polinomio'),xlabel('x')
20
15
10
5
0
-5
-10
-15
-1
10/03/16
-0.5
0.5
1
x
1.5
2.5
30
Evaluacin matricial
Con la funcin polyvalm(p,A) se trabaja en el espacio de las matrices
cuadradas.
n
Un polinomio est dado como: p( s) pi s i
i 0
p( A) pi Ai
i 0
p( s) pi s i p2 s 2 p1s p0 s 2 s 1
i 0
3
8
polyval(p,A)
ans = 7 13
31 73
polyvalm(p,A)
ans = 22 33
55 88
p ( 2)
p(5)
p(3)
7 13
p(8) 31 73
22 33
p ( A) pi Ai p2 A 2 p1 A p0 A 2 A I
i 0
55 88
10/03/16
31
Polinomios racionales
En expresiones de las transformadas Fourier, Laplace o Z aparecen
polinomios racionales. En MATLAB se representan por los polinomios del
numerador y del denominador. Se usa la funcin residue.
10( s 2)
( s 1)( s 3)( s 4)
10/03/16
32
Polinomios racionales
El resultado anterior significa que las fracciones parciales son:
10( s 2)
6.6667
5
1.6667
0
( s 1)( s 3)( s 4)
( s 1)
( s 3) ( s 4)
10/03/16
33
d
10( s 2)
ds ( s 1)( s 3)( s 4)
>> [b,a]=polyder(num,den)
b=
-20 -140 -320 -260
a=
1 16 102 328 553 456 144
10/03/16
34
10/03/16
35
Ecuaciones diferenciales
MATLAB tiene dos mtodos para resolver ecuaciones diferenciales
ordinarias.
1. ode23 mtodo de Runge-Kutta de 2 y 3er orden
2. ode45 mtodo de Runge-Kutta de 4 y 5 orden
dx
f ( x, t )
Se requiere forma normal como en sistema de primer orden:
dt
10/03/16
36
Ejemplo
Un caso interesante es la ecuacin de van der Pol:
d 2x
( x 2 1)
dt 2
x 1 x2
dx
x0
dt
x 2 x2 (1 x12 ) x1
2.5
% Grfica de la solucin
plot(t,y(:,1))
xlabel('t')
ylabel('solucin y')
title('Ecuacin van der Pol, \mu = 1')
10/03/16
2
1.5
1
solucin y
0.5
0
-0.5
-1
-1.5
-2
-2.5
10
t
12
14
16
18
37
20
Ejemplo (cont.)
>> plot(t,y(:,1),t,y(:,2))
-1
-2
-3
10/03/16
10
12
14
16
18
20
38
Ecuaciones de diferencias
Las ecuaciones de diferencias y MATLAB filtering tienen funciones para
trabajar ecuaciones de diferencias y filtros.
Las funciones operan sobre vectores.
Los vectores se usan para almacenar seales de datos muestreados, en
secuencias para el procesamiento de seales y el anlisis de datos.
En sistemas con entradas mltiples, cada rengln de una matriz corresponde a
un punto de muestra con cada entrada colocada como una columna de la
matriz.
La funcin y = filter(b,a,x)
procesa los datos en el vector x con el filtro descrito por el vector a y b,
creando los datos filtrados y.
10/03/16
39
Ecuaciones de diferencias
El comando filter puede pensarse como una implementacin eficiente de una ecuacin
de diferencias.
La estructura del filtro es de la forma general de lnea con retardo y derivaciones,
descrita por la ecuacin de diferencias, como se muestra, donde n es el ndice de la
muestra actual, na es el orden del polinomio descrito por el vector a y nb es la orden del
polinomio descrito por el vector b.
La salida y(n), es una combinacin lineal de las entradas actuales y previas, x(n) x(n1) ..., y salidas previas, y(n-1) y(n-2) ... Si se supone, por ejemplo que se desea
suavizar los datos de transito con un filtro de promedios mviles para ver el transito
promedio en una ventana de 4 horas. Este proceso se representa por una ecuacin de
diferencias. a(1) y (n) b(1) b(2) x(n 1) b(3) x(n 2) b(nb) x(n nb 1)
a (2) y (n 1) a(3) y (n 2) a (na ) x(n na 1)
y ( n)
10/03/16
1
1
1
1
x(n) x(n 1) x(n 2) x(n 3)
4
4
4
4
40
Ecuaciones de diferencias
a = 1;
b = [1/4 1/4 1/4 1/4]; load count.dat; x = count(:,1); y = filter(b,a,x);
t = 1:length(x);
plot(t,x,'-.',t,y,'-'), grid on, legend('Datos originales','Data suavizados',2)
120
Datos originales
Data suavizados
100
80
60
40
20
10/03/16
10
15
20
25
41
k 0
k 0
ak xn k bk u n k
nm
k
a
z
X
(
z
)
k
bk z k U ( z )
k 0
k 0
bk z k
m
m 1
b1 z b0
bm z bm 1 z
an z n an 1 z n 1 a1 z a0
k
ak z
k 0
X ( z)
G( z)
U ( z)
10/03/16
k 0
n
42
10/03/16
43
Mnimos Cuadrados
Salvador Acha Daza
Presidente del NIAT, S. C.
10/03/16
44
Introduccin
Se trata de mostrar de manera sencilla el ajuste de curvas a
datos experimentales, usando el concepto de mnimos
cuadrados.
En muchas aplicaciones de la ingeniera y de la ciencia los
modelos son lineales en los coeficientes; lo cual permite
escribir una forma explcita para la solucin.
Al tener redundancia, (mayor nmero de observaciones que
parmetros), se puede plantear bajo consideraciones
estadsticas apropiadas una prueba de significacin estadstica
para los parmetros del modelo propuesto.
10/03/16
45
x
x
SS i2
2
1
2
2
2
n
i 1
10/03/16
46
El gradiente de SS:
2
2
2
2
SS y1 a1 x1 a o y 2 a1 x 2 a o y 3 a1 x 3 a o y 4 a1 x 4 a o
y las componentes del gradiente se obtienen como:
SS
a 0
1
SS
SS 0
a o
10/03/16
47
2.8
10/03/16
48
F (k ) f (n) e j 2nk / N
n0
k 0, 1, , N 1
F (k ) f (n) e j 2n ( n 1)( k 1) / N
n 1
10/03/16
k 1, 2, , N
49
Transformada inversa
1 N
f ( n)
F (k ) e j 2n ( n 1)( k 1) / N
N k 1
n 1, 2,, N
12
3 j
10/03/16
50
10/03/16
51
4.5
4
3.5
abs(F(W))
3
2.5
2
1.5
1
0.5
0
10/03/16
20
40
60
80
Frecuencia, rad/seg
100
120
140
52
10/03/16
53
10/03/16
54