SlideShare una empresa de Scribd logo
1 de 115
Descargar para leer sin conexión
TUTORIAL DE MATLAB APLICADO
Por: Jorge Antonio Polanía Puentes
INTRODUCCIÓN
La integración de las Tecnologías de Información y comunicación (TIC) en las
asignaturas de un currículo puede realizarse de varias formas. Una de ellas es el
uso de las simulaciones. Estas se han convertido en una excelente herramienta
para mejorar la compresión y el aprendizaje en áreas como las matemáticas,
física, estadística, finanzas, etc. La simulación permite probar, analizar y descubrir
cómo funciona o cómo se comporta un fenómeno.
Matlab es un programa interactivo de cálculo numérico y de visualización de datos
basado en software de matrices, en un entorno de desarrollo totalmente integrado
y orientado a proyectos que requieren un elevado cálculo numérico y visualización
gráfica.
En las universidades Matlab se ha convertido en una herramienta básica tanto
para estudiantes, como para docentes e investigadores por su amplio abanico de
programas especializados llamados Toolboxes que cubren casi todas las áreas del
conocimiento. Dispone de un programa SIMULINK que es un entorno gráfico
interactivo con el que se puede analizar, modelar y simular sistemas.
1. VARIABLES Y FUNCIONES
1.1 OPERADORES
Una variable se crea por asignación. Los operadores básicos son:
x +y Suma
x – y Diferencia
x * y Producto
x / y División
x ^y Potencia
Ejemplos:
En la ventana de comandos de Matlab, ejecutar:
>> v = 3
>> x = v + 6
>> y = v ^5 / 4
>> x = 2*3^5 + (5-3)* 8
1
1.2 VECTORES
Un vector fila de n elementos se puede representar de dos formas:
V = [v1,v2,v3,…..vn] % con coma entre ellos, o
V = [v1 v2 v3 …..vn] % con espacios entre ellos
Ejemplo:
Vector = [1 1.2 3.4 4/5 2.25]
Un vector se puede representar sin necesidad de explicitar todos los elementos,
así:
EXPRESIÓN MATLAB SIGNIFICADO
Vector = [a : b]
a y b son el primero y último
elemento. Los elementos intermedios
se diferencian en una unidad
Vector = [a : s : b]
a y b son el primero y último
elemento. Los elementos intermedios
se diferencian en la cantidad s
Vector = linespace[a,b,n]
a y b son el primero y último
elemento. Hay n elementos
uniformemente espaciados entre sí
Vector = logspace[a,b,n]
a y b son el primero y último
elemento. Hay n elementos
logarítmicamente espaciados entre sí
Ejemplos:
>>Vector1 = [5:5:30] % elementos de 5 a 30 en pasos de 5
Vector1 = 5 10 15 20 25 30
>>Vector2 = [5:10]
Vector2 = 5 6 7 8 9 10 % elementos de 5 a 10 en pasos de 1 (por defecto)
Un vector columna se representa con sus elementos separados por punto y coma.
Ejemplo:
>>Vector = [2; 3; 2.5; 4.5; 8]
Vector =
2
3
2.5
4.5
8
2
1.3 MATRICES
Las matrices se representan en Matlab introduciendo entre corchetes los vectores
fila separados por punto y coma.
Ejemplo:
>>A = [1 3 5; 4 7 9; 4 2 10]
A =
1 3 5
4 7 9
4 2 10
Algunas definiciones de variables matriciales:
A(m,n) Define el elemento (m,n) de la matriz
A
B = A’ Define la transpuesta de A
A(a:b,c:d)
Define una submatriz formada por las
filas que hay entre la a-ésima y la b-
ésima y por las columnas que hay
entre la c-ésima y la d-ésima
A(:,c:d)
Submatriz formada por las filas de A y
las columnas que hay entre la c-ésima
y d-ésima
A(a:b,:)
Submatriz formada por las columnas
de A y las filas que hay entre la a-
ésima y b-ésima
size(A)
Devuelve el tamño u orden de la
matriz A
Ejemplos:
>> A(2,3)
ans =
9
>> B = A'
B =
1 4 4
3 7 2
5 9 10
>> eye(3)
3
ans =
1 0 0
0 1 0
0 0 1
>> C=B(:,2:3)
C =
4 4
7 2
9 10
>> D = B(1:2,:)
D =
1 4 4
3 7 2
>> size(D)
ans =
2 3
1.4 FUNCIONES
FUNCIONES TRIGONOMÉTRICAS
Directas Inversas
sin(x) asin(x)
cos(x) acos(x)
tan(x) atan(x)
csc(x) acsc(x)
sec(x) asec(x)
cot(x) acot(x)
FUNCIONES HIPERBÓLICAS
sinh(x) asinh(x)
cosh(x) acosh(x)
tanh(x) atanh(x)
csch(x) acsch(x)
sech(x) asech(x)
coth(x) acoth(x)
FUNCIONES EXPONENCIALES Y LOGARÍTMICAS
exp(x) Función exponencial base e
log10(x) Logaritmo decimal
4
log(x) Logaritmo natural
sqrt(x) Raíz cuadrada
abs(x) Valor absoluto
NÚMEROS COMPLEJOS
abs(z) Módulo del complejo z
angle(z) Argumento del complejo z
conj(z) Conjugado del complejo z
real(z) Parte real del complejo z
imag(z) Parte imaginaria del complejo z
factorial(n) n! = n(n-1)(n-2)(n-3)…..3.2.1
Ejemplos:
Calcular las siguientes expresiones en Matlab
a) 522
−+
= xx
ey para x = 2.5
>> y = exp(sqrt(x^2+2*x-5))
b) y = 2sen(5x) + 3cos(2x) para x = 30º
>> x = 30*pi/180
>> y = 2*sin(5*x) + 3*cos(2*x)
c) y = 3
5log +x + ln(x2
)
>> y = log10(x + 5)^(1/3) + log(x^2)
d) Para el número complejo z = 4.5 + j 5.6 hallar el módulo y argumento
>> z = 4.5 + 5.6i
>> mag = abs(z) % módulo
>> ang = angle(z) % argumento
>> ang = ang*180/pi % argumento en grados
>> Parte_Imag=imag(z)
>> Parte_Real=real(z)
>> Conjugado=conj(z)
5
2. POLINOMIOS
Los comandos usados por Matlab para trabajar con polinomios son:
p = poly(r)
Da los coeficientes del polinomio P
cuyas raíces son el vector r
y = polyval(p,x) Evalúa el polinomio p en el valor de x
r = roots(c) Encuentra las raíces del polinomio c
p = polyfit(x,y,n)
Polinomio de orden n que ajusta los
puntos (x,y)
s = solve(‘ecuacion1’,’ecuacion2’) Resuelve las ecuaciones
d = det(A) Calcula determinante de A
Ejemplos:
a) >> p=poly([ 2 3 4])
p =
1 -9 26 -24
% El polinomio es x3
– 9x2
+26x – 24
b) Para x = 2.5 calcular y = x4
– 3x2
+ 5x -2.8
>> x = 2.5;
>> p = [1 0 -3 5 -2.8];
>> y = polyval(p,x)
y =
4.0750
c) Encontrar las raíces de: x5
– 3x3
+ x2
-5x + 2
>> c = [1 0 -3 1 -5 2];
>> r = roots(c)
r =
-2.1716
1.8905
-0.0575 + 1.1076i
-0.0575 - 1.1076i
0.3960
6
d) Calcular el polinomio interpolador de segundo orden que pasa por los puntos (-
1,4), (0,2) y (1,6)
>> x = [-1,0,1]; y = [4,2,6];
>> p = polyfit(x,y,2)
p =
3.0000 1.0000 2.0000
El polinomio interpolador que más se ajusta es 3x2
+ x + 2
e) Calcular x−1 + x+1 = 4
>> s = solve('sqrt(1-x)+sqrt(1+x)=4')
s =
4*i*3^(1/2)
-4*i*3^(1/2)
>> eval(s)
s(1)=6.9281i s(2)=-6.9281
f) Resolver el sistema de ecuaciones:
2x + 3y =5
x – 2y = -2
>> [x,y] = solve('2*x + 3*y = 5','x - 2*y = -2')
% x = 4/7, y = 9/7
⎥
⎥
⎥
⎦
⎤
⎢
⎢
⎢
⎣
⎡
−
−
−
631
523
142
g) Calcular el determinante de la matriz:
>> A = [2 4 -1;3 -2 5;-1 3 6];
>> d = det(A)
% d = -153
7
3. REPRESENTACIÓN GRÁFICA
Matlab ofrece diversas formas de representación gráfica.
COMANDO MATLAB DESCRIPCIÓN
bar(y) Gráfica de barras relativo al vector y
bar(x,y) Gráfica de barras al vector y; x define el eje x
barh(….) Gráfica de barras horizontales
bar(….;’color’) Color = r, g, y, c, m, k
bar(y,’estilo’) Estilo=grouped (agrupado), stacked (anidado)
bar3(y,…) Barras en tres dimensiones
plot(x,y) Grafica y en función de x
plot(x,y,’bo’) Grafica y en función de x on color y caracter
fplot(‘f’,[x1 x2],’y*’) Grafica función f entre x1 y x2
fplot(‘[f1,f2,..]’,[x1 x2]) Grafica las funciones en el intervalo dado
tittle(‘texto’) Título de la gráfica
xlabel(‘texto’), ylabel(‘texto’) Rótulos en el eje x y en el eje y
grid Pone rejilla en la gráfica
axis([x1 x2 y1 y2]) Define límite de los ejes
legend(‘rotulo1’,’rotulo2’,….) Coloca legenda en la gráfica
text(x,y,’texto’) Coloca texto en coordenadas (x,y)
subplot(m,n,p) Subgráficas de m filas, n columnas
Ejemplos:
a) >> y=[1 2 3 8 2 1 4 6];
>> bar(y)
b) gráfico de barras para la función y = cuando x varía de -3 a 3
xx
e *−
>> x = -3:0.2:3;
>> y = exp(-x.*x);
>> bar(x,y)
8
c) barh(x,y)
d) Ejecutar
>> bar(x,y,’g’)
e) y =
10 8 6
2 5 8
6 0 9
5 8 7
9 4 2
Ejecutar >> bar(y,'grouped')
>> bar(y,'stacked')
>> bar3(y,'stacked')
f) Ejecutar >> x = 0:0.2:20;
9
>> y = sin(x).*exp(-0.2*x);
>> plot(x,y)
>> plot(x,y,’r*’)
g) Ejecutar >> fplot('[sin(x), sin(2*x), sin(3*x)]',[0,2*pi])
>> legend('sen(x)','sen(2x)','sen(3x)')
h) Ejecutar en la ventana de edición el programa:
x=linspace(0,2,30);
y=sin(x.^2);
plot(x,y)
text(1,0.8,'y=sin(x^2)');
hold on
z=log(sqrt(x));
plot(x,z)
text(1,-0.1,'y=log(sqrt(x))')
10
xlabel('Eje x')
ylabel('Eje y')
title('Gráfico senoidal y logarítmico')
Copie y pegue en la ventana de comando y ejecute, se obtendrá la gráfica:
Ejemplos:
a) Graficar en dos subgráficas una fila y dos columnas:
x = [0:0.1:2*pi];
y = sin(x);
z = cos(x);
subplot(121);
plot(x,y)
title(‘sen(x)’)
subplot(122);
plot(x,z)
title(‘cos(x)’)
11
b) Graficar en dos subgráficas dos fila y una columna:
x = [0:0.1:2*pi];
y = sin(x);
z = cos(x);
subplot(211);
plot(x,y)
title(‘sen(x)’)
hold on
subplot(212);
plot(x,z)
title(‘cos(x)’)
c) Graficar en cuatro subgráficas dos filas y dos columnas:
subplot (221);
fplot(‘sin(x)’,[-2*pi 2*pi]);
subplot (222);
fplot(‘cos(x)’,[-2*pi 2*pi]);
subplot (223);
fplot(‘csc(x)’,[-2*pi 2*pi -10 10]);
subplot (224);
fplot(‘sec(x)’,[-2*pi 2*pi -10 10]);
12
d) Graficar en diferentes escalas
x = 0:0.01:3;
y = abs(exp(-0.5*x).*sin(5*x));
subplot(221);
plot(x,y)
title(‘normal’)
hold on
subplot(222)
loglog(x,y)
title(‘logaritmica’)
subplot(223)
semilogx(x,y)
title(‘semilogaritmico en eje x’)
subplot(224)
semilogy(x,y)
title(‘semilogaritmico en eje y’)
13
14
4. CÁLCULO NUMÉRICO
4.1 Límites
OPERACIÓN MATEMÁTICA COMANDO MATLAB
0x
(x)fLim
→
limit(f,x,0)
ax
(x)fLim
→
limit (f, x, a) o
limit (f, a)
-
ax
(x)fLim
→
limit (f,x,a, ‘left’)
+
→ ax
(x)fLim limit (f,x,a, ‘right’)
Ejemplos:
a) Hallar f ´(x) =
h
xfhxf
h
)()(
0
lim −+
→
si f(x) = cos(x)
syms h n x
limit ( )0,,/))cos()(cos( hhxhx −+
ans =
-sin(x)
b) Hallar el límite de la sucesión:
4
37
23lim
⎟
⎠
⎞
⎜
⎝
⎛
+−
+−
∞→ n
n
n
>> limit (((2*n-3)/(3*n-7))^4, inf)
ans =
16/81
c) Hallar
x
x
x −
→ 0
lim
>> limit ( )`,`0,),(/ leftxxabsx
ans = -1
15
d) Hallar
x
x
x +
→ 0
lim
>> limit ( )`,`0,),(/ rightxxabsx
ans = 1
e) >> limit ( )0,),(/ xxabsx
ans =
NaN (not number)
(no existe)
Ejemplos:
Hallar el límite de las funciones:
a)
x
xx
x 413
2
2
lim
++−
+−
→
,
b) 2
2
)][(
0
lim
x
axsen
x →
>> syms x a
>> limit((x-(2+x)^(1/2))/(-3+(1+4*x)^(1/2)),2)
ans = 9/8
>> limit(sin(a*x)^2/x^2,x,0)
ans = a^2
4.2 Derivadas
OPERACIÓN MATEMÁTICA COMANDO MATLAB
x
f
∂
∂ diff(x) o diff(f,x)
t
f
∂
∂ diff(f,t)
n
n
b
f
∂
∂ diff(f,b,n)
16
Ejemplos:
a) Hallar la derivada con respecto a x de f(x) = sen(5x)
>> syms x
>> f = sin( )x∗5
>> diff (f)
ans = 5 cos∗ ( )x∗5
b) )cos()( xexg x
=
>> g = exp(x) cos(x)∗
>> diff (g)
ans = exp(x)*cos(x)-exp(x)*sin(x)
En estos ejemplos, Matlab simplifica, en otros casos, se debe usar el comando:
simplify
Para una constante también se debe definir como simbólica:
Ejemplo: diff (5)
ans = [ ]
c = sym(‘5’)
diff(c)
ans = 0
Ejemplos:
a) Hallar la derivada de la función f(t) = sen(st):
t
f
∂
∂
>> syms s t
>> f = sin(s*t)
>> diff(f,t)
ans = cos(s*t)*s
b) Hallar la derivada con respecto a s:
s
f
∂
∂
>> diff(f,s)
ans = cos(s*t)*t
17
c) Hallar la segunda derivada de f con respecto a t: 2
2
t
f
∂
∂
>> diff(f,t,2)
ans = -sin(s*t)*s^2
d) Hallar la derivada con respecto a x de: n
xf =
>> f = x ^ n
>> F = diff(f)
F = x ^ n * n / x
>> simplifity (F)
= x ^ (n-1) n∗
e) f(x) = log(sen(2x))
>> syms x
>> diff(log(sin(2*x)))
ans = 2*cos(2*x)/sin(2*x)
Ejemplos:
f(x,y) = sen(xy)+cos(xy2
)
Calcular:
a)
x
f
∂
∂
>> syms x y
>> f = sin(x*y)+cos(x*y^2)
>> diff(f,x)
ans = cos(x*y)*y-sin(x*y^2)*y^2
b)
y
f
∂
∂
>> diff(f,y)
ans = cos(x*y)*x-2*sin(x*y^2)*x*y
c) 2
2
x
f
∂
∂
>> diff(diff(f,x),x)
ans = -sin(x*y)*y^2-cos(x*y^2)*y^4
18
d) 2
2
y
f
∂
∂
>> diff(diff(f,y),y)
Ans = -sin(x*y)*x^2-4*cos(x*y^2)*x^2*y^2-2*sin(x*y^2)*x
e)
yx
f
∂∂
∂2
>> diff(diff(f,x),y)
Ans = -sin(x*y)*x*y+cos(x*y)-2*cos(x*y^2)*x*y^3-2*sin(x*y^2)*y
4.3 INTEGRALES
OPERACIÓN MATEMÁTICA COMANDO MATLAB
∫ dxf int (f) integral indefinida o
int (f,x)
∫
b
a
dxxf )( int (f,x,a,b) integral definida o
int (f,a,b)
∫∫ dxxf )( Int(int(f,x)) Integral doble
∫∫ dxdyyxf ),( Int(int(f(x,y),x),y)
∫∫
d
c
b
a
dxdyyxf ),( Int(int(f(x,y),x,a,b),y,c,d))
Ejemplos:
a) Hallar la integral de ∫ dxxn
>> int (x^n)
ans = x^(n+1)/(n+1)
b) >> int(y ^(-1))
ans = log(y)
c) >> int(1/(a+u^2))
ans = 1/a^(1/2)*atan(u/a^(1/2))
d) >> f = sin(a*teta+b)
>> int(f)
ans = -1/a cos(a∗teta + b)∗
19
e) ∫
∞
⇒−
0
)2^exp( dxx
>> int (exp(-x^2), x , 0, inf)
ans =1/2∗pi^(1/2)
f) dxe ax
∫
∞
∞−
− 2
>> syms a positive
>> syms x
>> f = exp (-a );2^x∗
>> int (f,x,-inf,inf)
ans = 1/a^(1/2)∗ pi ^ (1/2)
Ejemplos:
a) ∫ dxbxa )ln(
>> syms a b x
>> int(a*log(b*x),x)
Ans = a*x*log(b*x)-a*x
b) ∫∫ dxdyxya )ln(
>> int(int(a*log(x*y),x),y)
ans = a*y*x*log(x*y)-2*a*x*y
c) ∫
1
0
)ln( dxxya
>> int(a*log(x*y),x,0,1)
Ans = a*log(y)-a
d) dydxxya∫∫
3
2
1
0
)ln(
>> int(int(a*log(x*y),x,2,3),y,0,1)
Ans = -2*a*log(2)+3*a*log(3)-2*a
20
1
5. DINÁMICA DE SISTEMAS
5.1. SISTEMAS
Un sistema es una combinación de componentes que actúan conjuntamente
para alcanzar un objetivo específico. Un sistema es dinámico cuando la salida
presente depende de las entradas pasadas y es estático cuando la salida
presente depende solamente de las entradas presentes.
Los componentes básicos de un sistema son:
a) Elementos que son las partes del sistema
b) Estructura. Se refiere a las interrelaciones y procesos entre las partes
del sistema.
c) Ambiente. Relaciona el sistema con el todo. Es su entorno
d) Entradas. Son las fuentes de energía, recursos e información que
necesita el sistema para su funcionamiento y que importa del ambiente
e) Salidas. Son los productos o resultados que se construye a través de la
estructura y los procesos internos.
Los sistemas pueden clasificarse de las siguientes maneras:
a) Sistemas de lazo abierto y
b) Sistemas en lazo cerrado, que son los que realimentan parte de su
salida a la entrada.
Ejemplo de un sistema hidráulico en lazo abierto y cerrado son los siguientes:
2
5.2 MODELO MATEMÁTICO
Es la descripción matemática que predice el funcionamiento del sistema. En los
sistemas físicos el modelo matemático se describe por ecuaciones
diferenciales. Los sistemas lineales se modelan con ecuaciones diferenciales
lineales y son aquellos que se les aplica el principio de superposición, esto es,
la respuesta de un sistema a varias entradas simultáneas es la suma de las
respuestas individuales.
Para elaborar un modelo:
a) Se debe dibujar un diagrama esquemático del sistema y definir las
variables.
b) Escribir las ecuaciones utilizando las leyes físicas de cada componente,
combinándolos de acuerdo al diagrama y obtener el modelo matemático
c) Verificar la validez del modelo comparando la predicción de las
ecuaciones del modelo con los resultados experimentales. El modelo se
debe ajustar hasta que haya una buena concordancia entre lo teórico y
lo práctico.
En general, la construcción de modelos se basa en la observación del sistema.
Existen algunos caminos básicos para obtener un modelo:
Modelamiento de Sistemas: Esta estrategia consiste en descomponer
(abstractamente) el sistema en subsistemas más simples, cuyos modelos sean
factibles de obtener gracias a la experiencia previa. Una vez obtenidos estos
submodelos, se buscan las relaciones que existen entre ellos, para
interconectarlos y obtener el modelo del sistema original.
Esta estrategia busca una descripción desde adentro del sistema,
generalmente basada en el conocimiento de las leyes que rigen los sistemas
3
simples. El modelo así obtenido se conoce como Modelo de Caja Blanca, o
Modelo Interno
Identificación de Sistemas: Esta estrategia consiste en acumular un número
suficiente de observaciones sobre las señales de entrada y salida del sistema,
con el propósito de emplearlas para construir un modelo del mismo. No se
centra en lo que existe al interior del sistema, sino en su comportamiento
respecto al entorno. El modelo así obtenido se conoce como Modelo de Caja
Negra, o Modelo Entrada – Salida
Estrategia híbrida: Existe una tercera estrategia, que realmente es una
combinación de las anteriores: Al igual que en la estrategia de modelamiento,
se emplea el conocimiento que esté a la mano acerca de la estructura interna
del sistema y las leyes que rigen su comportamiento, y se emplean
observaciones para determinar la información que haga falta. El modelo así
obtenido se conoce como Modelo de Caja Gris
Para un sistema continuo de una única entrada y una única salida, el modelo
empleado corresponde a una ecuación diferencial ordinaria de coeficientes
constantes:
)(...)(... 0101 tub
dt
du
b
dt
ud
btxa
dt
dx
a
dt
xd
a m
m
mn
n
n +++=+++
Por su parte, un sistema discreto de una única entrada y una única salida,
tendrá por modelo una ecuación de diferencias finitas ordinaria de coeficientes
constantes:
)()1(...)()()1(...)( 0101 kubkubnkubkxakxankxa mn +++++=+++++
Otro tipo de ecuaciones diferenciales que se emplearán relacionan vectores de
variables mediante matrices.
)(
)(
)(
3
2
1
333231
232221
131211
3
2
1




















=














•
•
•
tx
tx
tx
aaa
aaa
aaa
x
x
x
)(
)(
)(
)1(
)1(
)1(
3
2
1
333231
232221
131211
3
2
1




















=














+
+
+
kx
kx
kx
aaa
aaa
aaa
kx
kx
kx
SISTEMAu(t) x(t)
SISTEMA CONTINUO
SISTEMAu(k) x(k)
SISTEMA DISCRETO
4
5.3 SISTEMA MECÁNICO
Es el sistema de amortiguación de un automóvil, donde:
B es el coeficiente de amortiguación que depende de la velocidad (v)
K es la constante del resorte que depende de la elongación (x)
x0 = Posición inicial
xi = Posición final
Leyes de Modelo:
d
mmaF,F, 2
2
B
dt
x
dt
dx
BKxFK ====
Ecuación dinámica:
0)x-K(x)
dt
dx
-
dt
dx
B(
d
m i0
io
2
2
=++
dt
x
Ecuación diferencial:
Kx
dt
dx
BKx
dt
dx
B
d
m i
i
0
o
2
0
2
+=++
dt
x
5.4 SISTEMA ELÉCTRICO
Las variables del sistema son:
ei = Voltaje de entrada
5
eo = Voltaje de salida
R = Resistencia
L = Inductancia
C = Capacitancia
Ecuación dinámica (Ecuación diferencial):
eidt
C
1
(2),eidt
C
1
Ri
dt
di
L(1) oi ∫∫ ==++
5.5 SISTEMA HIDRÁULICO
Variables del sistema:
Q = Caudal estable
qi = Variación del caudal de entrada
qo = Variación del caudal de salida
H = Altura estable
h = Variación de la altura
C = Capacitancia del tanque
R = Resistencia hidráulica
Ecuaciones dinámicas (Ecuación diferencial):
R
h
q,
dt
dh
RC(2),
dt
dh
C(1) o ==+−= ioi Rqhqq
6
5.6 SISTEMA TÉRMICO
Variables del sistema:
H = Entrada de calor en estado estable
h = Cambio de calor
θ = Temperatura
Ecuación dinámica (Ecuación diferencial):
R
h,
dt
d
RC(2),
dt
d
C(1) o
θ
θ
θθ
==+−= ioi Rhhh
7
6. TRANSFORMADA DE LAPLACE
Es un método operativo que resuelve ecuaciones diferenciales convirtiéndolas
en ecuaciones algebraicas. Permite predecir el comportamiento de un sistema
sin necesidad de resolver las ecuaciones diferenciales del sistema.
Sea f(t) un función en el tiempo,
La Transformada de Laplace de f(t) es:
L [f(t)]= ∫
∞
−
0
)( dtetf st
6.1 FUNCIÓN ESCALÓN
f(t) = A, para t > 0 y f(t) = 0, para t < 0
L [f(t)] = )(
00
sF
s
A
s
Ae
dtAe
st
st
==
−
=
∞−
∞
−
∫
6.2 FUNCIÓN RAMPA
f(t) = At, para t > 0 y f(t) = 0, para t < 0
L [f(t)] = )(2
0
0
sF
s
A
e
s
A
dtAte stst
=== ∫∫
∞
−
∞
−
6.3 FUNCIÓN EXPONENCIAL
f(t) = Ae-at
, para t > 0 y f(t) = 0, para t < 0
L [f(t)] = )(
0
)(
0
sF
as
A
eAdteAe tsastat
=
+
== ∫∫
∞
+−
∞
−−
6.4 FUNCIÓN SENOIDAL
f(t) = Asen(wt), para t > 0 y f(t) = 0, para t < 0
L [f(t)] = )()()( 22
0
0
sF
ws
Aw
ewtsenAdtewtAsen stst
=
+
== ∫∫
∞
−
∞
−
8
6.5 DERIVACIÓN
L )0()()( fssFtf
dt
d
−=



L )0()0()()( '2
2
2
fsfsFstf
dt
d
−−=





Donde f(0) = f(t) cuando t = 0, y 0t)()0('
== cuandotf
dt
d
f
6.6 INTEGRACIÓN
L s
sF
dttf
t )(
)(
0
=




∫
6.7 COMANDO MATLAB
Para calcular la Transformada de Laplace de una función se usa el comando
>> laplace(f(t))
Ejemplos:
Calcular la transformada de Laplace de:
a) f(t) = cos(wt)+sen(wt)
>> syms w t
>> laplace(cos(w*t)+sin(w*t))
ans =
s/(s^2+w^2)+w/(s^2+w^2)
b) f(t) = 3t + 2t2
>> laplace((3*t)+2*t^2)
ans =
3/s^2+4/s^3
c) f(t) = 3e-2t
-2e5t
>> laplace(3*exp(-2*t)- 2*exp(5*t))
9
ans =
3/(s+2)-2/(s-5)
6.8 LAPLACE INVERSA
Dada la Transformada de Laplace F(s), la Transformada Inversa de Laplace es
f(t). La forma más general de encontrar la transformada inversa es
descomponer la función F(s) en fracciones parciales y luego aplicar su inversa
a cada término.
K
ps
r
ps
r
sP
sQ
sF ++
−
+
−
== .....
2
2
1
1
)(
)(
)(
Se utiliza el comando Matlab residue:
[r,p,k] = residue(num,den)
Donde num es un vector compuesto por los coeficientes del polinomio del
denominador y den es un vector compuesto por los coeficientes del polinomio
del numerador.
Ejemplo:
22
2
)( 2
++
+
=
ss
s
sF
>> num = [1 2] ;
>> den = [1 2 2];
>> [r,p,k]=residue(num,den)
r =
0.5000 - 0.5000i
0.5000 + 0.5000i
p =
-1.0000 + 1.0000i
-1.0000 - 1.0000i
k =
[ ]
10
Las fracciones parciales son:
is
i
is
i
sF
++
+
+
−+
−
=
1
5.05.0
1
5.05.0
)(
Si el denominador es de la forma P(s)n
, entonces:
K
pns
rn
ps
r
ps
r
sP
sQ
sF nnn
+
−
++
−
+
−
== −
)(
.....
)2(
2
)1(
1
)(
)(
)( 1
Ejemplo:
22
)1(
2
12
2
)(
+
+
=
++
+
=
s
s
ss
s
sF
>> num = [1 2] ;
>> den = [1 2 1];
>> [r,p,k]=residue(num,den)
% r = [1 1 ], p = [-1 -1], k = [ ]
)1(
1
)1(
1
)( 2
+
+
+
=
ss
sF
6.9 SOLUCIÓN DE ECUACIONES DIFERENCIALES
Para resolver o solucionar una ecuación diferencial:
a) Se aplica transformada de Laplace a la ecuación
b) Se despeja F(s)
c) Se halla la transformada inversa
Ejemplo:
Resolver la ecuación diferencial:
2)(y-1,y(0)inicialesscondicione,5)(23 '
2
2
===++ oty
dt
dy
dt
yd
a) Aplicamos transformada de Laplace:
,/5)(2)(3)(3)0()0()( '2
ssYoyssYysysYs =+−+−−
Reemplazando los valores de y(0) y y’
(0), se tiene:
11
b) Despejando Y(s),
)2)(1(
5
)23(
5
)(
2
2
2
++
+−−
=
++
+−−
=
sss
ss
sss
ss
sY
c) Aplicando fracciones parciales para hallar la inversa,
>> num = [-1 -1 5] ;
>> den = [1 3 2 0];
>> [r,p,k]=residue(num,den)
r = [1.5 -5 2.5], p = [-2 -1 0], k = [ ]
sss
sY
5.2
1
5
2
5.1
)( +
+
−
+
=
La transformada inversa es:
5.255.1)( 2
+−= −− tt
eety
12
7. FUNCIÓN DE TRANSFERENCIA
La función de transferencia de un sistema descrito mediante una ecuación
diferencial, se define como el cociente de la Transformada de Laplace de la
salida y la Transformada de Laplace de la entrada.
El método para encontrar la función de transferencia de un sistema es el
siguiente:
a) Escribir la ecuación diferencial del sistema
b) Aplicar la Transformada de Laplace de la ecuación diferencial con
condiciones iniciales cero
c) Sacar el cociente entre la variable de salida y la entrada
n
n
m
m
sasaa
sbsbb
sX
sY
sG
...
...
)(
)(
)(
10
10
++
+++
==
En Matlab:
>> num = [bo b1 b2 .... bm];
>> den = [ao a1 a2 .... an];
>> Gs = tf(num,den)
Ejemplo:
Para el torque que produce un motor eléctrico (parte mecánica):
T= torque (variable de entrada)
θ = ángulo de giro (variable de salida)
J = Inercia
Ecuación diferencial: 2
2
)(
dt
d
JtT
θ
=
Transformada de Laplace: T(s) = Js2
θ(s)
Función de transferencia: 2
1
)(
)(
)(
JssT
s
sG ==
θ
G(s)X(s) Y(s)
sistema
13
7.1 DIAGRAMA EN BLOQUES
La estructura de un sistema se representa por un diagrama en bloques según
el siguiente procedimiento:
a) Definir la entrada y la salida
b) Escribir las ecuaciones que describa el comportamiento de cada
elemento del sistema
c) Aplicar transformada de Laplace a cada elemento
d) Integrar los elementos en un diagrama completo (estructura)
Ejemplo: Circuito serie RC
a) Entrada: ei, salida: eo
b) Para la resistencia
R
ee
iRie oi
R
−
== ,
para el condensador
∫= idt
C
eo
1
c)Transformada de Laplace
)(
1
)(
,
)()(
)(
sI
sC
sE
R
sEsE
sI
o
oi
=
−
=
d) Estructura
ei eoC
R
i
1/R 1/sC
Ei(s) Eo(s)
I(s)
+
-
Ei(s) – Eo(s)
14
7.2 TIPOS DE ESTRUCTURAS
Los diagramas de bloques mediante los cuales se estructura un sistema son
complejos y son generalmente combinaciones de los siguientes tipos de
estructuras:
7.2.1 ESTRUCTURA SERIE
Matlab
G1 = tf (num1,den1);
G2 = tf (num2,den2);
G3 = tf (num3,den3);
Gs = G1*G2*G3
también puede ser:
Gs = series(G1,G2,G3)
7.2.2 ESTRUCTURA PARALELA
G1(s) G2(s) G3(s)
X(s) Y(s)
G(s)
G(s) = G1(s)*G2(s)*G3(s)
G1(s)
G1(s)
G1(s)
+
+
+
X(s)
Y(s)
G(s) = G1(s)+G2(s)+G3(s)
15
Matlab
G1 = tf (num1,den1);
G2 = tf (num2,den2);
G3 = tf (num3,den3);
Gs = G1+G2+G3
también puede ser :
Gs = parallel(G1,G2,G3)
7.2.3 ESTRUCTURA REALIMENTADA
a) Función de transferencia en lazo abierto: Gla
)(*)(
)(
)(
sHsG
sE
sB
Gla ==
b) Función de transferencia en lazo cerrado: Glc
H(s)*C(s)-R(s)B(s)-R(s)E(s),,
)(
)(*)(
)(
)(
==== donde
sR
sEsG
sR
sC
Glc
Reemplazando,
H(s)C(s)*G(s)-R(s)*G(s))]()()([*)()( =−= sHsCsRsGsC
,
)()(1
)(
)(
)(
sHsG
sG
sR
sC
Glc
+
==
Caso especial:
1H(s),
)(1
)(
)(
)(
),( =
+
===
sG
sG
sR
sC
GlcsGGla
B(s)
G(s)
H(s)
R(s)
C(s)
E(s)
+
-
Realimentación
B(s)
G(s)
R(s)
C(s)
E(s)
+
-
Realimentación
16
Matlab:
>> Gla = Gs*Hs
>> Glc = feedback(Gs,Hs)
Ejemplo:
Obtener la función de transferencia del sistema por Matlab:
)(
)(
)(
sR
sC
sG =
% Este es un programa realizado en Matlab
% para obtener la función de transferencia del sistema
G1=tf(1,[1 4])
H1=tf(1,[1 0])
% Realimentación de G1 y H1
Glc1=feedback(G1,H1)
Respuesta:
14
1 2
++
=
ss
s
Glc
% Estructura serie
G2=tf(1,[1 2])
G4=Glc1*G2
Respuesta:
296
4 23
+++
=
sss
s
G
% Segunda realimentación
H2=1/2
Glc2=feedback(G4,H2)
Respuesta:
25.96
2 23
+++
=
sss
s
Glc
17
% Segunda estructura serie
G3=tf(1,[1 0])
G5=Glc2*G3
Respuesta:
ssss
s
G
25.96
5 234
+++
=
% Tercera realimentación
Glc=feedback(G5,1)
Respuesta:
ssss
s
Glc
35.96 234
+++
=
7.3 ESTABILIDAD
7.3.1 ECUACIÓN CARACTERÍSTICA
La ecuación característica de un sistema es el denominador de la función de
transferencia del sistema igualado a cero.
Para el ejemplo anterior, la ecuación característica es igual a:
035.96 234
=+++ ssss
7.3.2 POLOS Y CEROS DE UN SISTEMA
Los polos de un sistema son las raíces de la ecuación característica del
sistema, esto es, las raíces del denominador de la función de transferencia del
sistema.
Los ceros de un sistema son las raíces del numerador de la función de
transferencia del sistema.
Para la función de transferencia:
156
23
)( 23
2
+++
++
=
sss
ss
sG
Los polos y ceros son:
Matlab:
>> num=[1 3 2];
>> ceros=roots(num)
% ceros = -2, -1
18
>> den=[1 6 5 1];
>> polos=roots(den)
% polos = -5.0489, -0.6431, -0.3080
En Matlab existen dos comandos más utilizados para el cálculo de los polos y
ceros de un sistema que se obtienen directamente de la función de
transferencia:
ceros = zero(Gs)
polos = pole(Gs)
Esto es,
>> num=[1 3 2];
>> den=[1 6 5 1];
>> Gs = tf(num,den);
>> ceros = zero(Gs)
>> polos = pole(Gs)
7.3.3 ESTABILIDAD
Con base en la gráfica de polos y ceros (eje x los reales, eje y los imaginarios)
de la función de transferencia en lazo cerrado:
a) El sistema es estable cuando los polos están en el semiplano izquierdo
b) el sistema es inestable si por lo menos un polo está en el semiplano
derecho
c) Es críticamente estable cuando los polos están en el eje imaginario
d) Los ceros no intervienen en la estabilidad y por tanto no importa su
ubicación
Ejemplo:
La función de transferencia en lazo cerrado de un sistema es:
656
23
)( 23
2
+++
++
=
sss
ss
sGlc
Matlab:
>> num=[1 3 2];
>> den=[1 6 5 6];
>> Glc=tf(num,den)
>> polos=pole(Glc)
% polos = -5.2670, -0.3665 + 1.0024i, -0.3665 - 1.0024i
% Para graficar los polos y ceros se usa el comando pzmap
>> pzmap(Glc)
% el programa presenta la siguiente figura,
19
El sistema tiene tres polos: un polo real y dos polos complejos conjugados.
Como todos los polos están en el semiplano izquierdo, el sistema es estable.
7.3.4 RESPUESTA DE UN SISTEMA
Generalmente se conoce como respuesta de un sistema la salida en el dominio
del tiempo que tiene el sistema cuando a su entrada se le aplica una función
escalón unitaria. También se conoce como respuesta al paso unitario.
Para el ejemplo anterior la respuesta al paso unitario se obtiene adicionando la
instrucción:
>> step(Glc)
Esta respuesta tiene como característica importante la amplitud de pico, el
sobreimpulso (overshoot) y el tiempo de establecimiento (setting time).
20
7.3.5 ERROR DE ESTADO ESTACIONARIO
El error de estado estacionario o estado estable. es igual a:
final1
0
lim
1 valorGlc
s
Ess −=
→
−=
Ejemplo:
666.0333.01
656
23
0
lim
1 23
2
=−=
+++
++
→
−=
sss
ss
s
Ess
Ejemplo:
Para:
656
63
23
2
+++
++
=
sss
ss
Glc
011
656
63
0
lim
1 23
2
=−=
+++
++
→
−=
sss
ss
s
Ess
21
8. SIMULINK
8.1 INTRODUCCIÓN
Simulink es una extensión de Matlab utilizado en el modelamiento y simulación
de sistemas. Para arrancar Simulink se puede hacer desde el prompt de Matlab
digitando el comando >>Simulink o utilizando el icono . Se abre la ventana
Simulink Library Browser como se indica abajo y se puede diagramar un nuevo
modelo activando el botón New Model , o sea el icono o de File
New Model
Un modelo es un conjunto de bloques que representa un sistema y como
archivo tiene extensión *.mdl
8.2 ELEMENTOS BÁSICOS
Los elementos básicos son líneas y bloques. Los bloques están agrupados en:
Sources, Links, Discrete, Continuos, Math, etc., tal como aparecen en la
ventana anterior. Cada bloque tiene entradas y salida para realizar su
interconexión. Por ejemplo, haga clic en Discrete y luego clic en Discrete
Transfer Fcn y arrastre el bloque a la ventana en blanco. Si quiere modificar la
función de transferencia del bloque haga doble clic en él y digite los
coeficientes del numerador y denominador en la nueva ventana que aparece.
Para la función 1/(z2
+2z +4) con tiempo de muestreo de 1 seg, quedaría:
22
8.3 SISTEMAS DE CONTROL
Realizar el diagrama en bloques del siguiente sistema de control:
Lo primero es arrastrar los bloques a la página en blanco de forma que, Step
es la función paso o escalón que se obtiene de Sources, Scope es el
osciloscopio que se obtiene de Sinks, Transfer Fcn se obtiene de Continuos,
Sum y Gain se obtienen de Math. Modifique los bloques dando doble clic sobre
cada uno de ellos para cambiar sus parámetros o valores e interconéctelos.
Lo segundo es cambiar los nombres a los bloques y asignar las variables o
señales haciendo doble clic en el lugar en que se van a colocar y salvar el
modelo especificándole un nombre, por ejemplo ejem1.mdl
23
Por último se debe simular el sistema. Para ello se configura la señal de
entrada, en este caso la función paso. Dar doble clic y asignar los siguientes
parámetros: Step time=0, Inicial value=0, Final value=1, Sample time=0. Para
simular el sistema de control se escoge del menú Simulation Start o el icono
.y luego se hace doble clic en Scope para ver su respuesta o salida del
sistema. Para observar además la entrada se puede colocar otro Scope a la
salida de Step y se puede probar para varios pasos variando su amplitud,
tiempo de inicio y tiempo de iniciación del paso. Para observar mejor la
respuesta se usa el botón Autoscale (binoculares ) de la ventana del
Scope. Si quiere observar mejor la respuesta o parte de ella se pueden cambiar
los parámetros de simulación, Simulation Simulation parameters. Por ejemplo
cambiar el Start time y el Stop time y correr nuevamente la simulación.
8.4 MODELANDO UN MOTOR DC
Un actuador común en sistemas de control es el motor DC. Provee
directamente movimiento rotatorio y acoplado con poleas o correas puede
proveer movimiento transnacional.
8.4.1 ECUACIONES DINÁMICAS
El circuito eléctrico de la armadura y el diagrama de cuerpo libre del rotor es
mostrado en la figura con sus ecuaciones dinámicas.
24
(1) Leyes de Newton
(2) Leyes de Kirchhoffs
Los parámetros físicos tienen los siguiente valores :
Momento de inercia del rotor : J = 0.01kg.m2
/sg2
Rata de amortiguamiento del sistema mecánico: b = 0.1 N.m.sg
Constante de la fuerza electromotriz: Ke = Kt = 0.01 Nm/Amp
Resistencia eléctrica: R = 1 ohm
Inductancia eléctrica: L =0.5H
Fuente de voltaje de entrada: V
Posición angular: θ
Se asume que el rotor y el eje son rígidos
8.4.2 MODELADO DEL MOTOR EN VELOCIDAD
25
8.5 EXTRAER MODELO LINEAL
Para obtener la función de transferencia del motor primero se trasladan los
parámetros del motor al modelo creando un archivo en Matlab (*.m) de la
siguiente forma:
% VALORES DE LOS PARÁMETROS DEL MOTOR
J = 0.01;
b = 0.1;
Ke = 0.01;
Kt = 0.01;
R = 1;
L = 0.5;
Se ejecuta este archivo y se simula el modelo para una entrada de paso
unitario de valor V = 0.01, con los siguientes parámetros de simulación: Stop
time = 3 sg. Arranque la simulación y observe la salida (velocidad del motor).
Como segundo paso se debe obtener el modelo lineal de Matlab del motor.
Para esto, borre el bloque Scope y cámbielo por Out obtenido de la librería de
Signals&Systems. Haga lo mismo para Step cambiándolo por In de esta misma
librería. Los bloques In y Out definen la entrada y salida del sistema que le
gustaría extraer. Salve este modelo. El sistema quedará así:
26
Como tercero y último paso, después de desarrollado el modelo y salvarlo por
ejemplo con el nombre MotorDcVel.mdl se ejecutan los siguientes comandos:
% OBTENER EL MODELO LINEAL DEL SISTEMA
[num, den] = linmod('MotorDcVel')
Gps = tf(num, den)
La respuesta es :
MATLAB APLICADO A INGENIERÍA 1
9. PROGRAMACIÓN
9.1 SUBSISTEMAS
Abra una nueva ventana y arrastre de la librería Signals&Systems el bloque
SubSystem , haga doble clic en este bloque, abra el modelo MotorDcVel.mdl (el
que tiene In y Out como terminales) cópielo y péguelo en la nueva ventana de
subsistema anterior. Cierre ventanas y aparece una nueva con el bloque con los
terminales del subsistema creado. Déle el nombre MotorDcVel. Si a este bloque
de subsistema se le da doble clic aparece el modelo completo diseñado
anteriormente. Otra forma es señalar los bloques de interés, ir a menú Edit -->
create Subsytem
9.1.1 SISTEMA EN LAZO ABIERTO
Al subsistema creado que constituye la planta de un sistema de control se le va a
adicionar un controlador y obtendremos la función de transferencia en lazo abierto
y lazo cerrado.
% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_abierto = tf(num, den)
Respuesta:
MATLAB APLICADO A INGENIERÍA 2
9.1.2 SISTEMA EN LAZO CERRADO
% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_cerrado= tf(num, den)
Respuesta:
9.2 SISTEMA DISCRETO
9.2.1 DIAGRAMA EN SIMULINK
9.2.2 PROGRAMA MATLAB
% SISTEMA DISCRETO DISCRETO
T=0.1;
[num,den]=dlinmod('MotorDigital',T)
Glazo_cerradoz=tf(num,den,T)
MATLAB APLICADO A INGENIERÍA 3
Respuesta:
9.3 SOLUCIÓN DE ECUACIONES DIFERENCIALES
Ejemplo:
Resolver la siguiente ecuación diferencial:
yytytyyyty
dt
dy
dt
yd
6'34''46'3''4632
2
−−=⇒=++⇒=++
Diagrama Simulink:
Respuestas:
MATLAB APLICADO A INGENIERÍA 4
Ejemplo:
Comprobar la integración por Simulink.
MATLAB APLICADO A INGENIERÍA 5
9.4 INTERCAMBIAR SEÑALES SIMULINK - MATLAB
DE MATLAB A SIMULINK
Para utilizar señale de Matlab a Simulink de la librerís Sources se utiliza el bloque
From Workspace.
Ejemplo: Resolver la ecuación y’’ + y = e t
, y’(0) = 0, y(0) =3
MATLAB APLICADO A INGENIERÍA 6
El vector [ t x ] se ejecuta en Matlab en el workspace de la siguiente forma:
>> t = 0:0.001:0.999;
>> t = t’;
>> x = exp(t)
Al ejecutarse Simulink toma los datos entregados por Matlab. No olvidar colocar
condición inicial y(0) = 3 en el integrador.
DE SIMULINK A MATLAB
Para enviar datos de Simulink a Matlab se utiliza de la librería Sinks el bloque To
Workspace.
Ejemplo:
Resolver la ecuación: f(t) = Mx’’ + Bx’ + Kx, M=1, B=1, K= 10, F(t) = 5
MATLAB APLICADO A INGENIERÍA 7
En Matlab:
>> plot(t,y)
9.5 EJERCICIOS
Ejercicio1:
Si la entrada es una señal senoidal, encontrar las salidas referidas a vC y iL.
Ejercicio2:
Para el siguiente problema hallar la variación de h si el caudal normal Q es de 10
lit/min y en t=5 seg se aplica una perturbación de 2 lit/min. El valor de K=10, A= 2
m2
.
hKtq
dt
dh
A −= )(
MATLAB APLICADO A INGENIERÍA 8
Diagrama Simulink:
Ejercicio3: La bola magnética
MATLAB APLICADO A INGENIERÍA 9
Ecuaciones:
iRV
h
i
mg
dt
hd
m −=−=
dt
di
L(2))1(
2
2
2
β
Valores:
m=0.1 Kg; g=9.81; R=2 Ohm; L=0.02 H; β=0.001
Diagrama simulink:
Controlador:
zeros=[-11.5+7.9i, -11.5-7.9i]
polos=[0 -1000]
ganancia=-3.3057e+004
Planta:
MATLAB APLICADO A INGENIERÍA 10
i(0) = 0; h(0)=0.05; h’(0)=0
MATLAB APLICADO A INGENIERÍA 11
Ejercicio4: Tanque de agua
Ecuación del modelo:
habV
dt
dh
A
dt
dVol
−==
Diagrama simulink:
MATLAB APLICADO A INGENIERÍA 12
Controlador:
Planta:
Ejercicio5: Movimiento parabólico
MATLAB APLICADO A INGENIERÍA 13
Ecuaciones:
aceleradoMovimiento''
unformeMovimiento0''
gy
x
−=
=
Condiciones iniciales:
Vo=100 m/sg; θ = 30º
MATLAB APLICADO A INGENIERÍA 14
MATLAB APLICADO A INGENIERÍA 15
Ejercicio6: Péndulo simple
Ecuación:
0''' =++ θθθ wsenBLmL
Valores:
w (peso) = 2; L (longitud) = 0.6; B (amortiguación) = 0.08;
Condiciones iniciales: θ’(0) = -2 rad/sg; θ(0) = π /2
Diagrama simulink:
MATLAB APLICADO A INGENIERÍA 16
9.6 FUNCIONES Y BUCLES
Matlab permite la ejecución de conjuntos de comandos escritos secuencialmente
en la ventana de edición y que son almacenados en un archivo nombre.m. Para
ejecutar un archivo basta con teclear su nombre (sin extensión) en modo
interactivo en la ventana de comando y pulsar enter. En el archivo .m se pueden
introducir textos explicativos comenzando la línea con el símbolo %.
9.6.1 FUNCTION
El comando function permite la definición de funciones con la siguiente sintaxis:
function parámetros_salida = nombre_función(parámetros_entrada)
cuerpo de la función
Una vez definida la función se guarda en un archivo nombre_función.m para su
posterior utilización. Cuando los parámetros de salida son más que uno se sitúan
entre corchetes separados por comas. Si los parámetros de entrada son más que
uno se separan por comas.
Ejemplo:
Definir la función fun1(x) = x^3 -2x+cos(x)
MATLAB APLICADO A INGENIERÍA 17
En la ventana de edición:
function p = fun1(x)
% Definición de una función simple
p = x^3 – 2*x+cos(x)
La función se guarda en un archivo fun1.m
Podemos luego utilizar esta función, por ejemplo,
>> fun1(3*pi/2)
ans=
95.2214
>> help fun1
Definición de una función simple
Ejemplo:
Solución de una ecuación de segundo grado
function [x1,x2] = cuadratica(a,b,c)
%Esta funcion calcula las raices de una ecuacion cuadratica
%la sintaxis es [x1,x2]=cuadratica(a,b,c)
radical = sqrt(b^2-4*a*c);
x1= (-b+radical) / (2*a);
x2= (-b-radical) / (2*a);
el archivo es cuadratica.m
>> help cuadratica
Esta funcion calcula las raices de una ecuacion cuadratica
la sintaxis es [x1,x2]=cuadratica(a,b,c)
>> [x1,x2]=cuadratica(1,2,3)
x1 =
-1.0000 + 1.4142i
x2 =
-1.0000 - 1.4142i
MATLAB APLICADO A INGENIERÍA 18
fval:
La evaluación de una función en sus argumentos, también puede realizarse con el
comando feval que tiene la siguiente sintaxis:
feval(‘F’,arg1,arg2,…)
Evalúa la función F (archivo F.m) en los argumentos especificados arg1, arg2, …..
Ejemplo:
function [x1,x2] = ecuacion2(a,b,c)
% Solución de la ecuación de segundo orden
d = b^2 – 4*a*c;
x1 = (-b + sqrt(d))/(2*a);
x2 = (-b - sqrt(d))/(2*a);
Para resolver la ecuación x2
+ 2x +3 = 0
>> [x1, x2] = feval(‘ecuacion2’,1,2,3)
o también:
>> [x1, x2] = ecuacion2(1,2,3)
9.6.2 GLOBAL
Normalmente cada función de Matlab definida como un archivo–M contiene sus
variables como variables locales, esto es, su efecto es al interior de este archivo
independientemente de otros archivos. Es posible definir otras variables que tenga
efecto en otros archivos-M con variables globales usando el comando global con
la siguiente sintaxis:
global x y z ... define las variables x, y, z,....como globales
9.6.3 FOR
MATLAB APLICADO A INGENIERÍA 19
Permite ejecutar de forma repetitiva un comando o grupo de comandos varias
veces. Tiene la siguiente sintaxis:
caso1:
for i= 1:n
comandos
end
caso2:
for i=n:-0.2:1
comandos
end
caso 3:
for i=1:m
for i=n
comandos
end
end
Ejemplo:
Sumar los enteros pares de 1 a 100
suma=0;
for i=1:2:100
suma=suma+i;
end
disp('El resultado es: ')
display(suma)
Ejemplo:
Calcular la suma de los elementos de una matriz
M=[1 2 -2 4; 0 -3 1 0; 2 -1 4 3];
% numero de filas
m=length(M(:,1));
% numero de columnas
n=length(M(1,:));
suma=0;
MATLAB APLICADO A INGENIERÍA 20
for i=1:m
for j=1:n
suma=M(i,j)+suma;
end
end
display(suma)
9.6.4 WHILE
Mientras se ejecuta una condición se ejecutan los comandos o sentencias.
while condición
sentencias
end
Ejemplo:
Calcular los volúmenes de las esferas para radio igual a: 1,2,3,4,5
r=0;
while r<5
r=r+1;
vol=(4/3)*pi*r^3;
fprintf('El radio es =%g y el volumen es =%g n',r,vol)
end
El radio es =1 y el volumen es =4.18879
El radio es =2 y el volumen es =33.5103
El radio es =3 y el volumen es =113.097
El radio es =4 y el volumen es =268.083
El radio es =5 y el volumen es =523.599
Ejemplo:
Gz=tf(1,[0.4 0.3]);
Gzc=zpk(1,[-1 0.2],0.5);
SIGA=1;
while SIGA ==1
clc
disp('LA FUNCION DE TRANSF. EN LAZO ABIERTO ES: ');
Gla = Gz*Gzc
disp(' ');
disp('LA FUNCION DE TRANSF. EN LAZO CERRADO ES: ');
Glc = feedback(Gla,1)
disp('PARA SEGUIR OPRIMA ENTER');
MATLAB APLICADO A INGENIERÍA 21
pause
clc
disp(' ');
disp('LOS POLOS DEL SISTEMA SON : ');
Polos = pole(Glc)
disp('QUE TIENEN MAGNITUDES Y ANGULOS DE :');
Mag = abs(Polos)
Ang1 = angle(Polos);
Ang = Ang1*180/pi
if (Mag(1)<1)&(Mag(2)<1)
disp('EL SISTEMA ES ESTABLE');
else
disp('EL SISTEMA ES INESTABLE');
end
disp(' ');
disp('PARA SEGUIR OPRIMA ENTER');
pause
SIGA = input (' PRESIONE 1 PARA SEGUIR ');
end
Ejemplo:
Genere una tabla que suministre los inversos, cuadrados y raíces cuadradas del 1
al 5
i=0;
while i<5
i=i+1;
A(i)=i;
B(i)=1/i;
C(i)=i^2;
D(i)=sqrt(i);
end
E=[A',B',C',D']
E =
1.0000 1.0000 1.0000 1.0000
2.0000 0.5000 4.0000 1.4142
3.0000 0.3333 9.0000 1.7321
4.0000 0.2500 16.0000 2.0000
5.0000 0.2000 25.0000 2.2361
MATLAB APLICADO A INGENIERÍA 22
9.6.5 IF
caso 1:
if condición
sentencias
end
caso 2:
if condición1
bloque1
elseif condción2
bloque2
elseif condición3
bloque3
else % sino cumple condiciones anteriores
bloque4
end
Operadores de relación:
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
∼= No es igual a
Operadores lógicos:
& AND
⏐ OR
∼ NOT
xor XOR
Ejemplo:
calif = input('Dame la calificacion: ');
if calif >= 3.0
disp(' ')
disp('Aprobado')
end
if calif < 3.0
MATLAB APLICADO A INGENIERÍA 23
disp(' ')
disp('Desaprobado')
end
% Otra forma
calif = input('Dame la calificacion: ');
if calif >= 3.0
disp(' ')
disp('Aprobado')
else
disp(' ')
disp('Desaprobado')
end
Ejemplo:
El precio del vino está condicionado a la cantidad requerida. Hasta 5 botellas el
precio unitario es de $10.000, de 6 a 12 botellas el precio es de $12.000, y a partir
de 13 a $15.000. Elaborar un programa, que pegunta cuántas botellas se desean,
indique el precio unitario y el total del gasto.
c=input('¿Cuántas botellas quiere? ');
if c<5
Pu=10000;
Pt=Pu*c;
elseif c<=12
Pu=12000;
Pt=Pu*c;
else
Pu=15000;
Pt=Pu*c;
end
disp('Precio unitario: ')
Pu
disp('Precio total: ')
Pt
9.6.6 SWITCH
Se evalúa una expresión y se compara con las expresiones en case. Se ejecuta el
bloque que corresponda con ese resultado. Si ninguno es igual se ejecuta el
bloque de otherwise.
switch expresión
MATLAB APLICADO A INGENIERÍA 24
case expresión1
bloque1
case expresión2
bloque2
.........................
otherwise
bloque3
Ejemplo:
disp('SELECCIONE PRESIONANDO :');
disp(' 1: PARA FUNCION DE LA PLANTA EN TF ');
disp(' 2: PARA FUNCION DE LA PLANTA EN ZPK ');
n=input('SELECCIONE LA OPCION : ');
disp(' ');
switch n
case 1
num = input('ENTRE NUMERADOR DE LA PLANTA : num = ');
den = input('ENTRE DENOMINADOR DE LA PLANTA : den = ');
disp('LA FUNCION DE TRANSFERENCIA DE LA PLANTA ES : Gp(s) = ');
Gp = tf(num,den)
disp(' ');
case 2
Z = input('Entre vector de ceros : Z = ');
P = input('Entre vector de polos : P = ');
K = input('Ganancia es igual a : K = ');
disp('LA FUNCION DE TRANSFERENCIA DE LA PLANTA ES : Gp(s) = ');
Gp = zpk(Z,P,K)
end
9.6.7 INPUT
Permite imprimir un mensaje y recuperar como valor el resultado de una expresión
tecleada por el usuario.
n = input (‘Teclee el polinomio’)
9.6.8 DISP
Permite imprimir un mensaje en pantalla.
disp(‘Universidad de Colombia’)
MATLAB APLICADO A INGENIERÍA 25
9.6.9 FIND
Para el ejemplo del movimiento del péndulo, calcular por programación el ángulo
para un tiempo dado.
%Programa en Matlab
g=9.8;
w=2;
L=0.6;
B=0.08;
m=w/g;
%Para correr el simulink tiene que en K>>movpendulo y luego correrlo
disp('Realice la simulacion y de return para ejecutar')
keyboard
a=length(t);
tf=t(a);
delta=tf/a;
%calcular el angulo para un tiempo T dado
T=input('Entre el tiempo de T: ');
i=find(t <(T+delta) & t >(T-delta));
disp('El desplazamiento angular es de: ')
AngR=teta(i(2))
AngG=AngR*180/pi
EJEMPLO: SISTEMA MECÁNICO
MATLAB APLICADO A INGENIERÍA 26
Ecuaciones dinámicas:
∫ −+= dtvvk
dt
dv
mtf )21(
1
1)(
∫ +−+= 2)12(
2
20 bvdtvvk
dt
dv
m
Ecuaciones de Laplace:
s
VV
ksVmsF
21
11)(
−
+=
2
12
220 bV
s
VV
ksVm +
−
+=
Ecuaciones para Simulink:
2
1
21
1
1
sm
VV
k
sm
F
V
−
−=
Programa en Simulink:
s
VV
kbsm
21
)2(2
−
=+V
MATLAB APLICADO A INGENIERÍA 27
Programa:
%PROGRAMA DEL SISTEMA MECANICO1
clear all
m1=40;
m2=60;
k=400;
b=200;
clc
disp('********************************************************************')
disp('Para ir a simulink tiene que digitar en K>>mecanico1')
disp('DIGITE en K>> return para retornar a Matlab y TECLA Enter')
keyboard
[num,den]=linmod('Mecanico1');
Gs=tf(num,den);
%************************************************************************
%Rutina para quitar coeficientes pequeños
n=length(num);
d=length(den);
for i=1:n
if num(i)<10e-6
num(i)=0;
else
num(i)=num(i);
end
end
for i=1:d
if den(i)<10e-6
den(i)=0;
else
den(i)=den(i);
MATLAB APLICADO A INGENIERÍA 28
end
end
%***************************************************************
Gs=tf(num,den);
clc
disp('***********************************************************')
display(Gs)
disp('***********************************************************')
disp(‘Oprima tecla Enter’)
pause
Gs=poly2sym(num,'s')/poly2sym(den,'s');
syms t
%f(t)=1 Nt
ft=1*heaviside(t);
Fs=laplace(ft);
V2s=Gs*Fs;
v2t=ilaplace(V2s);
v2=vpa(v2t,3)
t=1.0;
v2=eval(v2)
% 0.060
EJEMPLO: SISTEMA TERMOQUÍMICO
Se desarrolla una reacción termoquímica en donde el reaccionante A se convierte
en un producto B.
Velocidad de reacción: r(t)= k c(t)
Constante de velocidad de reacción: k = 0,2 min-1
Concentración de la entrada: ci(t)
Para t= 0; ci(0)=1.25 lbmol/pie3
Volumen de la masa reaccionante: V= 5 litros
Flujo de entrada: F= 1 lt/min
Ecuación dinámica:
)()()(
)(
tKVctFctFc
dt
tdc
V i −−=
)()()(
)(
tcKVFtFc
dt
tdc
V i +−=
)()(
)(
tc
KVF
F
tc
dt
tdc
KVF
V
i
+
=+
+
Constante de tiempo:
MATLAB APLICADO A INGENIERÍA 29
KVF
V
+
=τ
Ganancia de estado estacionario:
KVF
F
Ke
+
=
Reemplazando valores: τ = 2.5 min; Ke = 0.5;
Condición inicial de la concentración: c(0)
0 = Fci(0)-Fc(0)-KVc(0)
Reemplazando valores: c(0) = 0.625 lbmol/pie3
Programa en Matlab:
%Entrada al paso. Programa pplineal.m
function dy=pplineal(t,y)
global K X tau
dy=(K*X-y)/tau;
% Entrada rampa. Programa rplineal.m
function dy=rplineal(t,y)
global K r tau
dy=(K*r*t-y)/tau;
% Entrada senoidal. Programa splineal.m
function dy=splineal(t,y)
global K tau A w
dy=(K*A*sin(w*t)-y)/tau;
% Programa principal
F=1;
V=5;
K=0.2;
ci0=1.25;
c0=solve('F*ci0-F*c0-K*V*c0=0');
c0=eval(c0)
%Constante de tiempo
tau=V/(F+K*V)
% tau=2.5 minutos
%Ganancia en estado estacionario
Ke=F/(F+K*V)
% Ke=0.5
MATLAB APLICADO A INGENIERÍA 30
global R K tau X r A w Rango Inicio
Rango=input('Tiempo de simulacion=');
Inicio=input('Condiciones iniciales=');
N=input('ESCRIBA 1=PASO, 2=RAMPA, 3=SENO: ');
disp(' ')
switch N
case 1
X=input('Valor del paso=');
[t,y]=ode45('pplineal',Rango,Inicio);
plot(t,y)
case 2
r=input('valor pendiente de la rampa=');
[t,y]=ode45('rplineal',Rango,Inicio);
plot(t,r*t,t,y/K,'r')
case 3
A=input('Amplitud del seno=');
w=input('Frecuencia del seno=');
[t,y]=ode45('splineal',Rango,Inicio);
disp('Amplitud del perfil de la respuesta')
K*A/sqrt(1+(w*tau)^2)
disp('Fase de la respuesta respecto a la entrada')
atan(-w*tau)
plot(t,A*sin(w*t),t,y,'r')
end
Programa en Simulink:
MATLAB APLICADO A INGENIERÍA 31
Ejemplo: SISTEMA MECANICO2
Parámetros:
m1=40; m2=60; k1=400; k2=400; b1=180; b2=220;
MATLAB APLICADO A INGENIERÍA 32
Ecuaciones dinámicas:
1)21()21(1
1
1)( bvvdtvvk
dt
dv
mtf −+−+= ∫
22221)12()12(1
2
20 vbdtvkbvvdtvvk
dt
dv
m ++−+−+= ∫∫
Ecuaciones de Laplace:
1)21()21(
1
11)( bVVVV
s
K
sVmsF −+−+=
222
2
1)12()12(
1
220 VbV
s
k
bVVVV
s
k
sVm ++−+−+=
Ecuaciones para Simulink:
⎥
⎦
⎤
⎢
⎣
⎡ +
−−=⎥
⎦
⎤
⎢
⎣
⎡
+−−= )
11
)(21(
1
1
)1
1
)(21()(
1
1
1
s
sbk
VVF
sm
b
s
k
VVsF
sm
V
1
GUIDE – MATLAB
INTRODUCCIÓN
GUIDE es un entorno de programación visual disponible en MATLAB para realizar
y ejecutar programas que necesiten ingreso continuo de datos.
Inicio
Para iniciar nuestro proyecto, lo podemos hacer de dos maneras:
a) Ejecutando la siguiente instrucción en la ventana de comandos:
>> guide
b) Haciendo un click en el ícono que muestra la figura:
Se presenta el siguiente cuadro de diálogo:
2
Se presentan las siguientes opciones:
a) Blank GUI (Default)
La opción de interfaz gráfica de usuario en blanco (viene predeterminada), nos
presenta un formulario nuevo, en el cual podemos diseñar nuestro programa.
b) GUI with Uicontrols
Esta opción presenta un ejemplo en el cual se calcula la masa, dada la densidad y
el volumen, en alguno de los dos sistemas de unidades. Podemos ejecutar este
ejemplo y obtener resultados.
c) GUI with Axes and Menu
Esta opción es otro ejemplo el cual contiene el menú File con las opciones Open,
Print y Close. En el formulario tiene un Popup menu, un push button y un objeto
Axes, podemos ejecutar el programa eligiendo alguna de las seis opciones que se
encuentran en el menú despegable y haciendo click en el botón de comando.
d) Modal Question Dialog
Con esta opción se muestra en la pantalla un cuadro de diálogo común, el cual
consta de una pequeña imagen, una etiqueta y dos botones Yes y No,
dependiendo del botón que se presione, el GUI retorna el texto seleccionado (la
cadena de caracteres ‘Yes’ o ‘No’).
Para obtener la etiqueta de cada elemento de la paleta de componentes
ejecutamos: File>>Preferentes y seleccionamos Show names in component
palette.
Tenemos la siguiente presentación:
3
DESCRIPCIÓN DE LOS COMPONENTES:
CONTROL DESCRIPCIÓN
Push Button Genera una acción
Slider Representa un rango de valores
Radio Button Representa una opción
Check Box Indica el estado de una opción
Edit Text Para editar texto
Static text Muestra un string de texto
Pop-up Menu Provee una lista de opciones
Listbox Lista deslizable
Toggle Button Genera una acción on, off
Axes Para graficar
Panel Visualiza grupo de controles
Button Grup Es un panel exclusivo para radio buttons
y toggle buttons
ActiveX Control Despliega controles ActiveX en Gui
PROPIEDADES DE LOS COMPONENTES
Cada uno de los elementos de GUI, tiene un conjunto de opciones que acceder
con click derecho. Aparece el siguiente submenú:
La opción Property Inspector nos permite personalizar cada elemento.
4
Al hacer click derecho en el elemento ubicado en el área de diseño, una de las
opciones más importantes es View Callbacks, la cual, al ejecutarla, abre el archivo
.m. asociado a nuestro diseño y nos posiciona en la parte del programa que
corresponde a la subrutina que se ejecutará cuando se realice una determinada
acción sobre el elemento que estamos editando.
FUNCIONAMIENTO DE UNA APLICACIÓN GUI
Una aplicación GUIDE consta de dos archivos: .m y .fig. El archivo .m es el que
contiene el código con las correspondencias de los botones de control de la
interfaz y el archivo .fig contiene los elementos gráficos.
Cada vez que se adicione un nuevo elemento en la interfaz gráfica, se genera
automáticamente código en el archivo .m. Para ejecutar una Interfaz Gráfica, si la
hemos etiquetado con el nombre curso.fig, simplemente ejecutamos en la ventana
de comandos >> curso. O haciendo click derecho en el m-file y seleccionando la
opción RUN.
SENTENCIAS GET Y SET
La asignación u obtención de valores de los componentes se realiza mediante las
sentencias get y set. Por ejemplo:
celsius1=eval(get(handles.celsius,'string'));
%Para convertir celsius a kelvin
kelvin1=celsius1 + 273.15;
Notar que siempre se obtienen los datos a través de los identificadores handles.
5
Para colocar el valor de la variable kelvin1 al statictext,(Tag kelvin) escribimos:
set(handles.kelvin,'string',kelvin1);
Ejemplo: ConvTemperatura.fig
Al correrse el programa ConvTemp, escibimos en la casilla de celsius 40 y
calculamos. Se obtiene la siguiente figura:
6
El programa genera el archivo siguiente ConvTemperatura.m :
% --- Executes on button press in BotonCelsius.
function BotonCelsius_Callback(hObject, eventdata, handles)
% hObject handle to BotonCelsius (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Adicionamos
% Para leer el dato colocado en celsius
celsius1=eval(get(handles.celsius,'string'));
%Para convertir celsius a kelvin y fehrenheit
kelvin1=celsius1 + 273.15;
fahrenheit1=1.8*celsius1 + 32;
%Para escribir datos en los Edit Text
set(handles.kelvin,'string',kelvin1);
set(handles.fahrenheit,'string',fahrenheit1);
% --- Executes on button press in BotonKelvin.
function BotonKelvin_Callback(hObject, eventdata, handles)
% hObject handle to BotonKelvin (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Adicionamos
% Para leer el dato colocado en kelvin
kelvin1=eval(get(handles.kelvin,'string'));
%Para convertir kelvin a celsius y fehrenheit
celsius1=kelvin1 - 273.15;
fahrenheit1=(kelvin1-273.15)*1.8 + 32;
%Para escribir datos en los Edit Text
set(handles.celsius,'string',celsius1);
set(handles.fahrenheit,'string',fahrenheit1);
% --- Executes on button press in BotonFarenheit.
function BotonFarenheit_Callback(hObject, eventdata, handles)
% hObject handle to BotonFarenheit (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Adicionamos
% Para leer el dato colocado en fahrenheit
fahrenheit1=eval(get(handles.fahrenheit,'string'));
%Para convertir fahrenheit a celsius y kelvin
celsius1=(fahrenheit1-32)*5/9;
kelvin1=(fahrenheit1-32)*5/9 + 273.15;
%Para escribir datos en los Edit Text
7
set(handles.celsius,'string',celsius1);
set(handles.kelvin,'string',kelvin1);
% --- Executes on button press in BotonSalir.
function BotonSalir_Callback(hObject, eventdata, handles)
% hObject handle to BotonSalir (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf)
Ejemplo: Grafica1.fig
8
function Frecuencia_Callback(hObject, eventdata, handles)
% hObject handle to Frecuencia (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Frecuencia as text
% str2double(get(hObject,'String')) returns contents of Frecuencia as a double
% Rangos de tiempo
t1=str2num(get(handles.TiempoInicial,'string'));
t2=str2num(get(handles.TiempoFinal,'string'));
% Vector tiempo
t=linspace(t1,t2,200);
% Valor de la frecuencia
frec=str2num(get(handles.Frecuencia,'string'));
% graficar función seno
y=sin(2*pi*frec*t);
plot(t,y);
Ejemplo: Slider.fig
Propiedades de la barra de deslizamiento:
9
Min: 1; Max:10; Value:5
10
function Frecuencia_Callback(hObject, eventdata, handles)
% hObject handle to Frecuencia (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of Frecuencia as text
% str2double(get(hObject,'String')) returns contents of Frecuencia as a double
% Rangos de tiempo
t1=str2num(get(handles.TiempoInicial,'string'));
t2=str2num(get(handles.TiempoFinal,'string'));
% Vector tiempo
t=linspace(t1,t2,200);
% Valor de la frecuencia
frec=str2num(get(handles.Frecuencia,'string'));
% Barra de desplazamiento
editamin=get(handles.Barra,'Min');
editamax=get(handles.Barra,'Max');
%Chequear si el valor de frecuencia es numerico
if isnumeric(frec)&lenght(frec)==1&frec>=editamin&frec<=editamax
set(handles.Barra,'Value',frec)
elseif frec<editamin
set(gcbo,'string',editamin);
set(handles.Barra,'Value',editamin);
frec=editamin;
elseif frec>editamax
set(gcbo,'string',editamax);
set(handles.Barra,'value',editamax);
frec=editamax
end
% graficar función seno
y=sin(2*pi*frec*t);
plot(t,y);
function Barra_Callback(hObject, eventdata, handles)
% hObject handle to Barra (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
set(handles.Frecuencia,'string',get(gcbo,'value'));
% Rangos de tiempo
t1=str2num(get(handles.TiempoInicial,'string'));
11
t2=str2num(get(handles.TiempoFinal,'string'));
% Vector tiempo
t=linspace(t1,t2,200);
frec=get(gcbo,'value');
y=sin(2*pi*frec*t);
plot(t,y);
Ejemplo: Calculadora.fig
Calculadora.m
% --- Executes on button press in uno.
function uno_Callback(hObject, eventdata, handles)
% hObject handle to uno (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString=get(handles.Res,'String');
textString=strcat(textString,'1');
set(handles.Res,'String',textString)
% --- Executes on button press in dos.
function dos_Callback(hObject, eventdata, handles)
% hObject handle to dos (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString=get(handles.Res,'String');
textString=strcat(textString,'2');
set(handles.Res,'String',textString)
12
Al correr el programa se obtiene:
13
% --- Executes on button press in suma.
function suma_Callback(hObject, eventdata, handles)
% hObject handle to suma (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString=get(handles.Res,'String');
textString=strcat(textString,'+');
set(handles.Res,'String',textString)
% --- Executes on button press in igual.
function igual_Callback(hObject, eventdata, handles)
% hObject handle to igual (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
textString=get(handles.Res,'String');
textString=eval(textString,'=');
set(handles.Res,'String',textString)
% --- Executes on button press in borrar.
function borrar_Callback(hObject, eventdata, handles)
% hObject handle to borrar (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
ini=char(' ');
set(handles.Res,'String',ini);
% --- Executes on button press in acerca.
function acerca_Callback(hObject, eventdata, handles)
% hObject handle to acerca (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
msgbox('Calculadora Sencilla','Acerca de');
Ejemplo: Paralelogramo.fig
14
15
% --- Executes on button press in GRAFIQUE.
function GRAFIQUE_Callback(hObject, eventdata, handles)
% hObject handle to GRAFIQUE (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Argumentos de las rectas
angulo1=str2num(get(handles.Ang1,'string'));
angulo2=str2num(get(handles.Ang2,'string'));
angulo3=str2num(get(handles.Ang3,'string'));
longitud1=str2num(get(handles.Long1,'string'));
longitud2=str2num(get(handles.Long2,'string'));
longitud3=str2num(get(handles.Long3,'string'));
% Valor del vértice inicial
x(1)=0;
y(1)=0;
%Argumentos en forma matricial
lineas=[angulo1,longitud1;angulo2,longitud2;angulo3,longitud3];
%Cálculo de las líneas
for i=1:3
angr=lineas(i,1)*pi/180;
m(i)=tan(angr);
x(i+1)=x(i)+lineas(i,2)*cos(angr);
y(i+1)=y(i)+lineas(i,2)*sin(angr);
delta=(x(i+1)-x(i))/100;
mx=x(i):delta:x(i+1);
my=m(i)*(mx-x(i))+y(i);
plot(mx,my,'r')
vertice=['A';'B';'C';'D'];
text(x(i),y(i),vertice(i))
title('ENCONTRAR UN LADO DEL PARALELOGRAMO')
hold on
end
% Argumentos de la cuarta recta
m=(y(1)-y(i+1))/(x(1)-x(i+1));
angr=atan(m);
ang=angr*180/pi
d=sqrt((y(1)-y(i+1))^2+(x(1)-x(i+1))^2)
delta=(x(1)-x(i+1))/100;
mx=x(i+1):delta:x(1);
my=m*(mx-x(i+1))+y(i+1);
plot(mx,my,'r')
text(x(i+1),y(i+1),vertice(i+1))
hold off
% Poner la respuesta de la cuarta recta
angulo=num2str(ang);
16
set(handles.Ang4,'string',angulo);
longitud=num2str(d);
set(handles.Long4,'string',longitud);
% --- Executes on button press in LIMPIA.
function LIMPIA_Callback(hObject, eventdata, handles)
% hObject handle to LIMPIA (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
limpia=' ';
set(handles.Ang1,'string',limpia);
set(handles.Ang2,'string',limpia);
set(handles.Ang3,'string',limpia);
set(handles.Ang4,'string',limpia);
set(handles.Long1,'string',limpia);
set(handles.Long2,'string',limpia);
set(handles.Long3,'string',limpia);
set(handles.Long4,'string',limpia);
% --- Executes on button press in SALIR.
function SALIR_Callback(hObject, eventdata, handles)
% hObject handle to SALIR (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
close(gcbf)
Ejemplo: ClaculoMasa.fig
17
function density_Callback(hObject, eventdata, handles)
% hObject handle to density (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of density as text
% str2double(get(hObject,'String')) returns contents of density as a double
density = str2double(get(hObject, 'String'));
if isnan(density)
set(hObject, 'String', 0);
errordlg('Input must be a number','Error');
end
% Save the new density value
handles.metricdata.density = density;
guidata(hObject,handles)
function volume_Callback(hObject, eventdata, handles)
% hObject handle to volume (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of volume as text
% str2double(get(hObject,'String')) returns contents of volume as a double
volume = str2double(get(hObject, 'String'));
if isnan(volume)
set(hObject, 'String', 0);
18
errordlg('Input must be a number','Error');
end
% Save the new volume value
handles.metricdata.volume = volume;
guidata(hObject,handles)
function calculate_Callback(hObject, eventdata, handles)
% hObject handle to calculate (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
mass = handles.metricdata.density * handles.metricdata.volume;
set(handles.mass, 'String', mass);
% --- Executes on button press in reset.
function reset_Callback(hObject, eventdata, handles)
% hObject handle to reset (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
initialize_gui(gcbf, handles, true);
% --------------------------------------------------------------------
function unitgroup_SelectionChangeFcn(hObject, eventdata, handles)
% hObject handle to unitgroup (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
if (hObject == handles.english)
set(handles.text4, 'String', 'lb/cu.in');
set(handles.text5, 'String', 'cu.in');
set(handles.text6, 'String', 'lb');
else
set(handles.text4, 'String', 'kg/cu.m');
set(handles.text5, 'String', 'cu.m');
set(handles.text6, 'String', 'kg');
end
% --------------------------------------------------------------------
function initialize_gui(fig_handle, handles, isreset)
% If the metricdata field is present and the reset flag is false, it means
% we are we are just re-initializing a GUI by calling it from the cmd line
% while it is up. So, bail out as we dont want to reset the data.
if isfield(handles, 'metricdata') && ~isreset
return;
end
19
handles.metricdata.density = 0;
handles.metricdata.volume = 0;
set(handles.density, 'String', handles.metricdata.density);
set(handles.volume, 'String', handles.metricdata.volume);
set(handles.mass, 'String', 0);
set(handles.unitgroup, 'SelectedObject', handles.english);
set(handles.text4, 'String', 'lb/cu.in');
set(handles.text5, 'String', 'cu.in');
set(handles.text6, 'String', 'lb');
% Update handles structure
guidata(handles.figure1, handles);
Ejemplo: FigPopupmenu
En el inspector de propiedades en el String del popmenu se debe escribir:
20
function FigPopupmenu_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% This sets up the initial plot - only do when we are invisible
21
% so window can get raised using FigPopupmenu.
if strcmp(get(hObject,'Visible'),'off')
plot(rand(5));
end
function pushbutton1_Callback(hObject, eventdata, handles)
axes(handles.axes1);
cla;
popup_sel_index = get(handles.popupmenu1, 'Value');
switch popup_sel_index
case 1
plot(rand(5));
case 2
plot(sin(1:0.01:25.99));
case 3
bar(1:.5:10);
case 4
plot(membrane);
case 5
surf(peaks);
end
Menu editor:
22
% --------------------------------------------------------------------
function FileMenu_Callback(hObject, eventdata, handles)
% hObject handle to FileMenu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% --------------------------------------------------------------------
function OpenMenuItem_Callback(hObject, eventdata, handles)
file = uigetfile('*.fig');
if ~isequal(file, 0)
open(file);
end
% --------------------------------------------------------------------
function PrintMenuItem_Callback(hObject, eventdata, handles)
printdlg(handles.figure1)
% --------------------------------------------------------------------
function CloseMenuItem_Callback(hObject, eventdata, handles)
selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],...
['Close ' get(handles.figure1,'Name') '...'],...
'Yes','No','Yes');
23
if strcmp(selection,'No')
return;
end
delete(handles.figure1)
Ejemplo: Mensajes.fig
Adicionar a los Callbacks:
% --- Executes on button press in Aviso.
function Aviso_Callback(hObject, eventdata, handles)
warndlg('Esto es un aviso','Curso_GUIDE');
% --- Executes on button press in Error.
function Error_Callback(hObject, eventdata, handles)
errordlg('Esto es un mensaje de error',' Curso_GUIDE ');
% --- Executes on button press in Ayuda.
function Ayuda_Callback(hObject, eventdata, handles)
helpdlg('Esto es una ayuda',' Curso_GUIDE ');
24
% --- Executes on button press in Informacion.
function Informacion_Callback(hObject, eventdata, handles)
msgbox('Esto es un cuadro de mensaje',' Curso_GUIDE ');
% --- Executes on button press in Pregunta.
function Pregunta_Callback(hObject, eventdata, handles)
questdlg('Esto es una pregunta',' Curso_GUIDE ');
Se obtienen a ejecutar los botones las siguientes respuestas:
25
Para el caso especial de las preguntas podemos ejecutar o no sentencias
dependiendo de la respuesta escogida. Por ejemplo, si deseamos salir o no del
programa, se tiene1
:
ans=questdlg('¿Desea salir del programa?','SALIR','Si','No','No');
if strcmp(ans,'No')
return;
end
clear,clc,close all
La función strcmp compara dos strings y si son iguales retorna el valor 1 (true).
Clear elimina todas los valores de workspace, clc limpia la pantalla y close all
cierra todos los Guide. Nótese que la secuencia 'Si','No','No' termina en 'No'; con
esto se logra que la parte No del cuadro de pregunta esté resaltado. Si terminara
en 'Si', la parte Si del cuadro de pregunta se resaltaría.
1
Manual de Interfaz Gráfica de Usuario en Matlab
Por: Diego Orlando Barragán Guerrero
26
Ejemplo: Archivos.fig (uso de uigetfile)
Adicionar en los Callbacks:
function IMAGEN_Callback(hObject, eventdata, handles)
[FileName Path]=uigetfile({'*.jpg;*.bmp'},'Abrir Imagen');
if isequal(FileName,0)
return
else
a=imread(strcat(Path,FileName));
imshow(a);
end
handles.direccion=strcat(Path,FileName);
guidata(hObject,handles)
Como se puede observar, si el usuario presiona cancelar el programa no ejecuta
ningún proceso. La función imread lee una imagen en Matlab e imshow la
presenta.
Este programa tendrá la siguiente presentación:
27
% --- Executes on button press in DOC.
function DOC_Callback(hObject, eventdata, handles)
[FileName Path]=uigetfile({'*.doc;*.xls'},'Abrir documento');
if isequal(FileName,0)
return
else
winopen(strcat(Path,FileName));
end
% --- Executes on button press in PROGRAMA.
function PROGRAMA_Callback(hObject, eventdata, handles)
[FileName Path]=uigetfile({'*.mdl'},'Abrir archivo');
if isequal(FileName,0)
return
else
open_system(strcat(Path,FileName))
end
28
Ejemplo: Listbox.fig
Adicionamos en los Callbacks:
% --- Executes just before Listbox is made visible.
function Listbox_OpeningFcn(hObject, eventdata, handles, varargin)
set(handles.text1,'string','List Box');
set(handles.text2,'string',...
['Codigo:2005202275. Nota Matlab=3.5']);
% Choose default command line output for Listbox
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% --- Executes on selection change in listbox1.
function listbox1_Callback(hObject, eventdata, handles)
% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from listbox1
n=get(hObject,'Value');
gos=get(hObject,'String');
switch n
case 1
set(handles.text2,'string',...
['Codigo:2005202275. Nota Matlab=3.5']);
case 2
set(handles.text2,'string',...
['Codigo:2001101100. Nota Matlab=3.8']);
case 3
set(handles.text2,'string',...
29
['Codigo:2006264188. Nota Matlab=4.5']);
end
guidata(hObject,handles);
30
Ejemplo: Gui_simulik.fig (Pop up Menu)
Comandos utilizados:
find_system: comprueba si existe el programa en simulink
find_System('Type','Nombre_simulink')
open_System: Abre el programa Simulink
open_system(‘Nombre_simulink’)
set_param: Para escribir en los bloques de simulik
set_param(‘Nombre_simulink/’Nombre_bloque’)
PROGRAMA EN SIMULINK:
PROGRAMA EN GUIDE:
31
PROGRAMA EN MATLAB:
function Guide_Simulink_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to Guide_Simulink (see VARARGIN)
% Choose default command line output for Guide_Simulink
% Update handles structure
handles.output = hObject;
guidata(hObject, handles);
%----------------------------------------------------
find_system('Type','simu');
open_system('simu');
set_param('simu/Signal Generator','Waveform','sine','frequency','5');
set_param('simu','Solver','Ode23','StopTime','1');
set_param(gcs,'SimulationCommand','start');
%----------------------------------------------------
% UIWAIT makes Guide_Simulink wait for user response (see UIRESUME)
% uiwait(handles.figure1);
32
function wave_Callback(hObject, eventdata, handles)
% hObject handle to wave (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see
% GUIDATA)
%--------------------------------------------------------------
onda=get(hObject,'Value');
if onda==1
set_param('simu/Signal Generator','Waveform','sine');
set_param(gcs,'simulationCommand','Start');
elseif onda==2
set_param('simu/Signal Generator','Waveform','square');
set_param(gcs,'simulationCommand','Start');
elseif onda==3
set_param('simu/Signal Generator','Waveform','sawtooth');
set_param(gcs,'simulationCommand','Start');
else
set_param('simu/Signal Generator','Waveform','random');
set_param(gcs,'simulationCommand','Start');
end
%---------------------------------------------------------------
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
%-------------------------------------------------------------------
f=get(hObject,'string');
set_param('simu/Signal Generator','Frequency',f);
set_param('Simulationcommand','Start');
%-------------------------------------------------------------------
33
Ejemplo: Reproducir sonido
música.mdl
Los bloques se encuentran en el Toolbox de Signal Processing, como Source y
Sink
audio.fig (archivos.wav)
34
El Slider debe estar en Max= 10.0 y Min=0.0 para que se pueda escuchar el
cambio de volumen.
Audio.m
function audio_OpeningFcn(hObject, eventdata, handles, varargin)
%--------------------------------------------------------------------------
set(handles.volumen,'Value',0.5);
find_system('Name','musica');
open_system('musica');
set_param('musica/volumen','Gain','0.5');
set_param('musica/From Wave File','FileName','sonido.wav');
function play_Callback(hObject, eventdata, handles)
%------------------------------------------------------------
set_param('musica/From Wave File','FileName','sonido.wav');
set_param(gcs,'SimulationCommand','Start');
function pausa_Callback(hObject, eventdata, handles)
%-------------------------------------------
set_param(gcs,'SimulationCommand','Pause')
function continuar_Callback(hObject, eventdata, handles)
%--------------------------------------------------
set_param(gcs,'SimulationCommand','Continue')
35
function parar_Callback(hObject, eventdata, handles)
%---------------------------------------------------------
set_param(gcs,'SimulationCommand','Stop')
function volumen_Callback(hObject, eventdata, handles)
%------------------------------------------------------------------
vol=get(hObject,'Value');
set_param('musica/volumen','Gain',num2str(vol));
Ejemplo: ActiveX
Circulo.fig (mwsamp control)
36
Circulo.m
function circulo_OpeningFcn(hObject, eventdata, handles, varargin)
%-----------------------------------
a=num2str(handles.activex1.Radius);
handles.activex1.Label=['Radio=' a];
%-------------------------------------
function activex1_Click(hObject, eventdata, handles)
% hObject handle to activex1 (see GCBO)
% eventdata structure with parameters passed to COM event listener
% handles structure with handles and user data (see GUIDATA)
%--------------------------------------
c=get(handles.slider1,'Value');
RadioInicial=(1/c)*handles.activex1.radius;
handles.activex1.Radius=RadioInicial;
handles.activex1.Label=['Radio=',num2str(handles.activex1.Radius)];
refresh(handles.figure1);
% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
%--------------------------------------------------------
c=get(hObject,'Value');
set(handles.edit1,'string',c);
RadioInicial=handles.activex1.radius;
handles.activex1.Radius=c*RadioInicial;
handles.activex1.Label=['Radio=',num2str(handles.activex1.Radius)];
refresh(handles.figure1);
37
En la figura también se ha utilizado para tener el calendario, el ActiveX Control de
calendario 12.0
Compilar GUI con ActiveX
mcc -m nombregui -a nombregui_activex1

Más contenido relacionado

La actualidad más candente

Problemas resis tencia
Problemas resis tenciaProblemas resis tencia
Problemas resis tenciaCarlosmc041193
 
Serie de fourier. Funciones periodicas, funciones pares e impares.
Serie de fourier. Funciones periodicas, funciones pares e impares.Serie de fourier. Funciones periodicas, funciones pares e impares.
Serie de fourier. Funciones periodicas, funciones pares e impares.Carlos Ramos Pérez
 
Expansión polinomial en series de taylor
Expansión polinomial en series de taylorExpansión polinomial en series de taylor
Expansión polinomial en series de taylorluis
 
Lecture 2 intro a sist radiocom p2
Lecture 2 intro a sist radiocom   p2Lecture 2 intro a sist radiocom   p2
Lecture 2 intro a sist radiocom p2nica2009
 
Osciladores Rc
Osciladores RcOsciladores Rc
Osciladores RcHéctor
 
CI19. Presentación 6.Fading and diversity (simplificada)
CI19. Presentación 6.Fading and diversity (simplificada)CI19. Presentación 6.Fading and diversity (simplificada)
CI19. Presentación 6.Fading and diversity (simplificada)Francisco Sandoval
 
Decodificador audio canal + analógico
Decodificador audio canal + analógicoDecodificador audio canal + analógico
Decodificador audio canal + analógicoMarc Tena Gil
 
Integracion numerica
Integracion numericaIntegracion numerica
Integracion numericaKevinGVG
 
Electronica transitores efecto de cambio
Electronica transitores efecto de cambioElectronica transitores efecto de cambio
Electronica transitores efecto de cambioVelmuz Buzz
 
Matlab para Ingenieros.pdf
Matlab para Ingenieros.pdfMatlab para Ingenieros.pdf
Matlab para Ingenieros.pdfssuser7fd17b
 
Longitud de una curva(Matemática II)
Longitud de una curva(Matemática II)Longitud de una curva(Matemática II)
Longitud de una curva(Matemática II)Alejandro Torres
 
Series de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios ResueltosSeries de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios ResueltosJoe Arroyo Suárez
 

La actualidad más candente (20)

Series de fourier
Series de fourierSeries de fourier
Series de fourier
 
Problemas resis tencia
Problemas resis tenciaProblemas resis tencia
Problemas resis tencia
 
Serie de fourier. Funciones periodicas, funciones pares e impares.
Serie de fourier. Funciones periodicas, funciones pares e impares.Serie de fourier. Funciones periodicas, funciones pares e impares.
Serie de fourier. Funciones periodicas, funciones pares e impares.
 
Expansión polinomial en series de taylor
Expansión polinomial en series de taylorExpansión polinomial en series de taylor
Expansión polinomial en series de taylor
 
Lecture 2 intro a sist radiocom p2
Lecture 2 intro a sist radiocom   p2Lecture 2 intro a sist radiocom   p2
Lecture 2 intro a sist radiocom p2
 
Osciladores Rc
Osciladores RcOsciladores Rc
Osciladores Rc
 
CI19. Presentación 6.Fading and diversity (simplificada)
CI19. Presentación 6.Fading and diversity (simplificada)CI19. Presentación 6.Fading and diversity (simplificada)
CI19. Presentación 6.Fading and diversity (simplificada)
 
Decodificador audio canal + analógico
Decodificador audio canal + analógicoDecodificador audio canal + analógico
Decodificador audio canal + analógico
 
Campos Electromagneticos - Tema 2
Campos Electromagneticos - Tema 2Campos Electromagneticos - Tema 2
Campos Electromagneticos - Tema 2
 
Sa fourier con matlab
Sa fourier con matlabSa fourier con matlab
Sa fourier con matlab
 
Integracion numerica
Integracion numericaIntegracion numerica
Integracion numerica
 
Antenas(ejercicios)
Antenas(ejercicios)Antenas(ejercicios)
Antenas(ejercicios)
 
Electronica transitores efecto de cambio
Electronica transitores efecto de cambioElectronica transitores efecto de cambio
Electronica transitores efecto de cambio
 
Matlab para Ingenieros.pdf
Matlab para Ingenieros.pdfMatlab para Ingenieros.pdf
Matlab para Ingenieros.pdf
 
Longitud de una curva(Matemática II)
Longitud de una curva(Matemática II)Longitud de una curva(Matemática II)
Longitud de una curva(Matemática II)
 
Mezcladores
MezcladoresMezcladores
Mezcladores
 
Series de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios ResueltosSeries de fourier 22 Ejercicios Resueltos
Series de fourier 22 Ejercicios Resueltos
 
6 lineas de transmision
6 lineas de transmision6 lineas de transmision
6 lineas de transmision
 
Detector sincrono
Detector sincronoDetector sincrono
Detector sincrono
 
Campos Electromagneticos - Tema 5
Campos Electromagneticos - Tema 5Campos Electromagneticos - Tema 5
Campos Electromagneticos - Tema 5
 

Similar a matlab

Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoSANTIAGO PABLO ALBERTO
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlabjamarzo
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacionluis_xD
 
Cursos de MATLAB
Cursos de MATLABCursos de MATLAB
Cursos de MATLABdwquezada
 
Curso de introduccion_al_matlab
Curso de introduccion_al_matlabCurso de introduccion_al_matlab
Curso de introduccion_al_matlabCORPOELEC
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlabSam Chimborazo
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlabSam Chimborazo
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dSebastian Cuenca
 
Referencias MATLAB
Referencias MATLABReferencias MATLAB
Referencias MATLABOmar Sanchez
 
Matlab
MatlabMatlab
MatlabDRIKSH
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabJuan Ete
 

Similar a matlab (20)

Electrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicadoElectrónica: Tutorial de Matlab aplicado
Electrónica: Tutorial de Matlab aplicado
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
Matlab
MatlabMatlab
Matlab
 
Matlab
MatlabMatlab
Matlab
 
Cursos de MATLAB
Cursos de MATLABCursos de MATLAB
Cursos de MATLAB
 
Curso de introduccion_al_matlab
Curso de introduccion_al_matlabCurso de introduccion_al_matlab
Curso de introduccion_al_matlab
 
Seminario de matlab
Seminario de matlabSeminario de matlab
Seminario de matlab
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
 
Deber graficas en matlab
Deber graficas en matlabDeber graficas en matlab
Deber graficas en matlab
 
Funciones
FuncionesFunciones
Funciones
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3d
 
Mat lab03
Mat lab03Mat lab03
Mat lab03
 
Clase 6
Clase 6Clase 6
Clase 6
 
Clase 6
Clase 6Clase 6
Clase 6
 
Referencias MATLAB
Referencias MATLABReferencias MATLAB
Referencias MATLAB
 
Matlab
MatlabMatlab
Matlab
 
Tema 3
Tema 3Tema 3
Tema 3
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlab
 
Matlab
MatlabMatlab
Matlab
 

Último

Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionOsdelTacusiPancorbo
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023ANDECE
 
Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)mendezruben1901
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaANDECE
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptxNayeliZarzosa1
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxluisvalero46
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfAdelaHerrera9
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...esandoval7
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidasNelsonQuispeQuispitu
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxPaolaVillalba13
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosfranchescamassielmor
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdfRicardoRomeroUrbano
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEANDECE
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónAlexisHernandez885688
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 

Último (20)

MATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdfMATPEL COMPLETO DESDE NIVEL I AL III.pdf
MATPEL COMPLETO DESDE NIVEL I AL III.pdf
 
Peligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacionPeligros de Excavaciones y Zanjas presentacion
Peligros de Excavaciones y Zanjas presentacion
 
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
Centro Integral del Transporte de Metro de Madrid (CIT). Premio COAM 2023
 
Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)Sistema de Base de Datos (Rubén Alberto)
Sistema de Base de Datos (Rubén Alberto)
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
Conservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de AlmeríaConservatorio de danza Kina Jiménez de Almería
Conservatorio de danza Kina Jiménez de Almería
 
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
5.1 MATERIAL COMPLEMENTARIO Sesión 02.pptx
 
Biología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptxBiología molecular ADN recombinante.pptx
Biología molecular ADN recombinante.pptx
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdfLEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
LEYES DE EXPONENTES SEMANA 1 CESAR VALLEJO.pdf
 
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...Simbología de Soldadura,  interpretacion y aplicacion en dibujo tecnico indus...
Simbología de Soldadura, interpretacion y aplicacion en dibujo tecnico indus...
 
Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdf
 
trabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidastrabajos en altura 2024, sistemas de contencion anticaidas
trabajos en altura 2024, sistemas de contencion anticaidas
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
Clase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptxClase 1 Análisis Estructura. Para Arquitectura pptx
Clase 1 Análisis Estructura. Para Arquitectura pptx
 
Sistema de gestión de turnos para negocios
Sistema de gestión de turnos para negociosSistema de gestión de turnos para negocios
Sistema de gestión de turnos para negocios
 
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf3.3 Tipos de conexiones en los transformadores trifasicos.pdf
3.3 Tipos de conexiones en los transformadores trifasicos.pdf
 
Fijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSEFijaciones de balcones prefabricados de hormigón - RECENSE
Fijaciones de balcones prefabricados de hormigón - RECENSE
 
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinaciónEstacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
Estacionamientos, Existen 3 tipos, y tienen diferentes ángulos de inclinación
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 

matlab

  • 1. TUTORIAL DE MATLAB APLICADO Por: Jorge Antonio Polanía Puentes INTRODUCCIÓN La integración de las Tecnologías de Información y comunicación (TIC) en las asignaturas de un currículo puede realizarse de varias formas. Una de ellas es el uso de las simulaciones. Estas se han convertido en una excelente herramienta para mejorar la compresión y el aprendizaje en áreas como las matemáticas, física, estadística, finanzas, etc. La simulación permite probar, analizar y descubrir cómo funciona o cómo se comporta un fenómeno. Matlab es un programa interactivo de cálculo numérico y de visualización de datos basado en software de matrices, en un entorno de desarrollo totalmente integrado y orientado a proyectos que requieren un elevado cálculo numérico y visualización gráfica. En las universidades Matlab se ha convertido en una herramienta básica tanto para estudiantes, como para docentes e investigadores por su amplio abanico de programas especializados llamados Toolboxes que cubren casi todas las áreas del conocimiento. Dispone de un programa SIMULINK que es un entorno gráfico interactivo con el que se puede analizar, modelar y simular sistemas. 1. VARIABLES Y FUNCIONES 1.1 OPERADORES Una variable se crea por asignación. Los operadores básicos son: x +y Suma x – y Diferencia x * y Producto x / y División x ^y Potencia Ejemplos: En la ventana de comandos de Matlab, ejecutar: >> v = 3 >> x = v + 6 >> y = v ^5 / 4 >> x = 2*3^5 + (5-3)* 8 1
  • 2. 1.2 VECTORES Un vector fila de n elementos se puede representar de dos formas: V = [v1,v2,v3,…..vn] % con coma entre ellos, o V = [v1 v2 v3 …..vn] % con espacios entre ellos Ejemplo: Vector = [1 1.2 3.4 4/5 2.25] Un vector se puede representar sin necesidad de explicitar todos los elementos, así: EXPRESIÓN MATLAB SIGNIFICADO Vector = [a : b] a y b son el primero y último elemento. Los elementos intermedios se diferencian en una unidad Vector = [a : s : b] a y b son el primero y último elemento. Los elementos intermedios se diferencian en la cantidad s Vector = linespace[a,b,n] a y b son el primero y último elemento. Hay n elementos uniformemente espaciados entre sí Vector = logspace[a,b,n] a y b son el primero y último elemento. Hay n elementos logarítmicamente espaciados entre sí Ejemplos: >>Vector1 = [5:5:30] % elementos de 5 a 30 en pasos de 5 Vector1 = 5 10 15 20 25 30 >>Vector2 = [5:10] Vector2 = 5 6 7 8 9 10 % elementos de 5 a 10 en pasos de 1 (por defecto) Un vector columna se representa con sus elementos separados por punto y coma. Ejemplo: >>Vector = [2; 3; 2.5; 4.5; 8] Vector = 2 3 2.5 4.5 8 2
  • 3. 1.3 MATRICES Las matrices se representan en Matlab introduciendo entre corchetes los vectores fila separados por punto y coma. Ejemplo: >>A = [1 3 5; 4 7 9; 4 2 10] A = 1 3 5 4 7 9 4 2 10 Algunas definiciones de variables matriciales: A(m,n) Define el elemento (m,n) de la matriz A B = A’ Define la transpuesta de A A(a:b,c:d) Define una submatriz formada por las filas que hay entre la a-ésima y la b- ésima y por las columnas que hay entre la c-ésima y la d-ésima A(:,c:d) Submatriz formada por las filas de A y las columnas que hay entre la c-ésima y d-ésima A(a:b,:) Submatriz formada por las columnas de A y las filas que hay entre la a- ésima y b-ésima size(A) Devuelve el tamño u orden de la matriz A Ejemplos: >> A(2,3) ans = 9 >> B = A' B = 1 4 4 3 7 2 5 9 10 >> eye(3) 3
  • 4. ans = 1 0 0 0 1 0 0 0 1 >> C=B(:,2:3) C = 4 4 7 2 9 10 >> D = B(1:2,:) D = 1 4 4 3 7 2 >> size(D) ans = 2 3 1.4 FUNCIONES FUNCIONES TRIGONOMÉTRICAS Directas Inversas sin(x) asin(x) cos(x) acos(x) tan(x) atan(x) csc(x) acsc(x) sec(x) asec(x) cot(x) acot(x) FUNCIONES HIPERBÓLICAS sinh(x) asinh(x) cosh(x) acosh(x) tanh(x) atanh(x) csch(x) acsch(x) sech(x) asech(x) coth(x) acoth(x) FUNCIONES EXPONENCIALES Y LOGARÍTMICAS exp(x) Función exponencial base e log10(x) Logaritmo decimal 4
  • 5. log(x) Logaritmo natural sqrt(x) Raíz cuadrada abs(x) Valor absoluto NÚMEROS COMPLEJOS abs(z) Módulo del complejo z angle(z) Argumento del complejo z conj(z) Conjugado del complejo z real(z) Parte real del complejo z imag(z) Parte imaginaria del complejo z factorial(n) n! = n(n-1)(n-2)(n-3)…..3.2.1 Ejemplos: Calcular las siguientes expresiones en Matlab a) 522 −+ = xx ey para x = 2.5 >> y = exp(sqrt(x^2+2*x-5)) b) y = 2sen(5x) + 3cos(2x) para x = 30º >> x = 30*pi/180 >> y = 2*sin(5*x) + 3*cos(2*x) c) y = 3 5log +x + ln(x2 ) >> y = log10(x + 5)^(1/3) + log(x^2) d) Para el número complejo z = 4.5 + j 5.6 hallar el módulo y argumento >> z = 4.5 + 5.6i >> mag = abs(z) % módulo >> ang = angle(z) % argumento >> ang = ang*180/pi % argumento en grados >> Parte_Imag=imag(z) >> Parte_Real=real(z) >> Conjugado=conj(z) 5
  • 6. 2. POLINOMIOS Los comandos usados por Matlab para trabajar con polinomios son: p = poly(r) Da los coeficientes del polinomio P cuyas raíces son el vector r y = polyval(p,x) Evalúa el polinomio p en el valor de x r = roots(c) Encuentra las raíces del polinomio c p = polyfit(x,y,n) Polinomio de orden n que ajusta los puntos (x,y) s = solve(‘ecuacion1’,’ecuacion2’) Resuelve las ecuaciones d = det(A) Calcula determinante de A Ejemplos: a) >> p=poly([ 2 3 4]) p = 1 -9 26 -24 % El polinomio es x3 – 9x2 +26x – 24 b) Para x = 2.5 calcular y = x4 – 3x2 + 5x -2.8 >> x = 2.5; >> p = [1 0 -3 5 -2.8]; >> y = polyval(p,x) y = 4.0750 c) Encontrar las raíces de: x5 – 3x3 + x2 -5x + 2 >> c = [1 0 -3 1 -5 2]; >> r = roots(c) r = -2.1716 1.8905 -0.0575 + 1.1076i -0.0575 - 1.1076i 0.3960 6
  • 7. d) Calcular el polinomio interpolador de segundo orden que pasa por los puntos (- 1,4), (0,2) y (1,6) >> x = [-1,0,1]; y = [4,2,6]; >> p = polyfit(x,y,2) p = 3.0000 1.0000 2.0000 El polinomio interpolador que más se ajusta es 3x2 + x + 2 e) Calcular x−1 + x+1 = 4 >> s = solve('sqrt(1-x)+sqrt(1+x)=4') s = 4*i*3^(1/2) -4*i*3^(1/2) >> eval(s) s(1)=6.9281i s(2)=-6.9281 f) Resolver el sistema de ecuaciones: 2x + 3y =5 x – 2y = -2 >> [x,y] = solve('2*x + 3*y = 5','x - 2*y = -2') % x = 4/7, y = 9/7 ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ − − − 631 523 142 g) Calcular el determinante de la matriz: >> A = [2 4 -1;3 -2 5;-1 3 6]; >> d = det(A) % d = -153 7
  • 8. 3. REPRESENTACIÓN GRÁFICA Matlab ofrece diversas formas de representación gráfica. COMANDO MATLAB DESCRIPCIÓN bar(y) Gráfica de barras relativo al vector y bar(x,y) Gráfica de barras al vector y; x define el eje x barh(….) Gráfica de barras horizontales bar(….;’color’) Color = r, g, y, c, m, k bar(y,’estilo’) Estilo=grouped (agrupado), stacked (anidado) bar3(y,…) Barras en tres dimensiones plot(x,y) Grafica y en función de x plot(x,y,’bo’) Grafica y en función de x on color y caracter fplot(‘f’,[x1 x2],’y*’) Grafica función f entre x1 y x2 fplot(‘[f1,f2,..]’,[x1 x2]) Grafica las funciones en el intervalo dado tittle(‘texto’) Título de la gráfica xlabel(‘texto’), ylabel(‘texto’) Rótulos en el eje x y en el eje y grid Pone rejilla en la gráfica axis([x1 x2 y1 y2]) Define límite de los ejes legend(‘rotulo1’,’rotulo2’,….) Coloca legenda en la gráfica text(x,y,’texto’) Coloca texto en coordenadas (x,y) subplot(m,n,p) Subgráficas de m filas, n columnas Ejemplos: a) >> y=[1 2 3 8 2 1 4 6]; >> bar(y) b) gráfico de barras para la función y = cuando x varía de -3 a 3 xx e *− >> x = -3:0.2:3; >> y = exp(-x.*x); >> bar(x,y) 8
  • 9. c) barh(x,y) d) Ejecutar >> bar(x,y,’g’) e) y = 10 8 6 2 5 8 6 0 9 5 8 7 9 4 2 Ejecutar >> bar(y,'grouped') >> bar(y,'stacked') >> bar3(y,'stacked') f) Ejecutar >> x = 0:0.2:20; 9
  • 10. >> y = sin(x).*exp(-0.2*x); >> plot(x,y) >> plot(x,y,’r*’) g) Ejecutar >> fplot('[sin(x), sin(2*x), sin(3*x)]',[0,2*pi]) >> legend('sen(x)','sen(2x)','sen(3x)') h) Ejecutar en la ventana de edición el programa: x=linspace(0,2,30); y=sin(x.^2); plot(x,y) text(1,0.8,'y=sin(x^2)'); hold on z=log(sqrt(x)); plot(x,z) text(1,-0.1,'y=log(sqrt(x))') 10
  • 11. xlabel('Eje x') ylabel('Eje y') title('Gráfico senoidal y logarítmico') Copie y pegue en la ventana de comando y ejecute, se obtendrá la gráfica: Ejemplos: a) Graficar en dos subgráficas una fila y dos columnas: x = [0:0.1:2*pi]; y = sin(x); z = cos(x); subplot(121); plot(x,y) title(‘sen(x)’) subplot(122); plot(x,z) title(‘cos(x)’) 11
  • 12. b) Graficar en dos subgráficas dos fila y una columna: x = [0:0.1:2*pi]; y = sin(x); z = cos(x); subplot(211); plot(x,y) title(‘sen(x)’) hold on subplot(212); plot(x,z) title(‘cos(x)’) c) Graficar en cuatro subgráficas dos filas y dos columnas: subplot (221); fplot(‘sin(x)’,[-2*pi 2*pi]); subplot (222); fplot(‘cos(x)’,[-2*pi 2*pi]); subplot (223); fplot(‘csc(x)’,[-2*pi 2*pi -10 10]); subplot (224); fplot(‘sec(x)’,[-2*pi 2*pi -10 10]); 12
  • 13. d) Graficar en diferentes escalas x = 0:0.01:3; y = abs(exp(-0.5*x).*sin(5*x)); subplot(221); plot(x,y) title(‘normal’) hold on subplot(222) loglog(x,y) title(‘logaritmica’) subplot(223) semilogx(x,y) title(‘semilogaritmico en eje x’) subplot(224) semilogy(x,y) title(‘semilogaritmico en eje y’) 13
  • 14. 14
  • 15. 4. CÁLCULO NUMÉRICO 4.1 Límites OPERACIÓN MATEMÁTICA COMANDO MATLAB 0x (x)fLim → limit(f,x,0) ax (x)fLim → limit (f, x, a) o limit (f, a) - ax (x)fLim → limit (f,x,a, ‘left’) + → ax (x)fLim limit (f,x,a, ‘right’) Ejemplos: a) Hallar f ´(x) = h xfhxf h )()( 0 lim −+ → si f(x) = cos(x) syms h n x limit ( )0,,/))cos()(cos( hhxhx −+ ans = -sin(x) b) Hallar el límite de la sucesión: 4 37 23lim ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ +− +− ∞→ n n n >> limit (((2*n-3)/(3*n-7))^4, inf) ans = 16/81 c) Hallar x x x − → 0 lim >> limit ( )`,`0,),(/ leftxxabsx ans = -1 15
  • 16. d) Hallar x x x + → 0 lim >> limit ( )`,`0,),(/ rightxxabsx ans = 1 e) >> limit ( )0,),(/ xxabsx ans = NaN (not number) (no existe) Ejemplos: Hallar el límite de las funciones: a) x xx x 413 2 2 lim ++− +− → , b) 2 2 )][( 0 lim x axsen x → >> syms x a >> limit((x-(2+x)^(1/2))/(-3+(1+4*x)^(1/2)),2) ans = 9/8 >> limit(sin(a*x)^2/x^2,x,0) ans = a^2 4.2 Derivadas OPERACIÓN MATEMÁTICA COMANDO MATLAB x f ∂ ∂ diff(x) o diff(f,x) t f ∂ ∂ diff(f,t) n n b f ∂ ∂ diff(f,b,n) 16
  • 17. Ejemplos: a) Hallar la derivada con respecto a x de f(x) = sen(5x) >> syms x >> f = sin( )x∗5 >> diff (f) ans = 5 cos∗ ( )x∗5 b) )cos()( xexg x = >> g = exp(x) cos(x)∗ >> diff (g) ans = exp(x)*cos(x)-exp(x)*sin(x) En estos ejemplos, Matlab simplifica, en otros casos, se debe usar el comando: simplify Para una constante también se debe definir como simbólica: Ejemplo: diff (5) ans = [ ] c = sym(‘5’) diff(c) ans = 0 Ejemplos: a) Hallar la derivada de la función f(t) = sen(st): t f ∂ ∂ >> syms s t >> f = sin(s*t) >> diff(f,t) ans = cos(s*t)*s b) Hallar la derivada con respecto a s: s f ∂ ∂ >> diff(f,s) ans = cos(s*t)*t 17
  • 18. c) Hallar la segunda derivada de f con respecto a t: 2 2 t f ∂ ∂ >> diff(f,t,2) ans = -sin(s*t)*s^2 d) Hallar la derivada con respecto a x de: n xf = >> f = x ^ n >> F = diff(f) F = x ^ n * n / x >> simplifity (F) = x ^ (n-1) n∗ e) f(x) = log(sen(2x)) >> syms x >> diff(log(sin(2*x))) ans = 2*cos(2*x)/sin(2*x) Ejemplos: f(x,y) = sen(xy)+cos(xy2 ) Calcular: a) x f ∂ ∂ >> syms x y >> f = sin(x*y)+cos(x*y^2) >> diff(f,x) ans = cos(x*y)*y-sin(x*y^2)*y^2 b) y f ∂ ∂ >> diff(f,y) ans = cos(x*y)*x-2*sin(x*y^2)*x*y c) 2 2 x f ∂ ∂ >> diff(diff(f,x),x) ans = -sin(x*y)*y^2-cos(x*y^2)*y^4 18
  • 19. d) 2 2 y f ∂ ∂ >> diff(diff(f,y),y) Ans = -sin(x*y)*x^2-4*cos(x*y^2)*x^2*y^2-2*sin(x*y^2)*x e) yx f ∂∂ ∂2 >> diff(diff(f,x),y) Ans = -sin(x*y)*x*y+cos(x*y)-2*cos(x*y^2)*x*y^3-2*sin(x*y^2)*y 4.3 INTEGRALES OPERACIÓN MATEMÁTICA COMANDO MATLAB ∫ dxf int (f) integral indefinida o int (f,x) ∫ b a dxxf )( int (f,x,a,b) integral definida o int (f,a,b) ∫∫ dxxf )( Int(int(f,x)) Integral doble ∫∫ dxdyyxf ),( Int(int(f(x,y),x),y) ∫∫ d c b a dxdyyxf ),( Int(int(f(x,y),x,a,b),y,c,d)) Ejemplos: a) Hallar la integral de ∫ dxxn >> int (x^n) ans = x^(n+1)/(n+1) b) >> int(y ^(-1)) ans = log(y) c) >> int(1/(a+u^2)) ans = 1/a^(1/2)*atan(u/a^(1/2)) d) >> f = sin(a*teta+b) >> int(f) ans = -1/a cos(a∗teta + b)∗ 19
  • 20. e) ∫ ∞ ⇒− 0 )2^exp( dxx >> int (exp(-x^2), x , 0, inf) ans =1/2∗pi^(1/2) f) dxe ax ∫ ∞ ∞− − 2 >> syms a positive >> syms x >> f = exp (-a );2^x∗ >> int (f,x,-inf,inf) ans = 1/a^(1/2)∗ pi ^ (1/2) Ejemplos: a) ∫ dxbxa )ln( >> syms a b x >> int(a*log(b*x),x) Ans = a*x*log(b*x)-a*x b) ∫∫ dxdyxya )ln( >> int(int(a*log(x*y),x),y) ans = a*y*x*log(x*y)-2*a*x*y c) ∫ 1 0 )ln( dxxya >> int(a*log(x*y),x,0,1) Ans = a*log(y)-a d) dydxxya∫∫ 3 2 1 0 )ln( >> int(int(a*log(x*y),x,2,3),y,0,1) Ans = -2*a*log(2)+3*a*log(3)-2*a 20
  • 21. 1 5. DINÁMICA DE SISTEMAS 5.1. SISTEMAS Un sistema es una combinación de componentes que actúan conjuntamente para alcanzar un objetivo específico. Un sistema es dinámico cuando la salida presente depende de las entradas pasadas y es estático cuando la salida presente depende solamente de las entradas presentes. Los componentes básicos de un sistema son: a) Elementos que son las partes del sistema b) Estructura. Se refiere a las interrelaciones y procesos entre las partes del sistema. c) Ambiente. Relaciona el sistema con el todo. Es su entorno d) Entradas. Son las fuentes de energía, recursos e información que necesita el sistema para su funcionamiento y que importa del ambiente e) Salidas. Son los productos o resultados que se construye a través de la estructura y los procesos internos. Los sistemas pueden clasificarse de las siguientes maneras: a) Sistemas de lazo abierto y b) Sistemas en lazo cerrado, que son los que realimentan parte de su salida a la entrada. Ejemplo de un sistema hidráulico en lazo abierto y cerrado son los siguientes:
  • 22. 2 5.2 MODELO MATEMÁTICO Es la descripción matemática que predice el funcionamiento del sistema. En los sistemas físicos el modelo matemático se describe por ecuaciones diferenciales. Los sistemas lineales se modelan con ecuaciones diferenciales lineales y son aquellos que se les aplica el principio de superposición, esto es, la respuesta de un sistema a varias entradas simultáneas es la suma de las respuestas individuales. Para elaborar un modelo: a) Se debe dibujar un diagrama esquemático del sistema y definir las variables. b) Escribir las ecuaciones utilizando las leyes físicas de cada componente, combinándolos de acuerdo al diagrama y obtener el modelo matemático c) Verificar la validez del modelo comparando la predicción de las ecuaciones del modelo con los resultados experimentales. El modelo se debe ajustar hasta que haya una buena concordancia entre lo teórico y lo práctico. En general, la construcción de modelos se basa en la observación del sistema. Existen algunos caminos básicos para obtener un modelo: Modelamiento de Sistemas: Esta estrategia consiste en descomponer (abstractamente) el sistema en subsistemas más simples, cuyos modelos sean factibles de obtener gracias a la experiencia previa. Una vez obtenidos estos submodelos, se buscan las relaciones que existen entre ellos, para interconectarlos y obtener el modelo del sistema original. Esta estrategia busca una descripción desde adentro del sistema, generalmente basada en el conocimiento de las leyes que rigen los sistemas
  • 23. 3 simples. El modelo así obtenido se conoce como Modelo de Caja Blanca, o Modelo Interno Identificación de Sistemas: Esta estrategia consiste en acumular un número suficiente de observaciones sobre las señales de entrada y salida del sistema, con el propósito de emplearlas para construir un modelo del mismo. No se centra en lo que existe al interior del sistema, sino en su comportamiento respecto al entorno. El modelo así obtenido se conoce como Modelo de Caja Negra, o Modelo Entrada – Salida Estrategia híbrida: Existe una tercera estrategia, que realmente es una combinación de las anteriores: Al igual que en la estrategia de modelamiento, se emplea el conocimiento que esté a la mano acerca de la estructura interna del sistema y las leyes que rigen su comportamiento, y se emplean observaciones para determinar la información que haga falta. El modelo así obtenido se conoce como Modelo de Caja Gris Para un sistema continuo de una única entrada y una única salida, el modelo empleado corresponde a una ecuación diferencial ordinaria de coeficientes constantes: )(...)(... 0101 tub dt du b dt ud btxa dt dx a dt xd a m m mn n n +++=+++ Por su parte, un sistema discreto de una única entrada y una única salida, tendrá por modelo una ecuación de diferencias finitas ordinaria de coeficientes constantes: )()1(...)()()1(...)( 0101 kubkubnkubkxakxankxa mn +++++=+++++ Otro tipo de ecuaciones diferenciales que se emplearán relacionan vectores de variables mediante matrices. )( )( )( 3 2 1 333231 232221 131211 3 2 1                     =               • • • tx tx tx aaa aaa aaa x x x )( )( )( )1( )1( )1( 3 2 1 333231 232221 131211 3 2 1                     =               + + + kx kx kx aaa aaa aaa kx kx kx SISTEMAu(t) x(t) SISTEMA CONTINUO SISTEMAu(k) x(k) SISTEMA DISCRETO
  • 24. 4 5.3 SISTEMA MECÁNICO Es el sistema de amortiguación de un automóvil, donde: B es el coeficiente de amortiguación que depende de la velocidad (v) K es la constante del resorte que depende de la elongación (x) x0 = Posición inicial xi = Posición final Leyes de Modelo: d mmaF,F, 2 2 B dt x dt dx BKxFK ==== Ecuación dinámica: 0)x-K(x) dt dx - dt dx B( d m i0 io 2 2 =++ dt x Ecuación diferencial: Kx dt dx BKx dt dx B d m i i 0 o 2 0 2 +=++ dt x 5.4 SISTEMA ELÉCTRICO Las variables del sistema son: ei = Voltaje de entrada
  • 25. 5 eo = Voltaje de salida R = Resistencia L = Inductancia C = Capacitancia Ecuación dinámica (Ecuación diferencial): eidt C 1 (2),eidt C 1 Ri dt di L(1) oi ∫∫ ==++ 5.5 SISTEMA HIDRÁULICO Variables del sistema: Q = Caudal estable qi = Variación del caudal de entrada qo = Variación del caudal de salida H = Altura estable h = Variación de la altura C = Capacitancia del tanque R = Resistencia hidráulica Ecuaciones dinámicas (Ecuación diferencial): R h q, dt dh RC(2), dt dh C(1) o ==+−= ioi Rqhqq
  • 26. 6 5.6 SISTEMA TÉRMICO Variables del sistema: H = Entrada de calor en estado estable h = Cambio de calor θ = Temperatura Ecuación dinámica (Ecuación diferencial): R h, dt d RC(2), dt d C(1) o θ θ θθ ==+−= ioi Rhhh
  • 27. 7 6. TRANSFORMADA DE LAPLACE Es un método operativo que resuelve ecuaciones diferenciales convirtiéndolas en ecuaciones algebraicas. Permite predecir el comportamiento de un sistema sin necesidad de resolver las ecuaciones diferenciales del sistema. Sea f(t) un función en el tiempo, La Transformada de Laplace de f(t) es: L [f(t)]= ∫ ∞ − 0 )( dtetf st 6.1 FUNCIÓN ESCALÓN f(t) = A, para t > 0 y f(t) = 0, para t < 0 L [f(t)] = )( 00 sF s A s Ae dtAe st st == − = ∞− ∞ − ∫ 6.2 FUNCIÓN RAMPA f(t) = At, para t > 0 y f(t) = 0, para t < 0 L [f(t)] = )(2 0 0 sF s A e s A dtAte stst === ∫∫ ∞ − ∞ − 6.3 FUNCIÓN EXPONENCIAL f(t) = Ae-at , para t > 0 y f(t) = 0, para t < 0 L [f(t)] = )( 0 )( 0 sF as A eAdteAe tsastat = + == ∫∫ ∞ +− ∞ −− 6.4 FUNCIÓN SENOIDAL f(t) = Asen(wt), para t > 0 y f(t) = 0, para t < 0 L [f(t)] = )()()( 22 0 0 sF ws Aw ewtsenAdtewtAsen stst = + == ∫∫ ∞ − ∞ −
  • 28. 8 6.5 DERIVACIÓN L )0()()( fssFtf dt d −=    L )0()0()()( '2 2 2 fsfsFstf dt d −−=      Donde f(0) = f(t) cuando t = 0, y 0t)()0(' == cuandotf dt d f 6.6 INTEGRACIÓN L s sF dttf t )( )( 0 =     ∫ 6.7 COMANDO MATLAB Para calcular la Transformada de Laplace de una función se usa el comando >> laplace(f(t)) Ejemplos: Calcular la transformada de Laplace de: a) f(t) = cos(wt)+sen(wt) >> syms w t >> laplace(cos(w*t)+sin(w*t)) ans = s/(s^2+w^2)+w/(s^2+w^2) b) f(t) = 3t + 2t2 >> laplace((3*t)+2*t^2) ans = 3/s^2+4/s^3 c) f(t) = 3e-2t -2e5t >> laplace(3*exp(-2*t)- 2*exp(5*t))
  • 29. 9 ans = 3/(s+2)-2/(s-5) 6.8 LAPLACE INVERSA Dada la Transformada de Laplace F(s), la Transformada Inversa de Laplace es f(t). La forma más general de encontrar la transformada inversa es descomponer la función F(s) en fracciones parciales y luego aplicar su inversa a cada término. K ps r ps r sP sQ sF ++ − + − == ..... 2 2 1 1 )( )( )( Se utiliza el comando Matlab residue: [r,p,k] = residue(num,den) Donde num es un vector compuesto por los coeficientes del polinomio del denominador y den es un vector compuesto por los coeficientes del polinomio del numerador. Ejemplo: 22 2 )( 2 ++ + = ss s sF >> num = [1 2] ; >> den = [1 2 2]; >> [r,p,k]=residue(num,den) r = 0.5000 - 0.5000i 0.5000 + 0.5000i p = -1.0000 + 1.0000i -1.0000 - 1.0000i k = [ ]
  • 30. 10 Las fracciones parciales son: is i is i sF ++ + + −+ − = 1 5.05.0 1 5.05.0 )( Si el denominador es de la forma P(s)n , entonces: K pns rn ps r ps r sP sQ sF nnn + − ++ − + − == − )( ..... )2( 2 )1( 1 )( )( )( 1 Ejemplo: 22 )1( 2 12 2 )( + + = ++ + = s s ss s sF >> num = [1 2] ; >> den = [1 2 1]; >> [r,p,k]=residue(num,den) % r = [1 1 ], p = [-1 -1], k = [ ] )1( 1 )1( 1 )( 2 + + + = ss sF 6.9 SOLUCIÓN DE ECUACIONES DIFERENCIALES Para resolver o solucionar una ecuación diferencial: a) Se aplica transformada de Laplace a la ecuación b) Se despeja F(s) c) Se halla la transformada inversa Ejemplo: Resolver la ecuación diferencial: 2)(y-1,y(0)inicialesscondicione,5)(23 ' 2 2 ===++ oty dt dy dt yd a) Aplicamos transformada de Laplace: ,/5)(2)(3)(3)0()0()( '2 ssYoyssYysysYs =+−+−− Reemplazando los valores de y(0) y y’ (0), se tiene:
  • 31. 11 b) Despejando Y(s), )2)(1( 5 )23( 5 )( 2 2 2 ++ +−− = ++ +−− = sss ss sss ss sY c) Aplicando fracciones parciales para hallar la inversa, >> num = [-1 -1 5] ; >> den = [1 3 2 0]; >> [r,p,k]=residue(num,den) r = [1.5 -5 2.5], p = [-2 -1 0], k = [ ] sss sY 5.2 1 5 2 5.1 )( + + − + = La transformada inversa es: 5.255.1)( 2 +−= −− tt eety
  • 32. 12 7. FUNCIÓN DE TRANSFERENCIA La función de transferencia de un sistema descrito mediante una ecuación diferencial, se define como el cociente de la Transformada de Laplace de la salida y la Transformada de Laplace de la entrada. El método para encontrar la función de transferencia de un sistema es el siguiente: a) Escribir la ecuación diferencial del sistema b) Aplicar la Transformada de Laplace de la ecuación diferencial con condiciones iniciales cero c) Sacar el cociente entre la variable de salida y la entrada n n m m sasaa sbsbb sX sY sG ... ... )( )( )( 10 10 ++ +++ == En Matlab: >> num = [bo b1 b2 .... bm]; >> den = [ao a1 a2 .... an]; >> Gs = tf(num,den) Ejemplo: Para el torque que produce un motor eléctrico (parte mecánica): T= torque (variable de entrada) θ = ángulo de giro (variable de salida) J = Inercia Ecuación diferencial: 2 2 )( dt d JtT θ = Transformada de Laplace: T(s) = Js2 θ(s) Función de transferencia: 2 1 )( )( )( JssT s sG == θ G(s)X(s) Y(s) sistema
  • 33. 13 7.1 DIAGRAMA EN BLOQUES La estructura de un sistema se representa por un diagrama en bloques según el siguiente procedimiento: a) Definir la entrada y la salida b) Escribir las ecuaciones que describa el comportamiento de cada elemento del sistema c) Aplicar transformada de Laplace a cada elemento d) Integrar los elementos en un diagrama completo (estructura) Ejemplo: Circuito serie RC a) Entrada: ei, salida: eo b) Para la resistencia R ee iRie oi R − == , para el condensador ∫= idt C eo 1 c)Transformada de Laplace )( 1 )( , )()( )( sI sC sE R sEsE sI o oi = − = d) Estructura ei eoC R i 1/R 1/sC Ei(s) Eo(s) I(s) + - Ei(s) – Eo(s)
  • 34. 14 7.2 TIPOS DE ESTRUCTURAS Los diagramas de bloques mediante los cuales se estructura un sistema son complejos y son generalmente combinaciones de los siguientes tipos de estructuras: 7.2.1 ESTRUCTURA SERIE Matlab G1 = tf (num1,den1); G2 = tf (num2,den2); G3 = tf (num3,den3); Gs = G1*G2*G3 también puede ser: Gs = series(G1,G2,G3) 7.2.2 ESTRUCTURA PARALELA G1(s) G2(s) G3(s) X(s) Y(s) G(s) G(s) = G1(s)*G2(s)*G3(s) G1(s) G1(s) G1(s) + + + X(s) Y(s) G(s) = G1(s)+G2(s)+G3(s)
  • 35. 15 Matlab G1 = tf (num1,den1); G2 = tf (num2,den2); G3 = tf (num3,den3); Gs = G1+G2+G3 también puede ser : Gs = parallel(G1,G2,G3) 7.2.3 ESTRUCTURA REALIMENTADA a) Función de transferencia en lazo abierto: Gla )(*)( )( )( sHsG sE sB Gla == b) Función de transferencia en lazo cerrado: Glc H(s)*C(s)-R(s)B(s)-R(s)E(s),, )( )(*)( )( )( ==== donde sR sEsG sR sC Glc Reemplazando, H(s)C(s)*G(s)-R(s)*G(s))]()()([*)()( =−= sHsCsRsGsC , )()(1 )( )( )( sHsG sG sR sC Glc + == Caso especial: 1H(s), )(1 )( )( )( ),( = + === sG sG sR sC GlcsGGla B(s) G(s) H(s) R(s) C(s) E(s) + - Realimentación B(s) G(s) R(s) C(s) E(s) + - Realimentación
  • 36. 16 Matlab: >> Gla = Gs*Hs >> Glc = feedback(Gs,Hs) Ejemplo: Obtener la función de transferencia del sistema por Matlab: )( )( )( sR sC sG = % Este es un programa realizado en Matlab % para obtener la función de transferencia del sistema G1=tf(1,[1 4]) H1=tf(1,[1 0]) % Realimentación de G1 y H1 Glc1=feedback(G1,H1) Respuesta: 14 1 2 ++ = ss s Glc % Estructura serie G2=tf(1,[1 2]) G4=Glc1*G2 Respuesta: 296 4 23 +++ = sss s G % Segunda realimentación H2=1/2 Glc2=feedback(G4,H2) Respuesta: 25.96 2 23 +++ = sss s Glc
  • 37. 17 % Segunda estructura serie G3=tf(1,[1 0]) G5=Glc2*G3 Respuesta: ssss s G 25.96 5 234 +++ = % Tercera realimentación Glc=feedback(G5,1) Respuesta: ssss s Glc 35.96 234 +++ = 7.3 ESTABILIDAD 7.3.1 ECUACIÓN CARACTERÍSTICA La ecuación característica de un sistema es el denominador de la función de transferencia del sistema igualado a cero. Para el ejemplo anterior, la ecuación característica es igual a: 035.96 234 =+++ ssss 7.3.2 POLOS Y CEROS DE UN SISTEMA Los polos de un sistema son las raíces de la ecuación característica del sistema, esto es, las raíces del denominador de la función de transferencia del sistema. Los ceros de un sistema son las raíces del numerador de la función de transferencia del sistema. Para la función de transferencia: 156 23 )( 23 2 +++ ++ = sss ss sG Los polos y ceros son: Matlab: >> num=[1 3 2]; >> ceros=roots(num) % ceros = -2, -1
  • 38. 18 >> den=[1 6 5 1]; >> polos=roots(den) % polos = -5.0489, -0.6431, -0.3080 En Matlab existen dos comandos más utilizados para el cálculo de los polos y ceros de un sistema que se obtienen directamente de la función de transferencia: ceros = zero(Gs) polos = pole(Gs) Esto es, >> num=[1 3 2]; >> den=[1 6 5 1]; >> Gs = tf(num,den); >> ceros = zero(Gs) >> polos = pole(Gs) 7.3.3 ESTABILIDAD Con base en la gráfica de polos y ceros (eje x los reales, eje y los imaginarios) de la función de transferencia en lazo cerrado: a) El sistema es estable cuando los polos están en el semiplano izquierdo b) el sistema es inestable si por lo menos un polo está en el semiplano derecho c) Es críticamente estable cuando los polos están en el eje imaginario d) Los ceros no intervienen en la estabilidad y por tanto no importa su ubicación Ejemplo: La función de transferencia en lazo cerrado de un sistema es: 656 23 )( 23 2 +++ ++ = sss ss sGlc Matlab: >> num=[1 3 2]; >> den=[1 6 5 6]; >> Glc=tf(num,den) >> polos=pole(Glc) % polos = -5.2670, -0.3665 + 1.0024i, -0.3665 - 1.0024i % Para graficar los polos y ceros se usa el comando pzmap >> pzmap(Glc) % el programa presenta la siguiente figura,
  • 39. 19 El sistema tiene tres polos: un polo real y dos polos complejos conjugados. Como todos los polos están en el semiplano izquierdo, el sistema es estable. 7.3.4 RESPUESTA DE UN SISTEMA Generalmente se conoce como respuesta de un sistema la salida en el dominio del tiempo que tiene el sistema cuando a su entrada se le aplica una función escalón unitaria. También se conoce como respuesta al paso unitario. Para el ejemplo anterior la respuesta al paso unitario se obtiene adicionando la instrucción: >> step(Glc) Esta respuesta tiene como característica importante la amplitud de pico, el sobreimpulso (overshoot) y el tiempo de establecimiento (setting time).
  • 40. 20 7.3.5 ERROR DE ESTADO ESTACIONARIO El error de estado estacionario o estado estable. es igual a: final1 0 lim 1 valorGlc s Ess −= → −= Ejemplo: 666.0333.01 656 23 0 lim 1 23 2 =−= +++ ++ → −= sss ss s Ess Ejemplo: Para: 656 63 23 2 +++ ++ = sss ss Glc 011 656 63 0 lim 1 23 2 =−= +++ ++ → −= sss ss s Ess
  • 41. 21 8. SIMULINK 8.1 INTRODUCCIÓN Simulink es una extensión de Matlab utilizado en el modelamiento y simulación de sistemas. Para arrancar Simulink se puede hacer desde el prompt de Matlab digitando el comando >>Simulink o utilizando el icono . Se abre la ventana Simulink Library Browser como se indica abajo y se puede diagramar un nuevo modelo activando el botón New Model , o sea el icono o de File New Model Un modelo es un conjunto de bloques que representa un sistema y como archivo tiene extensión *.mdl 8.2 ELEMENTOS BÁSICOS Los elementos básicos son líneas y bloques. Los bloques están agrupados en: Sources, Links, Discrete, Continuos, Math, etc., tal como aparecen en la ventana anterior. Cada bloque tiene entradas y salida para realizar su interconexión. Por ejemplo, haga clic en Discrete y luego clic en Discrete Transfer Fcn y arrastre el bloque a la ventana en blanco. Si quiere modificar la función de transferencia del bloque haga doble clic en él y digite los coeficientes del numerador y denominador en la nueva ventana que aparece. Para la función 1/(z2 +2z +4) con tiempo de muestreo de 1 seg, quedaría:
  • 42. 22 8.3 SISTEMAS DE CONTROL Realizar el diagrama en bloques del siguiente sistema de control: Lo primero es arrastrar los bloques a la página en blanco de forma que, Step es la función paso o escalón que se obtiene de Sources, Scope es el osciloscopio que se obtiene de Sinks, Transfer Fcn se obtiene de Continuos, Sum y Gain se obtienen de Math. Modifique los bloques dando doble clic sobre cada uno de ellos para cambiar sus parámetros o valores e interconéctelos. Lo segundo es cambiar los nombres a los bloques y asignar las variables o señales haciendo doble clic en el lugar en que se van a colocar y salvar el modelo especificándole un nombre, por ejemplo ejem1.mdl
  • 43. 23 Por último se debe simular el sistema. Para ello se configura la señal de entrada, en este caso la función paso. Dar doble clic y asignar los siguientes parámetros: Step time=0, Inicial value=0, Final value=1, Sample time=0. Para simular el sistema de control se escoge del menú Simulation Start o el icono .y luego se hace doble clic en Scope para ver su respuesta o salida del sistema. Para observar además la entrada se puede colocar otro Scope a la salida de Step y se puede probar para varios pasos variando su amplitud, tiempo de inicio y tiempo de iniciación del paso. Para observar mejor la respuesta se usa el botón Autoscale (binoculares ) de la ventana del Scope. Si quiere observar mejor la respuesta o parte de ella se pueden cambiar los parámetros de simulación, Simulation Simulation parameters. Por ejemplo cambiar el Start time y el Stop time y correr nuevamente la simulación. 8.4 MODELANDO UN MOTOR DC Un actuador común en sistemas de control es el motor DC. Provee directamente movimiento rotatorio y acoplado con poleas o correas puede proveer movimiento transnacional. 8.4.1 ECUACIONES DINÁMICAS El circuito eléctrico de la armadura y el diagrama de cuerpo libre del rotor es mostrado en la figura con sus ecuaciones dinámicas.
  • 44. 24 (1) Leyes de Newton (2) Leyes de Kirchhoffs Los parámetros físicos tienen los siguiente valores : Momento de inercia del rotor : J = 0.01kg.m2 /sg2 Rata de amortiguamiento del sistema mecánico: b = 0.1 N.m.sg Constante de la fuerza electromotriz: Ke = Kt = 0.01 Nm/Amp Resistencia eléctrica: R = 1 ohm Inductancia eléctrica: L =0.5H Fuente de voltaje de entrada: V Posición angular: θ Se asume que el rotor y el eje son rígidos 8.4.2 MODELADO DEL MOTOR EN VELOCIDAD
  • 45. 25 8.5 EXTRAER MODELO LINEAL Para obtener la función de transferencia del motor primero se trasladan los parámetros del motor al modelo creando un archivo en Matlab (*.m) de la siguiente forma: % VALORES DE LOS PARÁMETROS DEL MOTOR J = 0.01; b = 0.1; Ke = 0.01; Kt = 0.01; R = 1; L = 0.5; Se ejecuta este archivo y se simula el modelo para una entrada de paso unitario de valor V = 0.01, con los siguientes parámetros de simulación: Stop time = 3 sg. Arranque la simulación y observe la salida (velocidad del motor). Como segundo paso se debe obtener el modelo lineal de Matlab del motor. Para esto, borre el bloque Scope y cámbielo por Out obtenido de la librería de Signals&Systems. Haga lo mismo para Step cambiándolo por In de esta misma librería. Los bloques In y Out definen la entrada y salida del sistema que le gustaría extraer. Salve este modelo. El sistema quedará así:
  • 46. 26 Como tercero y último paso, después de desarrollado el modelo y salvarlo por ejemplo con el nombre MotorDcVel.mdl se ejecutan los siguientes comandos: % OBTENER EL MODELO LINEAL DEL SISTEMA [num, den] = linmod('MotorDcVel') Gps = tf(num, den) La respuesta es :
  • 47. MATLAB APLICADO A INGENIERÍA 1 9. PROGRAMACIÓN 9.1 SUBSISTEMAS Abra una nueva ventana y arrastre de la librería Signals&Systems el bloque SubSystem , haga doble clic en este bloque, abra el modelo MotorDcVel.mdl (el que tiene In y Out como terminales) cópielo y péguelo en la nueva ventana de subsistema anterior. Cierre ventanas y aparece una nueva con el bloque con los terminales del subsistema creado. Déle el nombre MotorDcVel. Si a este bloque de subsistema se le da doble clic aparece el modelo completo diseñado anteriormente. Otra forma es señalar los bloques de interés, ir a menú Edit --> create Subsytem 9.1.1 SISTEMA EN LAZO ABIERTO Al subsistema creado que constituye la planta de un sistema de control se le va a adicionar un controlador y obtendremos la función de transferencia en lazo abierto y lazo cerrado. % CONTROL DE UN MOTOR DC [num, den]=linmod('ControlMotor') Glazo_abierto = tf(num, den) Respuesta:
  • 48. MATLAB APLICADO A INGENIERÍA 2 9.1.2 SISTEMA EN LAZO CERRADO % CONTROL DE UN MOTOR DC [num, den]=linmod('ControlMotor') Glazo_cerrado= tf(num, den) Respuesta: 9.2 SISTEMA DISCRETO 9.2.1 DIAGRAMA EN SIMULINK 9.2.2 PROGRAMA MATLAB % SISTEMA DISCRETO DISCRETO T=0.1; [num,den]=dlinmod('MotorDigital',T) Glazo_cerradoz=tf(num,den,T)
  • 49. MATLAB APLICADO A INGENIERÍA 3 Respuesta: 9.3 SOLUCIÓN DE ECUACIONES DIFERENCIALES Ejemplo: Resolver la siguiente ecuación diferencial: yytytyyyty dt dy dt yd 6'34''46'3''4632 2 −−=⇒=++⇒=++ Diagrama Simulink: Respuestas:
  • 50. MATLAB APLICADO A INGENIERÍA 4 Ejemplo: Comprobar la integración por Simulink.
  • 51. MATLAB APLICADO A INGENIERÍA 5 9.4 INTERCAMBIAR SEÑALES SIMULINK - MATLAB DE MATLAB A SIMULINK Para utilizar señale de Matlab a Simulink de la librerís Sources se utiliza el bloque From Workspace. Ejemplo: Resolver la ecuación y’’ + y = e t , y’(0) = 0, y(0) =3
  • 52. MATLAB APLICADO A INGENIERÍA 6 El vector [ t x ] se ejecuta en Matlab en el workspace de la siguiente forma: >> t = 0:0.001:0.999; >> t = t’; >> x = exp(t) Al ejecutarse Simulink toma los datos entregados por Matlab. No olvidar colocar condición inicial y(0) = 3 en el integrador. DE SIMULINK A MATLAB Para enviar datos de Simulink a Matlab se utiliza de la librería Sinks el bloque To Workspace. Ejemplo: Resolver la ecuación: f(t) = Mx’’ + Bx’ + Kx, M=1, B=1, K= 10, F(t) = 5
  • 53. MATLAB APLICADO A INGENIERÍA 7 En Matlab: >> plot(t,y) 9.5 EJERCICIOS Ejercicio1: Si la entrada es una señal senoidal, encontrar las salidas referidas a vC y iL. Ejercicio2: Para el siguiente problema hallar la variación de h si el caudal normal Q es de 10 lit/min y en t=5 seg se aplica una perturbación de 2 lit/min. El valor de K=10, A= 2 m2 . hKtq dt dh A −= )(
  • 54. MATLAB APLICADO A INGENIERÍA 8 Diagrama Simulink: Ejercicio3: La bola magnética
  • 55. MATLAB APLICADO A INGENIERÍA 9 Ecuaciones: iRV h i mg dt hd m −=−= dt di L(2))1( 2 2 2 β Valores: m=0.1 Kg; g=9.81; R=2 Ohm; L=0.02 H; β=0.001 Diagrama simulink: Controlador: zeros=[-11.5+7.9i, -11.5-7.9i] polos=[0 -1000] ganancia=-3.3057e+004 Planta:
  • 56. MATLAB APLICADO A INGENIERÍA 10 i(0) = 0; h(0)=0.05; h’(0)=0
  • 57. MATLAB APLICADO A INGENIERÍA 11 Ejercicio4: Tanque de agua Ecuación del modelo: habV dt dh A dt dVol −== Diagrama simulink:
  • 58. MATLAB APLICADO A INGENIERÍA 12 Controlador: Planta: Ejercicio5: Movimiento parabólico
  • 59. MATLAB APLICADO A INGENIERÍA 13 Ecuaciones: aceleradoMovimiento'' unformeMovimiento0'' gy x −= = Condiciones iniciales: Vo=100 m/sg; θ = 30º
  • 60. MATLAB APLICADO A INGENIERÍA 14
  • 61. MATLAB APLICADO A INGENIERÍA 15 Ejercicio6: Péndulo simple Ecuación: 0''' =++ θθθ wsenBLmL Valores: w (peso) = 2; L (longitud) = 0.6; B (amortiguación) = 0.08; Condiciones iniciales: θ’(0) = -2 rad/sg; θ(0) = π /2 Diagrama simulink:
  • 62. MATLAB APLICADO A INGENIERÍA 16 9.6 FUNCIONES Y BUCLES Matlab permite la ejecución de conjuntos de comandos escritos secuencialmente en la ventana de edición y que son almacenados en un archivo nombre.m. Para ejecutar un archivo basta con teclear su nombre (sin extensión) en modo interactivo en la ventana de comando y pulsar enter. En el archivo .m se pueden introducir textos explicativos comenzando la línea con el símbolo %. 9.6.1 FUNCTION El comando function permite la definición de funciones con la siguiente sintaxis: function parámetros_salida = nombre_función(parámetros_entrada) cuerpo de la función Una vez definida la función se guarda en un archivo nombre_función.m para su posterior utilización. Cuando los parámetros de salida son más que uno se sitúan entre corchetes separados por comas. Si los parámetros de entrada son más que uno se separan por comas. Ejemplo: Definir la función fun1(x) = x^3 -2x+cos(x)
  • 63. MATLAB APLICADO A INGENIERÍA 17 En la ventana de edición: function p = fun1(x) % Definición de una función simple p = x^3 – 2*x+cos(x) La función se guarda en un archivo fun1.m Podemos luego utilizar esta función, por ejemplo, >> fun1(3*pi/2) ans= 95.2214 >> help fun1 Definición de una función simple Ejemplo: Solución de una ecuación de segundo grado function [x1,x2] = cuadratica(a,b,c) %Esta funcion calcula las raices de una ecuacion cuadratica %la sintaxis es [x1,x2]=cuadratica(a,b,c) radical = sqrt(b^2-4*a*c); x1= (-b+radical) / (2*a); x2= (-b-radical) / (2*a); el archivo es cuadratica.m >> help cuadratica Esta funcion calcula las raices de una ecuacion cuadratica la sintaxis es [x1,x2]=cuadratica(a,b,c) >> [x1,x2]=cuadratica(1,2,3) x1 = -1.0000 + 1.4142i x2 = -1.0000 - 1.4142i
  • 64. MATLAB APLICADO A INGENIERÍA 18 fval: La evaluación de una función en sus argumentos, también puede realizarse con el comando feval que tiene la siguiente sintaxis: feval(‘F’,arg1,arg2,…) Evalúa la función F (archivo F.m) en los argumentos especificados arg1, arg2, ….. Ejemplo: function [x1,x2] = ecuacion2(a,b,c) % Solución de la ecuación de segundo orden d = b^2 – 4*a*c; x1 = (-b + sqrt(d))/(2*a); x2 = (-b - sqrt(d))/(2*a); Para resolver la ecuación x2 + 2x +3 = 0 >> [x1, x2] = feval(‘ecuacion2’,1,2,3) o también: >> [x1, x2] = ecuacion2(1,2,3) 9.6.2 GLOBAL Normalmente cada función de Matlab definida como un archivo–M contiene sus variables como variables locales, esto es, su efecto es al interior de este archivo independientemente de otros archivos. Es posible definir otras variables que tenga efecto en otros archivos-M con variables globales usando el comando global con la siguiente sintaxis: global x y z ... define las variables x, y, z,....como globales 9.6.3 FOR
  • 65. MATLAB APLICADO A INGENIERÍA 19 Permite ejecutar de forma repetitiva un comando o grupo de comandos varias veces. Tiene la siguiente sintaxis: caso1: for i= 1:n comandos end caso2: for i=n:-0.2:1 comandos end caso 3: for i=1:m for i=n comandos end end Ejemplo: Sumar los enteros pares de 1 a 100 suma=0; for i=1:2:100 suma=suma+i; end disp('El resultado es: ') display(suma) Ejemplo: Calcular la suma de los elementos de una matriz M=[1 2 -2 4; 0 -3 1 0; 2 -1 4 3]; % numero de filas m=length(M(:,1)); % numero de columnas n=length(M(1,:)); suma=0;
  • 66. MATLAB APLICADO A INGENIERÍA 20 for i=1:m for j=1:n suma=M(i,j)+suma; end end display(suma) 9.6.4 WHILE Mientras se ejecuta una condición se ejecutan los comandos o sentencias. while condición sentencias end Ejemplo: Calcular los volúmenes de las esferas para radio igual a: 1,2,3,4,5 r=0; while r<5 r=r+1; vol=(4/3)*pi*r^3; fprintf('El radio es =%g y el volumen es =%g n',r,vol) end El radio es =1 y el volumen es =4.18879 El radio es =2 y el volumen es =33.5103 El radio es =3 y el volumen es =113.097 El radio es =4 y el volumen es =268.083 El radio es =5 y el volumen es =523.599 Ejemplo: Gz=tf(1,[0.4 0.3]); Gzc=zpk(1,[-1 0.2],0.5); SIGA=1; while SIGA ==1 clc disp('LA FUNCION DE TRANSF. EN LAZO ABIERTO ES: '); Gla = Gz*Gzc disp(' '); disp('LA FUNCION DE TRANSF. EN LAZO CERRADO ES: '); Glc = feedback(Gla,1) disp('PARA SEGUIR OPRIMA ENTER');
  • 67. MATLAB APLICADO A INGENIERÍA 21 pause clc disp(' '); disp('LOS POLOS DEL SISTEMA SON : '); Polos = pole(Glc) disp('QUE TIENEN MAGNITUDES Y ANGULOS DE :'); Mag = abs(Polos) Ang1 = angle(Polos); Ang = Ang1*180/pi if (Mag(1)<1)&(Mag(2)<1) disp('EL SISTEMA ES ESTABLE'); else disp('EL SISTEMA ES INESTABLE'); end disp(' '); disp('PARA SEGUIR OPRIMA ENTER'); pause SIGA = input (' PRESIONE 1 PARA SEGUIR '); end Ejemplo: Genere una tabla que suministre los inversos, cuadrados y raíces cuadradas del 1 al 5 i=0; while i<5 i=i+1; A(i)=i; B(i)=1/i; C(i)=i^2; D(i)=sqrt(i); end E=[A',B',C',D'] E = 1.0000 1.0000 1.0000 1.0000 2.0000 0.5000 4.0000 1.4142 3.0000 0.3333 9.0000 1.7321 4.0000 0.2500 16.0000 2.0000 5.0000 0.2000 25.0000 2.2361
  • 68. MATLAB APLICADO A INGENIERÍA 22 9.6.5 IF caso 1: if condición sentencias end caso 2: if condición1 bloque1 elseif condción2 bloque2 elseif condición3 bloque3 else % sino cumple condiciones anteriores bloque4 end Operadores de relación: > Mayor que >= Mayor o igual que < Menor que <= Menor o igual que == Igual ∼= No es igual a Operadores lógicos: & AND ⏐ OR ∼ NOT xor XOR Ejemplo: calif = input('Dame la calificacion: '); if calif >= 3.0 disp(' ') disp('Aprobado') end if calif < 3.0
  • 69. MATLAB APLICADO A INGENIERÍA 23 disp(' ') disp('Desaprobado') end % Otra forma calif = input('Dame la calificacion: '); if calif >= 3.0 disp(' ') disp('Aprobado') else disp(' ') disp('Desaprobado') end Ejemplo: El precio del vino está condicionado a la cantidad requerida. Hasta 5 botellas el precio unitario es de $10.000, de 6 a 12 botellas el precio es de $12.000, y a partir de 13 a $15.000. Elaborar un programa, que pegunta cuántas botellas se desean, indique el precio unitario y el total del gasto. c=input('¿Cuántas botellas quiere? '); if c<5 Pu=10000; Pt=Pu*c; elseif c<=12 Pu=12000; Pt=Pu*c; else Pu=15000; Pt=Pu*c; end disp('Precio unitario: ') Pu disp('Precio total: ') Pt 9.6.6 SWITCH Se evalúa una expresión y se compara con las expresiones en case. Se ejecuta el bloque que corresponda con ese resultado. Si ninguno es igual se ejecuta el bloque de otherwise. switch expresión
  • 70. MATLAB APLICADO A INGENIERÍA 24 case expresión1 bloque1 case expresión2 bloque2 ......................... otherwise bloque3 Ejemplo: disp('SELECCIONE PRESIONANDO :'); disp(' 1: PARA FUNCION DE LA PLANTA EN TF '); disp(' 2: PARA FUNCION DE LA PLANTA EN ZPK '); n=input('SELECCIONE LA OPCION : '); disp(' '); switch n case 1 num = input('ENTRE NUMERADOR DE LA PLANTA : num = '); den = input('ENTRE DENOMINADOR DE LA PLANTA : den = '); disp('LA FUNCION DE TRANSFERENCIA DE LA PLANTA ES : Gp(s) = '); Gp = tf(num,den) disp(' '); case 2 Z = input('Entre vector de ceros : Z = '); P = input('Entre vector de polos : P = '); K = input('Ganancia es igual a : K = '); disp('LA FUNCION DE TRANSFERENCIA DE LA PLANTA ES : Gp(s) = '); Gp = zpk(Z,P,K) end 9.6.7 INPUT Permite imprimir un mensaje y recuperar como valor el resultado de una expresión tecleada por el usuario. n = input (‘Teclee el polinomio’) 9.6.8 DISP Permite imprimir un mensaje en pantalla. disp(‘Universidad de Colombia’)
  • 71. MATLAB APLICADO A INGENIERÍA 25 9.6.9 FIND Para el ejemplo del movimiento del péndulo, calcular por programación el ángulo para un tiempo dado. %Programa en Matlab g=9.8; w=2; L=0.6; B=0.08; m=w/g; %Para correr el simulink tiene que en K>>movpendulo y luego correrlo disp('Realice la simulacion y de return para ejecutar') keyboard a=length(t); tf=t(a); delta=tf/a; %calcular el angulo para un tiempo T dado T=input('Entre el tiempo de T: '); i=find(t <(T+delta) & t >(T-delta)); disp('El desplazamiento angular es de: ') AngR=teta(i(2)) AngG=AngR*180/pi EJEMPLO: SISTEMA MECÁNICO
  • 72. MATLAB APLICADO A INGENIERÍA 26 Ecuaciones dinámicas: ∫ −+= dtvvk dt dv mtf )21( 1 1)( ∫ +−+= 2)12( 2 20 bvdtvvk dt dv m Ecuaciones de Laplace: s VV ksVmsF 21 11)( − += 2 12 220 bV s VV ksVm + − += Ecuaciones para Simulink: 2 1 21 1 1 sm VV k sm F V − −= Programa en Simulink: s VV kbsm 21 )2(2 − =+V
  • 73. MATLAB APLICADO A INGENIERÍA 27 Programa: %PROGRAMA DEL SISTEMA MECANICO1 clear all m1=40; m2=60; k=400; b=200; clc disp('********************************************************************') disp('Para ir a simulink tiene que digitar en K>>mecanico1') disp('DIGITE en K>> return para retornar a Matlab y TECLA Enter') keyboard [num,den]=linmod('Mecanico1'); Gs=tf(num,den); %************************************************************************ %Rutina para quitar coeficientes pequeños n=length(num); d=length(den); for i=1:n if num(i)<10e-6 num(i)=0; else num(i)=num(i); end end for i=1:d if den(i)<10e-6 den(i)=0; else den(i)=den(i);
  • 74. MATLAB APLICADO A INGENIERÍA 28 end end %*************************************************************** Gs=tf(num,den); clc disp('***********************************************************') display(Gs) disp('***********************************************************') disp(‘Oprima tecla Enter’) pause Gs=poly2sym(num,'s')/poly2sym(den,'s'); syms t %f(t)=1 Nt ft=1*heaviside(t); Fs=laplace(ft); V2s=Gs*Fs; v2t=ilaplace(V2s); v2=vpa(v2t,3) t=1.0; v2=eval(v2) % 0.060 EJEMPLO: SISTEMA TERMOQUÍMICO Se desarrolla una reacción termoquímica en donde el reaccionante A se convierte en un producto B. Velocidad de reacción: r(t)= k c(t) Constante de velocidad de reacción: k = 0,2 min-1 Concentración de la entrada: ci(t) Para t= 0; ci(0)=1.25 lbmol/pie3 Volumen de la masa reaccionante: V= 5 litros Flujo de entrada: F= 1 lt/min Ecuación dinámica: )()()( )( tKVctFctFc dt tdc V i −−= )()()( )( tcKVFtFc dt tdc V i +−= )()( )( tc KVF F tc dt tdc KVF V i + =+ + Constante de tiempo:
  • 75. MATLAB APLICADO A INGENIERÍA 29 KVF V + =τ Ganancia de estado estacionario: KVF F Ke + = Reemplazando valores: τ = 2.5 min; Ke = 0.5; Condición inicial de la concentración: c(0) 0 = Fci(0)-Fc(0)-KVc(0) Reemplazando valores: c(0) = 0.625 lbmol/pie3 Programa en Matlab: %Entrada al paso. Programa pplineal.m function dy=pplineal(t,y) global K X tau dy=(K*X-y)/tau; % Entrada rampa. Programa rplineal.m function dy=rplineal(t,y) global K r tau dy=(K*r*t-y)/tau; % Entrada senoidal. Programa splineal.m function dy=splineal(t,y) global K tau A w dy=(K*A*sin(w*t)-y)/tau; % Programa principal F=1; V=5; K=0.2; ci0=1.25; c0=solve('F*ci0-F*c0-K*V*c0=0'); c0=eval(c0) %Constante de tiempo tau=V/(F+K*V) % tau=2.5 minutos %Ganancia en estado estacionario Ke=F/(F+K*V) % Ke=0.5
  • 76. MATLAB APLICADO A INGENIERÍA 30 global R K tau X r A w Rango Inicio Rango=input('Tiempo de simulacion='); Inicio=input('Condiciones iniciales='); N=input('ESCRIBA 1=PASO, 2=RAMPA, 3=SENO: '); disp(' ') switch N case 1 X=input('Valor del paso='); [t,y]=ode45('pplineal',Rango,Inicio); plot(t,y) case 2 r=input('valor pendiente de la rampa='); [t,y]=ode45('rplineal',Rango,Inicio); plot(t,r*t,t,y/K,'r') case 3 A=input('Amplitud del seno='); w=input('Frecuencia del seno='); [t,y]=ode45('splineal',Rango,Inicio); disp('Amplitud del perfil de la respuesta') K*A/sqrt(1+(w*tau)^2) disp('Fase de la respuesta respecto a la entrada') atan(-w*tau) plot(t,A*sin(w*t),t,y,'r') end Programa en Simulink:
  • 77. MATLAB APLICADO A INGENIERÍA 31 Ejemplo: SISTEMA MECANICO2 Parámetros: m1=40; m2=60; k1=400; k2=400; b1=180; b2=220;
  • 78. MATLAB APLICADO A INGENIERÍA 32 Ecuaciones dinámicas: 1)21()21(1 1 1)( bvvdtvvk dt dv mtf −+−+= ∫ 22221)12()12(1 2 20 vbdtvkbvvdtvvk dt dv m ++−+−+= ∫∫ Ecuaciones de Laplace: 1)21()21( 1 11)( bVVVV s K sVmsF −+−+= 222 2 1)12()12( 1 220 VbV s k bVVVV s k sVm ++−+−+= Ecuaciones para Simulink: ⎥ ⎦ ⎤ ⎢ ⎣ ⎡ + −−=⎥ ⎦ ⎤ ⎢ ⎣ ⎡ +−−= ) 11 )(21( 1 1 )1 1 )(21()( 1 1 1 s sbk VVF sm b s k VVsF sm V
  • 79. 1 GUIDE – MATLAB INTRODUCCIÓN GUIDE es un entorno de programación visual disponible en MATLAB para realizar y ejecutar programas que necesiten ingreso continuo de datos. Inicio Para iniciar nuestro proyecto, lo podemos hacer de dos maneras: a) Ejecutando la siguiente instrucción en la ventana de comandos: >> guide b) Haciendo un click en el ícono que muestra la figura: Se presenta el siguiente cuadro de diálogo:
  • 80. 2 Se presentan las siguientes opciones: a) Blank GUI (Default) La opción de interfaz gráfica de usuario en blanco (viene predeterminada), nos presenta un formulario nuevo, en el cual podemos diseñar nuestro programa. b) GUI with Uicontrols Esta opción presenta un ejemplo en el cual se calcula la masa, dada la densidad y el volumen, en alguno de los dos sistemas de unidades. Podemos ejecutar este ejemplo y obtener resultados. c) GUI with Axes and Menu Esta opción es otro ejemplo el cual contiene el menú File con las opciones Open, Print y Close. En el formulario tiene un Popup menu, un push button y un objeto Axes, podemos ejecutar el programa eligiendo alguna de las seis opciones que se encuentran en el menú despegable y haciendo click en el botón de comando. d) Modal Question Dialog Con esta opción se muestra en la pantalla un cuadro de diálogo común, el cual consta de una pequeña imagen, una etiqueta y dos botones Yes y No, dependiendo del botón que se presione, el GUI retorna el texto seleccionado (la cadena de caracteres ‘Yes’ o ‘No’). Para obtener la etiqueta de cada elemento de la paleta de componentes ejecutamos: File>>Preferentes y seleccionamos Show names in component palette. Tenemos la siguiente presentación:
  • 81. 3 DESCRIPCIÓN DE LOS COMPONENTES: CONTROL DESCRIPCIÓN Push Button Genera una acción Slider Representa un rango de valores Radio Button Representa una opción Check Box Indica el estado de una opción Edit Text Para editar texto Static text Muestra un string de texto Pop-up Menu Provee una lista de opciones Listbox Lista deslizable Toggle Button Genera una acción on, off Axes Para graficar Panel Visualiza grupo de controles Button Grup Es un panel exclusivo para radio buttons y toggle buttons ActiveX Control Despliega controles ActiveX en Gui PROPIEDADES DE LOS COMPONENTES Cada uno de los elementos de GUI, tiene un conjunto de opciones que acceder con click derecho. Aparece el siguiente submenú: La opción Property Inspector nos permite personalizar cada elemento.
  • 82. 4 Al hacer click derecho en el elemento ubicado en el área de diseño, una de las opciones más importantes es View Callbacks, la cual, al ejecutarla, abre el archivo .m. asociado a nuestro diseño y nos posiciona en la parte del programa que corresponde a la subrutina que se ejecutará cuando se realice una determinada acción sobre el elemento que estamos editando. FUNCIONAMIENTO DE UNA APLICACIÓN GUI Una aplicación GUIDE consta de dos archivos: .m y .fig. El archivo .m es el que contiene el código con las correspondencias de los botones de control de la interfaz y el archivo .fig contiene los elementos gráficos. Cada vez que se adicione un nuevo elemento en la interfaz gráfica, se genera automáticamente código en el archivo .m. Para ejecutar una Interfaz Gráfica, si la hemos etiquetado con el nombre curso.fig, simplemente ejecutamos en la ventana de comandos >> curso. O haciendo click derecho en el m-file y seleccionando la opción RUN. SENTENCIAS GET Y SET La asignación u obtención de valores de los componentes se realiza mediante las sentencias get y set. Por ejemplo: celsius1=eval(get(handles.celsius,'string')); %Para convertir celsius a kelvin kelvin1=celsius1 + 273.15; Notar que siempre se obtienen los datos a través de los identificadores handles.
  • 83. 5 Para colocar el valor de la variable kelvin1 al statictext,(Tag kelvin) escribimos: set(handles.kelvin,'string',kelvin1); Ejemplo: ConvTemperatura.fig Al correrse el programa ConvTemp, escibimos en la casilla de celsius 40 y calculamos. Se obtiene la siguiente figura:
  • 84. 6 El programa genera el archivo siguiente ConvTemperatura.m : % --- Executes on button press in BotonCelsius. function BotonCelsius_Callback(hObject, eventdata, handles) % hObject handle to BotonCelsius (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Adicionamos % Para leer el dato colocado en celsius celsius1=eval(get(handles.celsius,'string')); %Para convertir celsius a kelvin y fehrenheit kelvin1=celsius1 + 273.15; fahrenheit1=1.8*celsius1 + 32; %Para escribir datos en los Edit Text set(handles.kelvin,'string',kelvin1); set(handles.fahrenheit,'string',fahrenheit1); % --- Executes on button press in BotonKelvin. function BotonKelvin_Callback(hObject, eventdata, handles) % hObject handle to BotonKelvin (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Adicionamos % Para leer el dato colocado en kelvin kelvin1=eval(get(handles.kelvin,'string')); %Para convertir kelvin a celsius y fehrenheit celsius1=kelvin1 - 273.15; fahrenheit1=(kelvin1-273.15)*1.8 + 32; %Para escribir datos en los Edit Text set(handles.celsius,'string',celsius1); set(handles.fahrenheit,'string',fahrenheit1); % --- Executes on button press in BotonFarenheit. function BotonFarenheit_Callback(hObject, eventdata, handles) % hObject handle to BotonFarenheit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Adicionamos % Para leer el dato colocado en fahrenheit fahrenheit1=eval(get(handles.fahrenheit,'string')); %Para convertir fahrenheit a celsius y kelvin celsius1=(fahrenheit1-32)*5/9; kelvin1=(fahrenheit1-32)*5/9 + 273.15; %Para escribir datos en los Edit Text
  • 85. 7 set(handles.celsius,'string',celsius1); set(handles.kelvin,'string',kelvin1); % --- Executes on button press in BotonSalir. function BotonSalir_Callback(hObject, eventdata, handles) % hObject handle to BotonSalir (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close(gcbf) Ejemplo: Grafica1.fig
  • 86. 8 function Frecuencia_Callback(hObject, eventdata, handles) % hObject handle to Frecuencia (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of Frecuencia as text % str2double(get(hObject,'String')) returns contents of Frecuencia as a double % Rangos de tiempo t1=str2num(get(handles.TiempoInicial,'string')); t2=str2num(get(handles.TiempoFinal,'string')); % Vector tiempo t=linspace(t1,t2,200); % Valor de la frecuencia frec=str2num(get(handles.Frecuencia,'string')); % graficar función seno y=sin(2*pi*frec*t); plot(t,y); Ejemplo: Slider.fig Propiedades de la barra de deslizamiento:
  • 87. 9 Min: 1; Max:10; Value:5
  • 88. 10 function Frecuencia_Callback(hObject, eventdata, handles) % hObject handle to Frecuencia (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of Frecuencia as text % str2double(get(hObject,'String')) returns contents of Frecuencia as a double % Rangos de tiempo t1=str2num(get(handles.TiempoInicial,'string')); t2=str2num(get(handles.TiempoFinal,'string')); % Vector tiempo t=linspace(t1,t2,200); % Valor de la frecuencia frec=str2num(get(handles.Frecuencia,'string')); % Barra de desplazamiento editamin=get(handles.Barra,'Min'); editamax=get(handles.Barra,'Max'); %Chequear si el valor de frecuencia es numerico if isnumeric(frec)&lenght(frec)==1&frec>=editamin&frec<=editamax set(handles.Barra,'Value',frec) elseif frec<editamin set(gcbo,'string',editamin); set(handles.Barra,'Value',editamin); frec=editamin; elseif frec>editamax set(gcbo,'string',editamax); set(handles.Barra,'value',editamax); frec=editamax end % graficar función seno y=sin(2*pi*frec*t); plot(t,y); function Barra_Callback(hObject, eventdata, handles) % hObject handle to Barra (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'Value') returns position of slider % get(hObject,'Min') and get(hObject,'Max') to determine range of slider set(handles.Frecuencia,'string',get(gcbo,'value')); % Rangos de tiempo t1=str2num(get(handles.TiempoInicial,'string'));
  • 89. 11 t2=str2num(get(handles.TiempoFinal,'string')); % Vector tiempo t=linspace(t1,t2,200); frec=get(gcbo,'value'); y=sin(2*pi*frec*t); plot(t,y); Ejemplo: Calculadora.fig Calculadora.m % --- Executes on button press in uno. function uno_Callback(hObject, eventdata, handles) % hObject handle to uno (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textString=get(handles.Res,'String'); textString=strcat(textString,'1'); set(handles.Res,'String',textString) % --- Executes on button press in dos. function dos_Callback(hObject, eventdata, handles) % hObject handle to dos (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textString=get(handles.Res,'String'); textString=strcat(textString,'2'); set(handles.Res,'String',textString)
  • 90. 12 Al correr el programa se obtiene:
  • 91. 13 % --- Executes on button press in suma. function suma_Callback(hObject, eventdata, handles) % hObject handle to suma (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textString=get(handles.Res,'String'); textString=strcat(textString,'+'); set(handles.Res,'String',textString) % --- Executes on button press in igual. function igual_Callback(hObject, eventdata, handles) % hObject handle to igual (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) textString=get(handles.Res,'String'); textString=eval(textString,'='); set(handles.Res,'String',textString) % --- Executes on button press in borrar. function borrar_Callback(hObject, eventdata, handles) % hObject handle to borrar (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) ini=char(' '); set(handles.Res,'String',ini); % --- Executes on button press in acerca. function acerca_Callback(hObject, eventdata, handles) % hObject handle to acerca (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) msgbox('Calculadora Sencilla','Acerca de'); Ejemplo: Paralelogramo.fig
  • 92. 14
  • 93. 15 % --- Executes on button press in GRAFIQUE. function GRAFIQUE_Callback(hObject, eventdata, handles) % hObject handle to GRAFIQUE (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Argumentos de las rectas angulo1=str2num(get(handles.Ang1,'string')); angulo2=str2num(get(handles.Ang2,'string')); angulo3=str2num(get(handles.Ang3,'string')); longitud1=str2num(get(handles.Long1,'string')); longitud2=str2num(get(handles.Long2,'string')); longitud3=str2num(get(handles.Long3,'string')); % Valor del vértice inicial x(1)=0; y(1)=0; %Argumentos en forma matricial lineas=[angulo1,longitud1;angulo2,longitud2;angulo3,longitud3]; %Cálculo de las líneas for i=1:3 angr=lineas(i,1)*pi/180; m(i)=tan(angr); x(i+1)=x(i)+lineas(i,2)*cos(angr); y(i+1)=y(i)+lineas(i,2)*sin(angr); delta=(x(i+1)-x(i))/100; mx=x(i):delta:x(i+1); my=m(i)*(mx-x(i))+y(i); plot(mx,my,'r') vertice=['A';'B';'C';'D']; text(x(i),y(i),vertice(i)) title('ENCONTRAR UN LADO DEL PARALELOGRAMO') hold on end % Argumentos de la cuarta recta m=(y(1)-y(i+1))/(x(1)-x(i+1)); angr=atan(m); ang=angr*180/pi d=sqrt((y(1)-y(i+1))^2+(x(1)-x(i+1))^2) delta=(x(1)-x(i+1))/100; mx=x(i+1):delta:x(1); my=m*(mx-x(i+1))+y(i+1); plot(mx,my,'r') text(x(i+1),y(i+1),vertice(i+1)) hold off % Poner la respuesta de la cuarta recta angulo=num2str(ang);
  • 94. 16 set(handles.Ang4,'string',angulo); longitud=num2str(d); set(handles.Long4,'string',longitud); % --- Executes on button press in LIMPIA. function LIMPIA_Callback(hObject, eventdata, handles) % hObject handle to LIMPIA (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) limpia=' '; set(handles.Ang1,'string',limpia); set(handles.Ang2,'string',limpia); set(handles.Ang3,'string',limpia); set(handles.Ang4,'string',limpia); set(handles.Long1,'string',limpia); set(handles.Long2,'string',limpia); set(handles.Long3,'string',limpia); set(handles.Long4,'string',limpia); % --- Executes on button press in SALIR. function SALIR_Callback(hObject, eventdata, handles) % hObject handle to SALIR (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close(gcbf) Ejemplo: ClaculoMasa.fig
  • 95. 17 function density_Callback(hObject, eventdata, handles) % hObject handle to density (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of density as text % str2double(get(hObject,'String')) returns contents of density as a double density = str2double(get(hObject, 'String')); if isnan(density) set(hObject, 'String', 0); errordlg('Input must be a number','Error'); end % Save the new density value handles.metricdata.density = density; guidata(hObject,handles) function volume_Callback(hObject, eventdata, handles) % hObject handle to volume (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of volume as text % str2double(get(hObject,'String')) returns contents of volume as a double volume = str2double(get(hObject, 'String')); if isnan(volume) set(hObject, 'String', 0);
  • 96. 18 errordlg('Input must be a number','Error'); end % Save the new volume value handles.metricdata.volume = volume; guidata(hObject,handles) function calculate_Callback(hObject, eventdata, handles) % hObject handle to calculate (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) mass = handles.metricdata.density * handles.metricdata.volume; set(handles.mass, 'String', mass); % --- Executes on button press in reset. function reset_Callback(hObject, eventdata, handles) % hObject handle to reset (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) initialize_gui(gcbf, handles, true); % -------------------------------------------------------------------- function unitgroup_SelectionChangeFcn(hObject, eventdata, handles) % hObject handle to unitgroup (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) if (hObject == handles.english) set(handles.text4, 'String', 'lb/cu.in'); set(handles.text5, 'String', 'cu.in'); set(handles.text6, 'String', 'lb'); else set(handles.text4, 'String', 'kg/cu.m'); set(handles.text5, 'String', 'cu.m'); set(handles.text6, 'String', 'kg'); end % -------------------------------------------------------------------- function initialize_gui(fig_handle, handles, isreset) % If the metricdata field is present and the reset flag is false, it means % we are we are just re-initializing a GUI by calling it from the cmd line % while it is up. So, bail out as we dont want to reset the data. if isfield(handles, 'metricdata') && ~isreset return; end
  • 97. 19 handles.metricdata.density = 0; handles.metricdata.volume = 0; set(handles.density, 'String', handles.metricdata.density); set(handles.volume, 'String', handles.metricdata.volume); set(handles.mass, 'String', 0); set(handles.unitgroup, 'SelectedObject', handles.english); set(handles.text4, 'String', 'lb/cu.in'); set(handles.text5, 'String', 'cu.in'); set(handles.text6, 'String', 'lb'); % Update handles structure guidata(handles.figure1, handles); Ejemplo: FigPopupmenu En el inspector de propiedades en el String del popmenu se debe escribir:
  • 98. 20 function FigPopupmenu_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject; % Update handles structure guidata(hObject, handles); % This sets up the initial plot - only do when we are invisible
  • 99. 21 % so window can get raised using FigPopupmenu. if strcmp(get(hObject,'Visible'),'off') plot(rand(5)); end function pushbutton1_Callback(hObject, eventdata, handles) axes(handles.axes1); cla; popup_sel_index = get(handles.popupmenu1, 'Value'); switch popup_sel_index case 1 plot(rand(5)); case 2 plot(sin(1:0.01:25.99)); case 3 bar(1:.5:10); case 4 plot(membrane); case 5 surf(peaks); end Menu editor:
  • 100. 22 % -------------------------------------------------------------------- function FileMenu_Callback(hObject, eventdata, handles) % hObject handle to FileMenu (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % -------------------------------------------------------------------- function OpenMenuItem_Callback(hObject, eventdata, handles) file = uigetfile('*.fig'); if ~isequal(file, 0) open(file); end % -------------------------------------------------------------------- function PrintMenuItem_Callback(hObject, eventdata, handles) printdlg(handles.figure1) % -------------------------------------------------------------------- function CloseMenuItem_Callback(hObject, eventdata, handles) selection = questdlg(['Close ' get(handles.figure1,'Name') '?'],... ['Close ' get(handles.figure1,'Name') '...'],... 'Yes','No','Yes');
  • 101. 23 if strcmp(selection,'No') return; end delete(handles.figure1) Ejemplo: Mensajes.fig Adicionar a los Callbacks: % --- Executes on button press in Aviso. function Aviso_Callback(hObject, eventdata, handles) warndlg('Esto es un aviso','Curso_GUIDE'); % --- Executes on button press in Error. function Error_Callback(hObject, eventdata, handles) errordlg('Esto es un mensaje de error',' Curso_GUIDE '); % --- Executes on button press in Ayuda. function Ayuda_Callback(hObject, eventdata, handles) helpdlg('Esto es una ayuda',' Curso_GUIDE ');
  • 102. 24 % --- Executes on button press in Informacion. function Informacion_Callback(hObject, eventdata, handles) msgbox('Esto es un cuadro de mensaje',' Curso_GUIDE '); % --- Executes on button press in Pregunta. function Pregunta_Callback(hObject, eventdata, handles) questdlg('Esto es una pregunta',' Curso_GUIDE '); Se obtienen a ejecutar los botones las siguientes respuestas:
  • 103. 25 Para el caso especial de las preguntas podemos ejecutar o no sentencias dependiendo de la respuesta escogida. Por ejemplo, si deseamos salir o no del programa, se tiene1 : ans=questdlg('¿Desea salir del programa?','SALIR','Si','No','No'); if strcmp(ans,'No') return; end clear,clc,close all La función strcmp compara dos strings y si son iguales retorna el valor 1 (true). Clear elimina todas los valores de workspace, clc limpia la pantalla y close all cierra todos los Guide. Nótese que la secuencia 'Si','No','No' termina en 'No'; con esto se logra que la parte No del cuadro de pregunta esté resaltado. Si terminara en 'Si', la parte Si del cuadro de pregunta se resaltaría. 1 Manual de Interfaz Gráfica de Usuario en Matlab Por: Diego Orlando Barragán Guerrero
  • 104. 26 Ejemplo: Archivos.fig (uso de uigetfile) Adicionar en los Callbacks: function IMAGEN_Callback(hObject, eventdata, handles) [FileName Path]=uigetfile({'*.jpg;*.bmp'},'Abrir Imagen'); if isequal(FileName,0) return else a=imread(strcat(Path,FileName)); imshow(a); end handles.direccion=strcat(Path,FileName); guidata(hObject,handles) Como se puede observar, si el usuario presiona cancelar el programa no ejecuta ningún proceso. La función imread lee una imagen en Matlab e imshow la presenta. Este programa tendrá la siguiente presentación:
  • 105. 27 % --- Executes on button press in DOC. function DOC_Callback(hObject, eventdata, handles) [FileName Path]=uigetfile({'*.doc;*.xls'},'Abrir documento'); if isequal(FileName,0) return else winopen(strcat(Path,FileName)); end % --- Executes on button press in PROGRAMA. function PROGRAMA_Callback(hObject, eventdata, handles) [FileName Path]=uigetfile({'*.mdl'},'Abrir archivo'); if isequal(FileName,0) return else open_system(strcat(Path,FileName)) end
  • 106. 28 Ejemplo: Listbox.fig Adicionamos en los Callbacks: % --- Executes just before Listbox is made visible. function Listbox_OpeningFcn(hObject, eventdata, handles, varargin) set(handles.text1,'string','List Box'); set(handles.text2,'string',... ['Codigo:2005202275. Nota Matlab=3.5']); % Choose default command line output for Listbox handles.output = hObject; % Update handles structure guidata(hObject, handles); % --- Executes on selection change in listbox1. function listbox1_Callback(hObject, eventdata, handles) % Hints: contents = get(hObject,'String') returns listbox1 contents as cell array % contents{get(hObject,'Value')} returns selected item from listbox1 n=get(hObject,'Value'); gos=get(hObject,'String'); switch n case 1 set(handles.text2,'string',... ['Codigo:2005202275. Nota Matlab=3.5']); case 2 set(handles.text2,'string',... ['Codigo:2001101100. Nota Matlab=3.8']); case 3 set(handles.text2,'string',...
  • 108. 30 Ejemplo: Gui_simulik.fig (Pop up Menu) Comandos utilizados: find_system: comprueba si existe el programa en simulink find_System('Type','Nombre_simulink') open_System: Abre el programa Simulink open_system(‘Nombre_simulink’) set_param: Para escribir en los bloques de simulik set_param(‘Nombre_simulink/’Nombre_bloque’) PROGRAMA EN SIMULINK: PROGRAMA EN GUIDE:
  • 109. 31 PROGRAMA EN MATLAB: function Guide_Simulink_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to Guide_Simulink (see VARARGIN) % Choose default command line output for Guide_Simulink % Update handles structure handles.output = hObject; guidata(hObject, handles); %---------------------------------------------------- find_system('Type','simu'); open_system('simu'); set_param('simu/Signal Generator','Waveform','sine','frequency','5'); set_param('simu','Solver','Ode23','StopTime','1'); set_param(gcs,'SimulationCommand','start'); %---------------------------------------------------- % UIWAIT makes Guide_Simulink wait for user response (see UIRESUME) % uiwait(handles.figure1);
  • 110. 32 function wave_Callback(hObject, eventdata, handles) % hObject handle to wave (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see % GUIDATA) %-------------------------------------------------------------- onda=get(hObject,'Value'); if onda==1 set_param('simu/Signal Generator','Waveform','sine'); set_param(gcs,'simulationCommand','Start'); elseif onda==2 set_param('simu/Signal Generator','Waveform','square'); set_param(gcs,'simulationCommand','Start'); elseif onda==3 set_param('simu/Signal Generator','Waveform','sawtooth'); set_param(gcs,'simulationCommand','Start'); else set_param('simu/Signal Generator','Waveform','random'); set_param(gcs,'simulationCommand','Start'); end %--------------------------------------------------------------- function edit1_Callback(hObject, eventdata, handles) % hObject handle to edit1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of edit1 as text % str2double(get(hObject,'String')) returns contents of edit1 as a double %------------------------------------------------------------------- f=get(hObject,'string'); set_param('simu/Signal Generator','Frequency',f); set_param('Simulationcommand','Start'); %-------------------------------------------------------------------
  • 111. 33 Ejemplo: Reproducir sonido música.mdl Los bloques se encuentran en el Toolbox de Signal Processing, como Source y Sink audio.fig (archivos.wav)
  • 112. 34 El Slider debe estar en Max= 10.0 y Min=0.0 para que se pueda escuchar el cambio de volumen. Audio.m function audio_OpeningFcn(hObject, eventdata, handles, varargin) %-------------------------------------------------------------------------- set(handles.volumen,'Value',0.5); find_system('Name','musica'); open_system('musica'); set_param('musica/volumen','Gain','0.5'); set_param('musica/From Wave File','FileName','sonido.wav'); function play_Callback(hObject, eventdata, handles) %------------------------------------------------------------ set_param('musica/From Wave File','FileName','sonido.wav'); set_param(gcs,'SimulationCommand','Start'); function pausa_Callback(hObject, eventdata, handles) %------------------------------------------- set_param(gcs,'SimulationCommand','Pause') function continuar_Callback(hObject, eventdata, handles) %-------------------------------------------------- set_param(gcs,'SimulationCommand','Continue')
  • 113. 35 function parar_Callback(hObject, eventdata, handles) %--------------------------------------------------------- set_param(gcs,'SimulationCommand','Stop') function volumen_Callback(hObject, eventdata, handles) %------------------------------------------------------------------ vol=get(hObject,'Value'); set_param('musica/volumen','Gain',num2str(vol)); Ejemplo: ActiveX Circulo.fig (mwsamp control)
  • 114. 36 Circulo.m function circulo_OpeningFcn(hObject, eventdata, handles, varargin) %----------------------------------- a=num2str(handles.activex1.Radius); handles.activex1.Label=['Radio=' a]; %------------------------------------- function activex1_Click(hObject, eventdata, handles) % hObject handle to activex1 (see GCBO) % eventdata structure with parameters passed to COM event listener % handles structure with handles and user data (see GUIDATA) %-------------------------------------- c=get(handles.slider1,'Value'); RadioInicial=(1/c)*handles.activex1.radius; handles.activex1.Radius=RadioInicial; handles.activex1.Label=['Radio=',num2str(handles.activex1.Radius)]; refresh(handles.figure1); % --- Executes on slider movement. function slider1_Callback(hObject, eventdata, handles) %-------------------------------------------------------- c=get(hObject,'Value'); set(handles.edit1,'string',c); RadioInicial=handles.activex1.radius; handles.activex1.Radius=c*RadioInicial; handles.activex1.Label=['Radio=',num2str(handles.activex1.Radius)]; refresh(handles.figure1);
  • 115. 37 En la figura también se ha utilizado para tener el calendario, el ActiveX Control de calendario 12.0 Compilar GUI con ActiveX mcc -m nombregui -a nombregui_activex1