Documente Academic
Documente Profesional
Documente Cultură
1. VARIABLES Y FUNCIONES
1.1 OPERADORES
x +y Suma
x–y Diferencia
x*y Producto
x/y División
x ^y Potencia
Ejemplos:
>> v = 3
>> x = v + 6
>> y = v ^5 / 4
>> x = 2*3^5 + (5-3)* 8
1
1.2 VECTORES
Ejemplos:
>>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
2
1.3 MATRICES
Ejemplo:
>>A = [1 3 5; 4 7 9; 4 2 10]
A=
1 3 5
4 7 9
4 2 10
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:
x 2 + 2 x −5
a) y = e para x = 2.5
>> y = exp(sqrt(x^2+2*x-5))
>> x = 30*pi/180
>> y = 2*sin(5*x) + 3*cos(2*x)
c) y = log 3 x + 5 + ln(x2)
>> y = log10(x + 5)^(1/3) + log(x^2)
5
2. POLINOMIOS
Los comandos usados por Matlab para trabajar con polinomios son:
Ejemplos:
p=
1 -9 26 -24
>> x = 2.5;
>> p = [1 0 -3 5 -2.8];
>> y = polyval(p,x)
y=
4.0750
>> 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)
p=
3.0000 1.0000 2.0000
e) Calcular 1− x + 1+ x = 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
% x = 4/7, y = 9/7
⎡2 4 − 1⎤
g) Calcular el determinante de la matriz: ⎢ 3 −2 5 ⎥
⎢ ⎥
⎢⎣− 1 3 6 ⎥⎦
% d = -153
7
3. REPRESENTACIÓN GRÁFICA
Matlab ofrece diversas formas de representación gráfica.
Ejemplos:
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
>> plot(x,y,’r*’)
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')
Ejemplos:
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)’)
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
Ejemplos:
lim f ( x + h) − f ( x)
a) Hallar f ´(x) = si f(x) = cos(x)
h→0 h
syms h n x
limit ((cos( x + h) − cos( x)) / h, h,0 )
ans =
-sin(x)
lim ⎛ − 3 + 2n ⎞ 4
b) Hallar el límite de la sucesión: ⎜ ⎟
n → ∞ ⎝ − 7 + 3n ⎠
ans =
16/81
lim x
c) Hallar
x → 0− x
ans = -1
15
lim x
d) Hallar
x → 0+ x
Ejemplos:
lim x − 2 + x
a) ,
x → 2 − 3 + 1 + 4x
lim sen[(ax)] 2
b)
x→0 x2
>> 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
16
Ejemplos:
>> syms x
>> f = sin (5 ∗ x )
>> diff (f)
ans = 5 ∗ cos (5 ∗ x )
b) g ( x) = e x cos( x)
>> g = exp(x) ∗ cos(x)
>> diff (g)
ans = exp(x)*cos(x)-exp(x)*sin(x)
c = sym(‘5’)
diff(c)
ans = 0
Ejemplos:
∂f
a) Hallar la derivada de la función f(t) = sen(st):
∂t
>> syms s t
>> f = sin(s*t)
>> diff(f,t)
ans = cos(s*t)*s
∂f
b) Hallar la derivada con respecto a s:
∂s
>> diff(f,s)
ans = cos(s*t)*t
17
∂2 f
c) Hallar la segunda derivada de f con respecto a t:
∂t 2
>> diff(f,t,2)
ans = -sin(s*t)*s^2
>> 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:
∂f
a)
∂x
>> 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
∂f
b)
∂y
>> diff(f,y)
ans = cos(x*y)*x-2*sin(x*y^2)*x*y
∂2 f
c)
∂x 2
>> diff(diff(f,x),x)
ans = -sin(x*y)*y^2-cos(x*y^2)*y^4
18
∂2 f
d)
∂y 2
>> 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
∂2 f
e)
∂x∂y
>> 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
∫∫ f ( x, y)dxdy Int(int(f(x,y),x),y)
b d Int(int(f(x,y),x,a,b),y,c,d))
∫ ∫ f ( x, y)dxdy
a c
Ejemplos:
a) Hallar la integral de ∫ x n dx
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
exp(− x ^ 2)dx ⇒
∞
∫
− ax 2
f) −∞e dx
Ejemplos:
a) ∫ a ln(bx)dx
>> syms a b x
>> int(a*log(b*x),x)
Ans = a*x*log(b*x)-a*x
b) ∫∫ a ln(xy)dxdy
>> int(int(a*log(x*y),x),y)
ans = a*y*x*log(x*y)-2*a*x*y
1
c) ∫ a ln( xy)dx
0
>> int(a*log(x*y),x,0,1)
Ans = a*log(y)-a
1 3
d) ∫ ∫
0 2
a ln( xy)dxdy
>> int(int(a*log(x*y),x,2,3),y,0,1)
Ans = -2*a*log(2)+3*a*log(3)-2*a
20
5. DINÁMICA DE SISTEMAS
5.1. SISTEMAS
1
5.2 MODELO MATEMÁTICO
2
simples. El modelo así obtenido se conoce como Modelo de Caja Blanca, o
Modelo Interno
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:
dnx dx d mu du
a n n + ... + a1 + a 0 x(t ) = bm m + ... + b1 + b0 u (t )
dt dt dt dt
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:
•
x•1 a11 a12 a13 x1 (t ) x1 (k + 1) a11 a12 a13 x1 (k )
x = a a 22 a 23 x 2 (t ) x (k + 1) = a a 22 a 23 x 2 (k )
•2 21 2 21
x3 a31 a 32 a33 x3 (t ) x (k + 1) a31 a 32 a33 x3 (k )
3
3
5.3 SISTEMA MECÁNICO
Leyes de Modelo:
dx d2 x
FK = Kx , FB = B , F = ma = m 2
dt dt
Ecuación dinámica:
d2 x dx dx
m 2 + B( o - i ) + K(x 0 - x i ) = 0
dt dt dt
Ecuación diferencial:
d 2 x0 dx dx
m 2 + B o + Kx 0 = B i + Kx i
dt dt dt
ei = Voltaje de entrada
4
eo = Voltaje de salida
R = Resistencia
L = Inductancia
C = Capacitancia
di 1 1
+ Ri + ∫ idt = e i ,
C∫
(1) L (2) idt = e o
dt C
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
dh dh h
(1) C = qi − qo , (2) RC + h = Rqi , qo =
dt dt R
5
5.6 SISTEMA TÉRMICO
dθ dθ θ
(1) C = hi − ho , (2) RC + θ = Rhi , ho =
dt dt R
6
6. TRANSFORMADA DE LAPLACE
∞
L [f(t)]= ∫0 f (t )e − st dt
∞
− st − Ae − st ∞ A
L [f(t)] = ∫0 Ae dt =
s 0
=
s
= F ( s)
∞
∞ A A
L [f(t)] = ∫0 Ate dt = ∫ e −st = 2 = F ( s)
− st
s 0 s
∞
∞ A
L [f(t)] = ∫0 Ae e dt = A∫ e −( a + s )t =
− at − st
= F (s)
0
s+a
∞
∞ Aw
L [f(t)] = ∫0 Asen( wt )e dt = A∫ sen( wt )e −st =
− st
= F ( s)
0
s + w2
2
7
6.5 DERIVACIÓN
d2
L dt 2 f (t ) = s 2 F (s) − sf (0) − f ' (0)
d
y f (0) = f (t ) cuando t = 0
'
Donde f(0) = f(t) cuando t = 0,
dt
6.6 INTEGRACIÓN
F ( s)
L ∫0 f (t )dt =
t
>> laplace(f(t))
Ejemplos:
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
8
ans =
3/(s+2)-2/(s-5)
Q( s ) r1 r2
F ( s) = = + + ..... + K
P( s) s − p1 s − p 2
[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:
s+2
F ( s) =
s 2 + 2s + 2
>> 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=
[]
9
Las fracciones parciales son:
Q( s ) r1 r2 rn
F ( s) = = + n −1
+ ..... + +K
P( s ) n
( s − p1) n
( s − p 2) ( s − pn)
Ejemplo:
s+2 s+2
F ( s) = =
s + 2s + 1 ( s + 1) 2
2
>> num = [1 2] ;
>> den = [1 2 1];
>> [r,p,k]=residue(num,den)
% r = [1 1 ], p = [-1 -1], k = [ ]
1 1
F ( s) = +
(s + 1) 2
(s + 1)
Ejemplo:
d2y dy
2
+ 3 + 2 y(t ) = 5, condiciones iniciales y(0) = -1, y ' (o) = 2
dt dt
10
b) Despejando Y(s),
− s2 − s + 5 − s2 − s + 5
Y ( s) = =
s( s 2 + 3s + 2) s( s + 1)(s + 2)
1.5 5 2.5
Y (s) = − +
s + 2 s +1 s
11
7. FUNCIÓN DE TRANSFERENCIA
sistema
Y ( s ) b0 + b1 s + ... + bm s m
G (s) = =
X ( s) a 0 + a1 s + ...a n s n
En Matlab:
Ejemplo:
d 2θ
Ecuación diferencial: T (t ) = J
dt 2
θ ( s) 1
Función de transferencia: G ( s ) = =
T (s) Js 2
12
7.1 DIAGRAMA EN BLOQUES
ei i C eo
b) Para la resistencia
e − eo
e R = Ri, i = i
R
para el condensador
1
C∫
eo = idt
c)Transformada de Laplace
Ei ( s) − E o ( s)
I ( s) = ,
R
1
Eo (s) = I (s)
sC
d) Estructura
Ei(s) – Eo(s)
I(s)
+
1/R 1/sC
Ei(s) - Eo(s)
13
7.2 TIPOS DE ESTRUCTURAS
G(s)
G(s) = G1(s)*G2(s)*G3(s)
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)
+
G1(s) Y(s)
X(s)
+
G1(s) +
G1(s)
G(s) = G1(s)+G2(s)+G3(s)
14
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)
E(s)
+
G(s)
C(s)
R(s) - B(s)
Realimentación
H(s)
B(s)
Gla = = G (s) * H (s)
E ( s)
C (s) G( s) * E ( s)
Glc = = , donde, E(s) = R(s) - B(s) = R(s) - C(s) * H(s)
R( s) R(s)
Reemplazando,
C ( s) G(s)
Glc = = ,
R(s) 1 + G (s) H ( s)
Caso especial:
E(s)
+
G(s)
C(s)
R(s) - B(s)
Realimentación
C (s) G( s)
Gla = G ( s ), Glc = = , H(s) = 1
R( s) 1 + G (s)
15
Matlab:
Ejemplo:
C (s)
G( s) =
R( s)
G1=tf(1,[1 4])
H1=tf(1,[1 0])
% Realimentación de G1 y H1
Glc1=feedback(G1,H1)
s
Respuesta: Glc1 = 2
s + 4s + 1
% Estructura serie
G2=tf(1,[1 2])
G4=Glc1*G2
s
Respuesta: G4 =
s + 6s + 9s + 2
3 2
% Segunda realimentación
H2=1/2
Glc2=feedback(G4,H2)
s
Respuesta: Glc 2 =
s + 6 s + 9 .5 s + 2
3 2
16
% Segunda estructura serie
G3=tf(1,[1 0])
G5=Glc2*G3
s
Respuesta: G5 =
s + 6 s + 9 .5 s 2 + 2 s
4 3
% Tercera realimentación
Glc=feedback(G5,1)
s
Respuesta: Glc =
s + 6 s + 9.5s 2 + 3s
4 3
7.3 ESTABILIDAD
s 4 + 6 s 3 + 9.5s 2 + 3s = 0
s 2 + 3s + 2
G( s) =
s 3 + 6 s 2 + 5s + 1
Matlab:
17
>> 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,
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:
Ejemplo:
s 2 + 3s + 2
Glc( s ) =
s 3 + 6 s 2 + 5s + 6
Matlab:
18
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.
>> step(Glc)
19
7.3.5 ERROR DE ESTADO ESTACIONARIO
lim
Ess = 1 − Glc = 1 − valor final
s→0
Ejemplo:
lim s 2 + 3s + 2
Ess = 1 − = 1 − 0.333 = 0.666
s → 0 s 3 + 6 s 2 + 5s + 6
Ejemplo:
s 2 + 3s + 6
Para: Glc =
s 3 + 6 s 2 + 5s + 6
lim s 2 + 3s + 6
Ess = 1 − = 1−1 = 0
s → 0 s 3 + 6 s 2 + 5s + 6
20
8. SIMULINK
8.1 INTRODUCCIÓN
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:
21
8.3 SISTEMAS DE CONTROL
22
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
23
(1) Leyes de Newton
24
8.5 EXTRAER MODELO LINEAL
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í:
25
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:
26
MATLAB APLICADO A INGENIERÍA 1
9. PROGRAMACIÓN
9.1 SUBSISTEMAS
% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_abierto = tf(num, den)
Respuesta:
MATLAB APLICADO A INGENIERÍA 2
% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_cerrado= tf(num, den)
Respuesta:
Respuesta:
Ejemplo:
d2y dy
2
+ 3 + 6 y = 4t ⇒ y ' '+3 y '+6 y = 4t ⇒ y ' ' = 4t − 3 y '−6 y
dt dt
Diagrama Simulink:
Respuestas:
MATLAB APLICADO A INGENIERÍA 4
Ejemplo:
DE MATLAB A SIMULINK
>> 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
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:
Ejercicio2:
dh
A = q (t ) − K h
dt
MATLAB APLICADO A INGENIERÍA 8
Diagrama Simulink:
Ecuaciones:
d 2h βi 2 di
(1) m = mg − (2) L = V − iR
dt 2 h dt
Valores:
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
dVol dh
=A = bV − a h
dt dt
Diagrama simulink:
MATLAB APLICADO A INGENIERÍA 12
Controlador:
Planta:
Ecuaciones:
Condiciones iniciales:
Ecuación:
Valores:
Diagrama simulink:
MATLAB APLICADO A INGENIERÍA 16
9.6.1 FUNCTION
Ejemplo:
En la ventana de edición:
function p = fun1(x)
% Definición de una función simple
p = x^3 – 2*x+cos(x)
>> fun1(3*pi/2)
ans=
95.2214
Ejemplo:
radical = sqrt(b^2-4*a*c);
x1= (-b+radical) / (2*a);
x2= (-b-radical) / (2*a);
el archivo es cuadratica.m
>> [x1,x2]=cuadratica(1,2,3)
x1 =
-1.0000 + 1.4142i
x2 =
-1.0000 - 1.4142i
MATLAB APLICADO A INGENIERÍA 18
fval:
feval(‘F’,arg1,arg2,…)
Evalúa la función F (archivo F.m) en los argumentos especificados arg1, arg2, …..
Ejemplo:
o también:
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:
9.6.3 FOR
MATLAB APLICADO A INGENIERÍA 19
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:
suma=0;
for i=1:2:100
suma=suma+i;
end
disp('El resultado es: ')
display(suma)
Ejemplo:
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:
Ejemplo:
Gz=tf(1,[0.4 0.3]);
Gzc=zpk(1,[-1 0.2],0.5);
SIGA=1;
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
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=
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:
Operadores lógicos:
& AND
⏐ OR
∼ NOT
xor XOR
Ejemplo:
disp(' ')
disp('Desaprobado')
end
% Otra forma
Ejemplo:
9.6.6 SWITCH
switch expresión
MATLAB APLICADO A INGENIERÍA 24
case expresión1
bloque1
case expresión2
bloque2
.........................
otherwise
bloque3
Ejemplo:
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
9.6.8 DISP
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
Ecuaciones dinámicas:
dv1
f (t ) = m1 + k ∫ (v1 − v 2)dt
dt
dv 2
0 = m2 + k ∫ (v 2 − v1) dt + bv 2
dt
Ecuaciones de Laplace:
V1 − V 2
F ( s ) = m1sV 1 + k
s
V 2 − V1
0 = m 2 sV 2 + k + bV 2
s
F V1 − V 2
V1 = −k
m1s m1s 2
V1 − V 2
V 2(m2 s + b) = k
s
Programa en Simulink:
MATLAB APLICADO A INGENIERÍA 27
Programa:
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
Ecuación dinámica:
dc(t )
V = Fci (t ) − Fc(t ) − KVc(t )
dt
dc(t )
V = Fci (t ) − ( F + KV )c(t )
dt
V dc(t ) F
+ c(t ) = ci (t )
F + KV dt F + KV
Constante de tiempo:
MATLAB APLICADO A INGENIERÍA 29
V
τ =
F + KV
F
Ke =
F + KV
0 = Fci(0)-Fc(0)-KVc(0)
Programa en Matlab:
% 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
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
Parámetros:
Ecuaciones dinámicas:
dv1
f (t ) = m1 + k1∫ (v1 − v 2)dt + (v1 − v 2)b1
dt
dv 2
0 = m2 + k1∫ (v 2 − v1)dt + (v 2 − v1)b1 + k 2∫ v 2dt + b2v 2
dt
Ecuaciones de Laplace:
K1
F ( s) = m1sV 1 + (V 1 − V 2) + (V 1 − V 2)b1
s
k1 k2
0 = m2sV 2 + (V 2 − V 1) + (V 2 − V 1)b1 + V 2 + b2V 2
s s
1 ⎡ k1 ⎤ 1 ⎡ k1 + b1s ⎤
V1 = ⎢ F ( s) − (V 1 − V 2)( + b1)⎥ = ⎢ F − (V 1 − V 2)( )⎥
m1s ⎣ s ⎦ m1s ⎣ s ⎦
1
GUIDE – MATLAB
INTRODUCCIÓN
Inicio
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
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
set(handles.kelvin,'string',kelvin1);
Ejemplo: ConvTemperatura.fig
% 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);
% 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);
% 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);
Ejemplo: Grafica1.fig
8
% 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
% 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
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
textString=get(handles.Res,'String');
textString=strcat(textString,'1');
set(handles.Res,'String',textString)
Ejemplo: Paralelogramo.fig
14
15
set(handles.Ang4,'string',angulo);
longitud=num2str(d);
set(handles.Long4,'string',longitud);
Ejemplo: ClaculoMasa.fig
17
% --------------------------------------------------------------------
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;
Ejemplo: FigPopupmenu
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
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: Listbox.fig
Comandos utilizados:
find_System('Type','Nombre_simulink')
open_system(‘Nombre_simulink’)
set_param(‘Nombre_simulink/’Nombre_bloque’)
PROGRAMA EN SIMULINK:
PROGRAMA EN GUIDE:
31
PROGRAMA EN MATLAB:
%--------------------------------------------------------------
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
%---------------------------------------------------------------
%-------------------------------------------------------------------
f=get(hObject,'string');
set_param('simu/Signal Generator','Frequency',f);
set_param('Simulationcommand','Start');
%-------------------------------------------------------------------
33
música.mdl
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
Ejemplo: ActiveX
Circulo.m
%--------------------------------------
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);