Está en la página 1de 115

TUTORIAL DE MATLAB APLICADO

Por: Jorge Antonio Polana Puentes


INTRODUCCIN

La integracin de las Tecnologas de Informacin y comunicacin (TIC) en las


asignaturas de un currculo 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 compresin y el aprendizaje en reas como las matemticas,
fsica, estadstica, finanzas, etc. La simulacin permite probar, analizar y descubrir
cmo funciona o cmo se comporta un fenmeno.

Matlab es un programa interactivo de clculo numrico y de visualizacin de datos


basado en software de matrices, en un entorno de desarrollo totalmente integrado
y orientado a proyectos que requieren un elevado clculo numrico y visualizacin
grfica.

En las universidades Matlab se ha convertido en una herramienta bsica 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 grfico
interactivo con el que se puede analizar, modelar y simular sistemas.

1. VARIABLES Y FUNCIONES

1.1 OPERADORES

Una variable se crea por asignacin. Los operadores bsicos son:

x +y Suma
xy Diferencia
x*y Producto
x/y Divisin
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:

EXPRESIN MATLAB SIGNIFICADO


a y b son el primero y ltimo
Vector = [a : b] elemento. Los elementos intermedios
se diferencian en una unidad
a y b son el primero y ltimo
Vector = [a : s : b] elemento. Los elementos intermedios
se diferencian en la cantidad s
a y b son el primero y ltimo
Vector = linespace[a,b,n] elemento. Hay n elementos
uniformemente espaciados entre s
a y b son el primero y ltimo
Vector = logspace[a,b,n] elemento. Hay n elementos
logartmicamente 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
Define una submatriz formada por las
filas que hay entre la a-sima y la b-
A(a:b,c:d)
sima y por las columnas que hay
entre la c-sima y la d-sima
Submatriz formada por las filas de A y
A(:,c:d) las columnas que hay entre la c-sima
y d-sima
Submatriz formada por las columnas
A(a:b,:) de A y las filas que hay entre la a-
sima y b-sima
Devuelve el tamo u orden de la
size(A)
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 TRIGONOMTRICAS
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 HIPERBLICAS
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 LOGARTMICAS
exp(x) Funcin exponencial base e
log10(x) Logaritmo decimal

4
log(x) Logaritmo natural
sqrt(x) Raz cuadrada
abs(x) Valor absoluto
NMEROS COMPLEJOS
abs(z) Mdulo 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

x 2 + 2 x 5
a) y = e 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 = log 3 x + 5 + ln(x2)
>> y = log10(x + 5)^(1/3) + log(x^2)

d) Para el nmero complejo z = 4.5 + j 5.6 hallar el mdulo y argumento


>> z = 4.5 + 5.6i
>> mag = abs(z) % mdulo
>> 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:

Da los coeficientes del polinomio P


p = poly(r)
cuyas races son el vector r
y = polyval(p,x) Evala el polinomio p en el valor de x
r = roots(c) Encuentra las races del polinomio c
Polinomio de orden n que ajusta los
p = polyfit(x,y,n)
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 races 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 ms se ajusta es 3x2 + x + 2

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

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
2 4 1
g) Calcular el determinante de la matriz: 3 2 5

1 3 6

>> A = [2 4 -1;3 -2 5;-1 3 6];


>> d = det(A)

% d = -153

7
3. REPRESENTACIN GRFICA
Matlab ofrece diversas formas de representacin grfica.

COMANDO MATLAB DESCRIPCIN


bar(y) Grfica de barras relativo al vector y
bar(x,y) Grfica de barras al vector y; x define el eje x
barh(.) Grfica 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 funcin de x
plot(x,y,bo) Grafica y en funcin de x on color y caracter
fplot(f,[x1 x2],y*) Grafica funcin f entre x1 y x2
fplot([f1,f2,..],[x1 x2]) Grafica las funciones en el intervalo dado
tittle(texto) Ttulo de la grfica
xlabel(texto), ylabel(texto) Rtulos en el eje x y en el eje y
grid Pone rejilla en la grfica
axis([x1 x2 y1 y2]) Define lmite de los ejes
legend(rotulo1,rotulo2,.) Coloca legenda en la grfica
text(x,y,texto) Coloca texto en coordenadas (x,y)
subplot(m,n,p) Subgrficas de m filas, n columnas

Ejemplos:

a) >> y=[1 2 3 8 2 1 4 6];


>> bar(y)

b) grfico de barras para la funcin y = e x*x cuando x vara de -3 a 3


>> 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 edicin 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('Grfico senoidal y logartmico')

Copie y pegue en la ventana de comando y ejecute, se obtendr la grfica:

Ejemplos:

a) Graficar en dos subgrficas 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 subgrficas 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 subgrficas 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. CLCULO NUMRICO

4.1 Lmites

OPERACIN MATEMTICA COMANDO MATLAB


Lim f (x) limit(f,x,0)
x0
Lim f (x) limit (f, x, a) o
xa limit (f, a)
Lim f (x) limit (f,x,a, left)
x a-
Lim f (x) limit (f,x,a, right)
+
xa

Ejemplos:

lim f ( x + h) f ( x)
a) Hallar f (x) = si f(x) = cos(x)
h0 h

syms h n x
limit ((cos( x + h) cos( x)) / h, h,0 )

ans =
-sin(x)

lim 3 + 2n 4
b) Hallar el lmite de la sucesin:
n 7 + 3n

>> limit (((2*n-3)/(3*n-7))^4, inf)

ans =
16/81

lim x
c) Hallar
x 0 x

>> limit (x / abs ( x), x,0,`left `)

ans = -1

15
lim x
d) Hallar
x 0+ x

>> limit (x / abs( x), x,0,`right `)


ans = 1

e) >> limit (x / abs( x), x,0)


ans =
NaN (not number)
(no existe)

Ejemplos:

Hallar el lmite de las funciones:

lim x 2 + x
a) ,
x 2 3 + 1 + 4x

lim sen[(ax)] 2
b)
x0 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

OPERACIN MATEMTICA COMANDO MATLAB


f diff(x) o diff(f,x)
x
f diff(f,t)
t
n f diff(f,b,n)
b n

16
Ejemplos:

a) Hallar la derivada con respecto a x de f(x) = sen(5x)

>> 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)

En estos ejemplos, Matlab simplifica, en otros casos, se debe usar el comando:


simplify

Para una constante tambin se debe definir como simblica:

Ejemplo: diff (5)


ans = [ ]

c = sym(5)

diff(c)
ans = 0

Ejemplos:

f
a) Hallar la derivada de la funcin 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

d) Hallar la derivada con respecto a x de: f = x n

>> 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)
xy

>> 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

OPERACIN MATEMTICA COMANDO MATLAB


f dx int (f) integral indefinida o
int (f,x)
b int (f,x,a,b) integral definida o
f ( x)dx
a int (f,a,b)
f ( x)dx Int(int(f,x)) Integral doble

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

>> 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
exp( x ^ 2)dx

>> int (exp(-x^2), x , 0, inf)


ans =1/2 pi^(1/2)



ax 2
f) e dx

>> syms a positive


>> syms x
>> f = exp (-a x ^ 2);
>> int (f,x,-inf,inf)
ans = 1/a^(1/2) pi ^ (1/2)

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. DINMICA DE SISTEMAS

5.1. SISTEMAS

Un sistema es una combinacin de componentes que actan conjuntamente


para alcanzar un objetivo especfico. Un sistema es dinmico cuando la salida
presente depende de las entradas pasadas y es esttico cuando la salida
presente depende solamente de las entradas presentes.

Los componentes bsicos 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 energa, recursos e informacin que
necesita el sistema para su funcionamiento y que importa del ambiente
e) Salidas. Son los productos o resultados que se construye a travs 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 hidrulico en lazo abierto y cerrado son los siguientes:

1
5.2 MODELO MATEMTICO

Es la descripcin matemtica que predice el funcionamiento del sistema. En los


sistemas fsicos el modelo matemtico se describe por ecuaciones
diferenciales. Los sistemas lineales se modelan con ecuaciones diferenciales
lineales y son aquellos que se les aplica el principio de superposicin, esto es,
la respuesta de un sistema a varias entradas simultneas es la suma de las
respuestas individuales.

Para elaborar un modelo:

a) Se debe dibujar un diagrama esquemtico del sistema y definir las


variables.
b) Escribir las ecuaciones utilizando las leyes fsicas de cada componente,
combinndolos de acuerdo al diagrama y obtener el modelo matemtico
c) Verificar la validez del modelo comparando la prediccin de las
ecuaciones del modelo con los resultados experimentales. El modelo se
debe ajustar hasta que haya una buena concordancia entre lo terico y
lo prctico.

En general, la construccin de modelos se basa en la observacin del sistema.


Existen algunos caminos bsicos para obtener un modelo:

Modelamiento de Sistemas: Esta estrategia consiste en descomponer


(abstractamente) el sistema en subsistemas ms 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 descripcin desde adentro del sistema,


generalmente basada en el conocimiento de las leyes que rigen los sistemas

2
simples. El modelo as obtenido se conoce como Modelo de Caja Blanca, o
Modelo Interno

Identificacin de Sistemas: Esta estrategia consiste en acumular un nmero


suficiente de observaciones sobre las seales de entrada y salida del sistema,
con el propsito 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 hbrida: Existe una tercera estrategia, que realmente es una


combinacin 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 informacin 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 ecuacin 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 ecuacin de diferencias finitas ordinaria de coeficientes
constantes:

a n x(k + n) + ... + a1 x (k + 1) + a 0 x (k ) = bm u ( k + n) + ... + b1u (k + 1) + b0 u (k )

u(t) SISTEMA u(k) SISTEMA


x(t) x(k)

SISTEMA CONTINUO SISTEMA DISCRETO

Otro tipo de ecuaciones diferenciales que se emplearn relacionan vectores de


variables mediante matrices.


x1 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 MECNICO

Es el sistema de amortiguacin de un automvil, donde:


B es el coeficiente de amortiguacin que depende de la velocidad (v)
K es la constante del resorte que depende de la elongacin (x)
x0 = Posicin inicial
xi = Posicin final

Leyes de Modelo:

dx d2 x
FK = Kx , FB = B , F = ma = m 2
dt dt

Ecuacin dinmica:

d2 x dx dx
m 2 + B( o - i ) + K(x 0 - x i ) = 0
dt dt dt
Ecuacin diferencial:

d 2 x0 dx dx
m 2 + B o + Kx 0 = B i + Kx i
dt dt dt

5.4 SISTEMA ELCTRICO

Las variables del sistema son:

ei = Voltaje de entrada

4
eo = Voltaje de salida
R = Resistencia
L = Inductancia
C = Capacitancia

Ecuacin dinmica (Ecuacin diferencial):

di 1 1
+ Ri + idt = e i ,
C
(1) L (2) idt = e o
dt C

5.5 SISTEMA HIDRULICO

Variables del sistema:

Q = Caudal estable
qi = Variacin del caudal de entrada
qo = Variacin del caudal de salida
H = Altura estable
h = Variacin de la altura
C = Capacitancia del tanque
R = Resistencia hidrulica

Ecuaciones dinmicas (Ecuacin diferencial):

dh dh h
(1) C = qi qo , (2) RC + h = Rqi , qo =
dt dt R

5
5.6 SISTEMA TRMICO

Variables del sistema:

H = Entrada de calor en estado estable


h = Cambio de calor
= Temperatura

Ecuacin dinmica (Ecuacin diferencial):

d d
(1) C = hi ho , (2) RC + = Rhi , ho =
dt dt R

6
6. TRANSFORMADA DE LAPLACE

Es un mtodo operativo que resuelve ecuaciones diferenciales convirtindolas


en ecuaciones algebraicas. Permite predecir el comportamiento de un sistema
sin necesidad de resolver las ecuaciones diferenciales del sistema.

Sea f(t) un funcin en el tiempo,


La Transformada de Laplace de f(t) es:


L [f(t)]= 0 f (t )e st dt

6.1 FUNCIN ESCALN


f(t) = A, para t > 0 y f(t) = 0, para t < 0


st Ae st A
L [f(t)] = 0 Ae dt =
s 0
=
s
= F ( s)

6.2 FUNCIN RAMPA


f(t) = At, para t > 0 y f(t) = 0, para t < 0


A A
L [f(t)] = 0 Ate dt = e st = 2 = F ( s)
st

s 0 s

6.3 FUNCIN EXPONENCIAL


-at
f(t) = Ae , para t > 0 y f(t) = 0, para t < 0


A
L [f(t)] = 0 Ae e dt = A e ( a + s )t =
at st
= F (s)
0
s+a

6.4 FUNCIN SENOIDAL

f(t) = Asen(wt), para t > 0 y f(t) = 0, para t < 0


Aw
L [f(t)] = 0 Asen( wt )e dt = A sen( wt )e st =
st
= F ( s)
0
s + w2
2

7
6.5 DERIVACIN

L dt f (t ) = sF (s) f (0)
d

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 INTEGRACIN

F ( s)
L 0 f (t )dt =
t

6.7 COMANDO MATLAB


Para calcular la Transformada de Laplace de una funcin 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))

8
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 ms general de encontrar la transformada inversa es
descomponer la funcin F(s) en fracciones parciales y luego aplicar su inversa
a cada trmino.

Q( s ) r1 r2
F ( s) = = + + ..... + K
P( s) s p1 s p 2

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:

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:

0.5 0.5i 0.5 + 0.5i


F ( s) = +
s +1 i s +1+ i
Si el denominador es de la forma P(s)n, entonces:

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)

6.9 SOLUCIN DE ECUACIONES DIFERENCIALES


Para resolver o solucionar una ecuacin diferencial:

a) Se aplica transformada de Laplace a la ecuacin


b) Se despeja F(s)
c) Se halla la transformada inversa

Ejemplo:

Resolver la ecuacin diferencial:

d2y dy
2
+ 3 + 2 y(t ) = 5, condiciones iniciales y(0) = -1, y ' (o) = 2
dt dt

a) Aplicamos transformada de Laplace:

s 2Y ( s) sy(0) y ' (0) + 3sY ( s) 3 y(o) + 2Y ( s) = 5 / s,

Reemplazando los valores de y(0) y y (0), se tiene:

10
b) Despejando Y(s),

s2 s + 5 s2 s + 5
Y ( s) = =
s( s 2 + 3s + 2) s( s + 1)(s + 2)

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 = [ ]

1.5 5 2.5
Y (s) = +
s + 2 s +1 s

La transformada inversa es:

y(t ) = 1.5e 2t 5e t + 2.5

11
7. FUNCIN DE TRANSFERENCIA

La funcin de transferencia de un sistema descrito mediante una ecuacin


diferencial, se define como el cociente de la Transformada de Laplace de la
salida y la Transformada de Laplace de la entrada.

El mtodo para encontrar la funcin de transferencia de un sistema es el


siguiente:

a) Escribir la ecuacin diferencial del sistema


b) Aplicar la Transformada de Laplace de la ecuacin diferencial con
condiciones iniciales cero
c) Sacar el cociente entre la variable de salida y la entrada

X(s) G(s) Y(s)

sistema

Y ( s ) b0 + b1 s + ... + bm s m
G (s) = =
X ( s) a 0 + a1 s + ...a n s n

En Matlab:

>> num = [bo b1 b2 .... bm];


>> den = [ao a1 a2 .... an];
>> Gs = tf(num,den)

Ejemplo:

Para el torque que produce un motor elctrico (parte mecnica):

T= torque (variable de entrada)


= ngulo de giro (variable de salida)
J = Inercia

d 2
Ecuacin diferencial: T (t ) = J
dt 2

Transformada de Laplace: T(s) = Js2(s)

( s) 1
Funcin de transferencia: G ( s ) = =
T (s) Js 2

12
7.1 DIAGRAMA EN BLOQUES

La estructura de un sistema se representa por un diagrama en bloques segn


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

ei i C eo

a) Entrada: ei, salida: 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

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

G1(s) G2(s) G3(s)


X(s) Y(s)

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
tambin puede ser:
Gs = series(G1,G2,G3)

7.2.2 ESTRUCTURA PARALELA

+
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
tambin puede ser :
Gs = parallel(G1,G2,G3)

7.2.3 ESTRUCTURA REALIMENTADA

E(s)
+
G(s)
C(s)
R(s) - B(s)
Realimentacin
H(s)

a) Funcin de transferencia en lazo abierto: Gla

B(s)
Gla = = G (s) * H (s)
E ( s)

b) Funcin de transferencia en lazo cerrado: Glc

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 ) * [ R( s ) C ( s ) H ( s )] = G(s) * R(s) - G(s) * H(s)C(s)

C ( s) G(s)
Glc = = ,
R(s) 1 + G (s) H ( s)

Caso especial:
E(s)
+
G(s)
C(s)
R(s) - B(s)
Realimentacin

C (s) G( s)
Gla = G ( s ), Glc = = , H(s) = 1
R( s) 1 + G (s)

15
Matlab:

>> Gla = Gs*Hs


>> Glc = feedback(Gs,Hs)

Ejemplo:

Obtener la funcin de transferencia del sistema por Matlab:

C (s)
G( s) =
R( s)

% Este es un programa realizado en Matlab


% para obtener la funcin de transferencia del sistema

G1=tf(1,[1 4])
H1=tf(1,[1 0])

% Realimentacin 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 realimentacin
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 realimentacin
Glc=feedback(G5,1)

s
Respuesta: Glc =
s + 6 s + 9.5s 2 + 3s
4 3

7.3 ESTABILIDAD

7.3.1 ECUACIN CARACTERSTICA

La ecuacin caracterstica de un sistema es el denominador de la funcin de


transferencia del sistema igualado a cero.

Para el ejemplo anterior, la ecuacin caracterstica es igual a:

s 4 + 6 s 3 + 9.5s 2 + 3s = 0

7.3.2 POLOS Y CEROS DE UN SISTEMA

Los polos de un sistema son las races de la ecuacin caracterstica del


sistema, esto es, las races del denominador de la funcin de transferencia del
sistema.

Los ceros de un sistema son las races del numerador de la funcin de


transferencia del sistema.

Para la funcin de transferencia:

s 2 + 3s + 2
G( s) =
s 3 + 6 s 2 + 5s + 1

Los polos y ceros son:

Matlab:

>> num=[1 3 2];


>> ceros=roots(num)
% ceros = -2, -1

17
>> den=[1 6 5 1];
>> polos=roots(den)
% polos = -5.0489, -0.6431, -0.3080

En Matlab existen dos comandos ms utilizados para el clculo de los polos y


ceros de un sistema que se obtienen directamente de la funcin 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 grfica de polos y ceros (eje x los reales, eje y los imaginarios)
de la funcin de transferencia en lazo cerrado:

a) El sistema es estable cuando los polos estn en el semiplano izquierdo


b) el sistema es inestable si por lo menos un polo est en el semiplano
derecho
c) Es crticamente estable cuando los polos estn en el eje imaginario
d) Los ceros no intervienen en la estabilidad y por tanto no importa su
ubicacin

Ejemplo:

La funcin de transferencia en lazo cerrado de un sistema es:

s 2 + 3s + 2
Glc( s ) =
s 3 + 6 s 2 + 5s + 6

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,

18
El sistema tiene tres polos: un polo real y dos polos complejos conjugados.
Como todos los polos estn 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 funcin
escaln unitaria. Tambin se conoce como respuesta al paso unitario.

Para el ejemplo anterior la respuesta al paso unitario se obtiene adicionando la


instruccin:

>> step(Glc)

Esta respuesta tiene como caracterstica importante la amplitud de pico, el


sobreimpulso (overshoot) y el tiempo de establecimiento (setting time).

19
7.3.5 ERROR DE ESTADO ESTACIONARIO

El error de estado estacionario o estado estable. es igual a:

lim
Ess = 1 Glc = 1 valor final
s0

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 = 11 = 0
s 0 s 3 + 6 s 2 + 5s + 6

20
8. SIMULINK

8.1 INTRODUCCIN

Simulink es una extensin de Matlab utilizado en el modelamiento y simulacin


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 botn 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 extensin *.mdl

8.2 ELEMENTOS BSICOS

Los elementos bsicos son lneas y bloques. Los bloques estn agrupados en:
Sources, Links, Discrete, Continuos, Math, etc., tal como aparecen en la
ventana anterior. Cada bloque tiene entradas y salida para realizar su
interconexin. 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
funcin 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 funcin 1/(z2 +2z +4) con tiempo de muestreo de 1 seg, quedara:

21
8.3 SISTEMAS DE CONTROL

Realizar el diagrama en bloques del siguiente sistema de control:

Lo primero es arrastrar los bloques a la pgina en blanco de forma que, Step


es la funcin paso o escaln 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 parmetros o valores e interconctelos.

Lo segundo es cambiar los nombres a los bloques y asignar las variables o


seales haciendo doble clic en el lugar en que se van a colocar y salvar el
modelo especificndole un nombre, por ejemplo ejem1.mdl

22
Por ltimo se debe simular el sistema. Para ello se configura la seal de
entrada, en este caso la funcin paso. Dar doble clic y asignar los siguientes
parmetros: 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 adems 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 iniciacin del paso. Para observar mejor la

respuesta se usa el botn Autoscale (binoculares ) de la ventana del


Scope. Si quiere observar mejor la respuesta o parte de ella se pueden cambiar
los parmetros de simulacin, Simulation Simulation parameters. Por ejemplo
cambiar el Start time y el Stop time y correr nuevamente la simulacin.

8.4 MODELANDO UN MOTOR DC

Un actuador comn 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 DINMICAS

El circuito elctrico de la armadura y el diagrama de cuerpo libre del rotor es


mostrado en la figura con sus ecuaciones dinmicas.

23
(1) Leyes de Newton

(2) Leyes de Kirchhoffs

Los parmetros fsicos tienen los siguiente valores :

Momento de inercia del rotor : J = 0.01kg.m2/sg2


Rata de amortiguamiento del sistema mecnico: b = 0.1 N.m.sg
Constante de la fuerza electromotriz: Ke = Kt = 0.01 Nm/Amp
Resistencia elctrica: R = 1 ohm
Inductancia elctrica: L =0.5H
Fuente de voltaje de entrada: V
Posicin angular:
Se asume que el rotor y el eje son rgidos

8.4.2 MODELADO DEL MOTOR EN VELOCIDAD

24
8.5 EXTRAER MODELO LINEAL

Para obtener la funcin de transferencia del motor primero se trasladan los


parmetros del motor al modelo creando un archivo en Matlab (*.m) de la
siguiente forma:

% VALORES DE LOS PARMETROS 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 parmetros de simulacin: Stop
time = 3 sg. Arranque la simulacin 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 cmbielo por Out obtenido de la librera de
Signals&Systems. Haga lo mismo para Step cambindolo por In de esta misma
librera. Los bloques In y Out definen la entrada y salida del sistema que le
gustara extraer. Salve este modelo. El sistema quedar as:

25
Como tercero y ltimo paso, despus 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 :

26
MATLAB APLICADO A INGENIERA 1

9. PROGRAMACIN
9.1 SUBSISTEMAS

Abra una nueva ventana y arrastre de la librera Signals&Systems el bloque


SubSystem , haga doble clic en este bloque, abra el modelo MotorDcVel.mdl (el
que tiene In y Out como terminales) cpielo y pguelo en la nueva ventana de
subsistema anterior. Cierre ventanas y aparece una nueva con el bloque con los
terminales del subsistema creado. Dle el nombre MotorDcVel. Si a este bloque
de subsistema se le da doble clic aparece el modelo completo diseado
anteriormente. Otra forma es sealar los bloques de inters, 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 funcin 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 INGENIERA 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 INGENIERA 3

Respuesta:

9.3 SOLUCIN DE ECUACIONES DIFERENCIALES

Ejemplo:

Resolver la siguiente ecuacin diferencial:

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 INGENIERA 4

Ejemplo:

Comprobar la integracin por Simulink.


MATLAB APLICADO A INGENIERA 5

9.4 INTERCAMBIAR SEALES SIMULINK - MATLAB

DE MATLAB A SIMULINK

Para utilizar seale de Matlab a Simulink de la librers Sources se utiliza el bloque


From Workspace.

Ejemplo: Resolver la ecuacin y + y = e t, y(0) = 0, y(0) =3


MATLAB APLICADO A INGENIERA 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
condicin inicial y(0) = 3 en el integrador.

DE SIMULINK A MATLAB

Para enviar datos de Simulink a Matlab se utiliza de la librera Sinks el bloque To


Workspace.

Ejemplo:

Resolver la ecuacin: f(t) = Mx + Bx + Kx, M=1, B=1, K= 10, F(t) = 5


MATLAB APLICADO A INGENIERA 7

En Matlab:
>> plot(t,y)

9.5 EJERCICIOS

Ejercicio1:

Si la entrada es una seal senoidal, encontrar las salidas referidas a vC y iL.

Ejercicio2:

Para el siguiente problema hallar la variacin de h si el caudal normal Q es de 10


lit/min y en t=5 seg se aplica una perturbacin de 2 lit/min. El valor de K=10, A= 2
m 2.

dh
A = q (t ) K h
dt
MATLAB APLICADO A INGENIERA 8

Diagrama Simulink:

Ejercicio3: La bola magntica


MATLAB APLICADO A INGENIERA 9

Ecuaciones:

d 2h i 2 di
(1) m = mg (2) L = V iR
dt 2 h dt

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 INGENIERA 10

i(0) = 0; h(0)=0.05; h(0)=0


MATLAB APLICADO A INGENIERA 11

Ejercicio4: Tanque de agua

Ecuacin del modelo:

dVol dh
=A = bV a h
dt dt

Diagrama simulink:
MATLAB APLICADO A INGENIERA 12

Controlador:

Planta:

Ejercicio5: Movimiento parablico


MATLAB APLICADO A INGENIERA 13

Ecuaciones:

x' ' = 0 Movimiento unforme


y ' ' = g Movimiento acelerado

Condiciones iniciales:

Vo=100 m/sg; = 30
MATLAB APLICADO A INGENIERA 14
MATLAB APLICADO A INGENIERA 15

Ejercicio6: Pndulo simple

Ecuacin:

mL ' '+ BL '+ wsen = 0

Valores:

w (peso) = 2; L (longitud) = 0.6; B (amortiguacin) = 0.08;

Condiciones iniciales: (0) = -2 rad/sg; (0) = /2

Diagrama simulink:
MATLAB APLICADO A INGENIERA 16

9.6 FUNCIONES Y BUCLES


Matlab permite la ejecucin de conjuntos de comandos escritos secuencialmente
en la ventana de edicin y que son almacenados en un archivo nombre.m. Para
ejecutar un archivo basta con teclear su nombre (sin extensin) en modo
interactivo en la ventana de comando y pulsar enter. En el archivo .m se pueden
introducir textos explicativos comenzando la lnea con el smbolo %.

9.6.1 FUNCTION

El comando function permite la definicin de funciones con la siguiente sintaxis:

function parmetros_salida = nombre_funcin(parmetros_entrada)


cuerpo de la funcin

Una vez definida la funcin se guarda en un archivo nombre_funcin.m para su


posterior utilizacin. Cuando los parmetros de salida son ms que uno se sitan
entre corchetes separados por comas. Si los parmetros de entrada son ms que
uno se separan por comas.

Ejemplo:

Definir la funcin fun1(x) = x^3 -2x+cos(x)


MATLAB APLICADO A INGENIERA 17

En la ventana de edicin:

function p = fun1(x)
% Definicin de una funcin simple
p = x^3 2*x+cos(x)

La funcin se guarda en un archivo fun1.m

Podemos luego utilizar esta funcin, por ejemplo,

>> fun1(3*pi/2)
ans=
95.2214

>> help fun1


Definicin de una funcin simple

Ejemplo:

Solucin de una ecuacin 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 INGENIERA 18

fval:

La evaluacin de una funcin en sus argumentos, tambin puede realizarse con el


comando feval que tiene la siguiente sintaxis:

feval(F,arg1,arg2,)

Evala la funcin F (archivo F.m) en los argumentos especificados arg1, arg2, ..

Ejemplo:

function [x1,x2] = ecuacion2(a,b,c)


% Solucin de la ecuacin de segundo orden
d = b^2 4*a*c;
x1 = (-b + sqrt(d))/(2*a);
x2 = (-b - sqrt(d))/(2*a);

Para resolver la ecuacin x2 + 2x +3 = 0

>> [x1, x2] = feval(ecuacion2,1,2,3)

o tambin:

>> [x1, x2] = ecuacion2(1,2,3)

9.6.2 GLOBAL
Normalmente cada funcin de Matlab definida como un archivoM 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 INGENIERA 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 INGENIERA 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 condicin se ejecutan los comandos o sentencias.

while condicin
sentencias
end

Ejemplo:

Calcular los volmenes 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 INGENIERA 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 races 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 INGENIERA 22

9.6.5 IF
caso 1:

if condicin
sentencias
end

caso 2:

if condicin1
bloque1
elseif condcin2
bloque2
elseif condicin3
bloque3
else % sino cumple condiciones anteriores
bloque4
end

Operadores de relacin:

> Mayor que


>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
= No es igual a

Operadores lgicos:

& 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 INGENIERA 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 cuntas botellas se desean,
indique el precio unitario y el total del gasto.

c=input('Cuntas 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 evala una expresin 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 expresin
MATLAB APLICADO A INGENIERA 24

case expresin1
bloque1
case expresin2
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 expresin


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 INGENIERA 25

9.6.9 FIND

Para el ejemplo del movimiento del pndulo, calcular por programacin 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 MECNICO


MATLAB APLICADO A INGENIERA 26

Ecuaciones dinmicas:

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

Ecuaciones para Simulink:

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 INGENIERA 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 pequeos
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 INGENIERA 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 TERMOQUMICO

Se desarrolla una reaccin termoqumica en donde el reaccionante A se convierte


en un producto B.

Velocidad de reaccin: r(t)= k c(t)


Constante de velocidad de reaccin: k = 0,2 min-1
Concentracin 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

Ecuacin dinmica:

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 INGENIERA 29

V
=
F + KV

Ganancia de estado estacionario:

F
Ke =
F + KV

Reemplazando valores: = 2.5 min; Ke = 0.5;


Condicin inicial de la concentracin: 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 INGENIERA 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 INGENIERA 31

Ejemplo: SISTEMA MECANICO2

Parmetros:

m1=40; m2=60; k1=400; k2=400; b1=180; b2=220;


MATLAB APLICADO A INGENIERA 32

Ecuaciones dinmicas:

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

Ecuaciones para Simulink:

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

INTRODUCCIN

GUIDE es un entorno de programacin 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 instruccin en la ventana de comandos:


>> guide

b) Haciendo un click en el cono que muestra la figura:

Se presenta el siguiente cuadro de dilogo:


2

Se presentan las siguientes opciones:

a) Blank GUI (Default)

La opcin de interfaz grfica de usuario en blanco (viene predeterminada), nos


presenta un formulario nuevo, en el cual podemos disear nuestro programa.

b) GUI with Uicontrols


Esta opcin 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 opcin 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 botn de comando.
d) Modal Question Dialog
Con esta opcin se muestra en la pantalla un cuadro de dilogo comn, el cual
consta de una pequea imagen, una etiqueta y dos botones Yes y No,
dependiendo del botn 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 presentacin:


3

DESCRIPCIN DE LOS COMPONENTES:

CONTROL DESCRIPCIN
Push Button Genera una accin
Slider Representa un rango de valores
Radio Button Representa una opcin
Check Box Indica el estado de una opcin
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 accin 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 opcin Property Inspector nos permite personalizar cada elemento.


4

Al hacer click derecho en el elemento ubicado en el rea de diseo, una de las


opciones ms importantes es View Callbacks, la cual, al ejecutarla, abre el archivo
.m. asociado a nuestro diseo y nos posiciona en la parte del programa que
corresponde a la subrutina que se ejecutar cuando se realice una determinada
accin sobre el elemento que estamos editando.

FUNCIONAMIENTO DE UNA APLICACIN GUI

Una aplicacin GUIDE consta de dos archivos: .m y .fig. El archivo .m es el que


contiene el cdigo con las correspondencias de los botones de control de la
interfaz y el archivo .fig contiene los elementos grficos.

Cada vez que se adicione un nuevo elemento en la interfaz grfica, se genera


automticamente cdigo en el archivo .m. Para ejecutar una Interfaz Grfica, 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
opcin RUN.

SENTENCIAS GET Y SET

La asignacin u obtencin 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 travs 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 funcin 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 funcin 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 vrtice inicial
x(1)=0;
y(1)=0;
%Argumentos en forma matricial
lineas=[angulo1,longitud1;angulo2,longitud2;angulo3,longitud3];
%Clculo de las lneas
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 funcin 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. Ntese 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 resaltara.

1
Manual de Interfaz Grfica de Usuario en Matlab
Por: Diego Orlando Barragn 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


ningn proceso. La funcin imread lee una imagen en Matlab e imshow la
presenta.

Este programa tendr la siguiente presentacin:


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

msica.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 tambin se ha utilizado para tener el calendario, el ActiveX Control de


calendario 12.0

Compilar GUI con ActiveX

mcc -m nombregui -a nombregui_activex1

También podría gustarte