Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tutorial Mat Lab
Tutorial Mat Lab
Suma
Diferencia
Producto
Divisin
Potencia
Ejemplos:
En la ventana de comandos de Matlab, ejecutar:
>> v = 3
>> x = v + 6
>> y = v ^5 / 4
>> x = 2*3^5 + (5-3)* 8
1.2 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
Vector = [a : b]
Vector = [a : s : b]
Vector = linespace[a,b,n]
Vector = logspace[a,b,n]
SIGNIFICADO
a y b son el primero y ltimo
elemento. Los elementos intermedios
se diferencian en una unidad
a y b son el primero y ltimo
elemento. Los elementos intermedios
se diferencian en la cantidad s
a y b son el primero y ltimo
elemento.
Hay
n
elementos
uniformemente espaciados entre s
a y b son el primero y ltimo
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
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)
B = A
A(a:b,c:d)
A(:,c:d)
A(a:b,:)
size(A)
Ejemplos:
>> A(2,3)
ans =
9
>> B = A'
B=
1
3
5
4
7
9
4
2
10
>> eye(3)
ans =
1
0
0
0
1
0
0
0
1
>> C=B(:,2:3)
C=
4
7
9
4
2
10
>> D = B(1:2,:)
D=
1
3
4
7
4
2
>> size(D)
ans =
2
1.4 FUNCIONES
FUNCIONES TRIGONOMTRICAS
Directas
sin(x)
cos(x)
tan(x)
csc(x)
sec(x)
cot(x)
Inversas
asin(x)
acos(x)
atan(x)
acsc(x)
asec(x)
acot(x)
FUNCIONES HIPERBLICAS
sinh(x)
cosh(x)
tanh(x)
csch(x)
sech(x)
coth(x)
asinh(x)
acosh(x)
atanh(x)
acsch(x)
asech(x)
acoth(x)
FUNCIONES EXPONENCIALES Y LOGARTMICAS
exp(x)
log10(x)
log(x)
sqrt(x)
abs(x)
Logaritmo natural
Raz cuadrada
Valor absoluto
NMEROS COMPLEJOS
abs(z)
angle(z)
conj(z)
real(z)
imag(z)
factorial(n)
Ejemplos:
Calcular las siguientes expresiones en Matlab
a) y = e
x 2 + 2 x 5
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)
2. POLINOMIOS
Los comandos usados por Matlab para trabajar con polinomios son:
p = poly(r)
y = polyval(p,x)
r = roots(c)
p = polyfit(x,y,n)
s = solve(ecuacion1,ecuacion2)
d = det(A)
Ejemplos:
a) >> p=poly([ 2 3 4])
p=
1
-9
26 -24
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
1 x +
3x2 + x + 2
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
1 3
6
3. REPRESENTACIN GRFICA
Matlab ofrece diversas formas de representacin grfica.
COMANDO MATLAB
bar(y)
bar(x,y)
barh(.)
bar(.;color)
bar(y,estilo)
bar3(y,)
plot(x,y)
plot(x,y,bo)
fplot(f,[x1 x2],y*)
fplot([f1,f2,..],[x1 x2])
tittle(texto)
xlabel(texto), ylabel(texto)
grid
axis([x1 x2 y1 y2])
legend(rotulo1,rotulo2,.)
text(x,y,texto)
subplot(m,n,p)
DESCRIPCIN
Grfica de barras relativo al vector y
Grfica de barras al vector y; x define el eje x
Grfica de barras horizontales
Color = r, g, y, c, m, k
Estilo=grouped (agrupado), stacked (anidado)
Barras en tres dimensiones
Grafica y en funcin de x
Grafica y en funcin de x on color y caracter
Grafica funcin f entre x1 y x2
Grafica las funciones en el intervalo dado
Ttulo de la grfica
Rtulos en el eje x y en el eje y
Pone rejilla en la grfica
Define lmite de los ejes
Coloca legenda en la grfica
Coloca texto en coordenadas (x,y)
Subgrficas de m filas, n columnas
Ejemplos:
a) >> y=[1 2 3 8 2 1 4 6];
>> bar(y)
>> x = -3:0.2:3;
>> y = exp(-x.*x);
>> bar(x,y)
c) barh(x,y)
d) Ejecutar
>> bar(x,y,g)
e) y =
10
2
6
5
9
8
5
0
8
4
6
8
9
7
2
>> 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)')
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
12
13
14
4. CLCULO NUMRICO
4.1 Lmites
OPERACIN MATEMTICA
Lim f (x)
x0
Lim f (x)
limit (f, x, a)
limit (f, a)
xa
Lim f (x)
x aLim f (x)
xa
COMANDO MATLAB
limit(f,x,0)
Ejemplos:
a) Hallar f (x) =
lim f ( x + h) f ( x)
h0
h
si f(x) = cos(x)
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
c) Hallar
lim x
x 0 x
15
lim x
x 0+ x
d) Hallar
>> limit
ans =
e) >> limit
ans =
NaN (not number)
(no existe)
Ejemplos:
Hallar el lmite de las funciones:
a)
lim x 2 + x
,
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
f
x
f
t
n f
b n
COMANDO MATLAB
diff(x) o diff(f,x)
diff(f,t)
diff(f,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)
f
s
>> diff(f,s)
ans = cos(s*t)*t
17
f
t
f
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
a)
b)
f
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
t 2
d)
2 f
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
e)
2 f
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
f dx
b
f ( x)dx
f ( x)dx
f ( x, y)dxdy
f ( x, y)dxdy
a
COMANDO MATLAB
int (f) integral indefinida o
int (f,x)
int (f,x,a,b) integral definida o
int (f,a,b)
Int(int(f,x)) Integral doble
Int(int(f(x,y),x),y)
Int(int(f(x,y),x,a,b),y,c,d))
Ejemplos:
a) Hallar la integral de
x n dx
19
e)
exp( x ^ 2)dx
f) e
ax 2
dx
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
d)
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.
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:
u(t)
SISTEMA CONTINUO
x(t)
u(k)
SISTEMA
x(k)
SISTEMA DISCRETO
x1 a11
x = a
2 21
x3 a31
a12
a 22
a 32
a13 x1 (t )
a 23 x 2 (t )
a33 x3 (t )
x1 (k + 1) a11
x (k + 1) = a
2
21
x (k + 1) a31
3
a12
a 22
a 32
a13 x1 (k )
a 23 x 2 (k )
a33 x3 (k )
FK = Kx ,
dx
FB = B ,
dt
d2 x
F = ma = m 2
dt
Ecuacin dinmica:
dx dx
d2 x
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
eo = Voltaje de salida
R = Resistencia
L = Inductancia
C = Capacitancia
Ecuacin dinmica (Ecuacin diferencial):
(1) L
di
1
+ Ri + idt = e i ,
dt
C
(2)
1
idt = e o
C
(1) C
dh
= qi qo ,
dt
(2) RC
dh
+ h = Rqi ,
dt
qo =
h
R
(1) C
d
= hi ho ,
dt
(2) RC
d
+ = Rhi ,
dt
ho =
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
L [f(t)] = 0
Ae st
Ae dt =
s
st
para t < 0
A
= F ( s)
s
L [f(t)] = 0
A
A
Ate dt = e st = 2 = F ( s)
s 0
s
st
L [f(t)] = 0
at
st
Ae e dt = A e ( a + s )t =
0
A
= F (s)
s+a
L [f(t)] = 0
st
Asen( wt )e dt = A sen( wt )e st =
0
Aw
= F ( s)
s + w2
2
6.5 DERIVACIN
L dt f (t ) = sF (s) f (0)
d
d2
cuando t = 0,
'
y f (0) =
d
f (t ) cuando t = 0
dt
6.6 INTEGRACIN
L 0 f (t )dt =
t
F ( s)
s
ans =
3/(s+2)-2/(s-5)
F ( s) =
Q( s )
r1
r2
=
+
+ ..... + K
P( s) s p1 s p 2
F ( s) =
s+2
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
F ( s) =
F ( s) =
Q( s )
r1
r2
rn
=
+
+ ..... +
+K
n
n
n 1
( s pn)
P( s )
( s p1)
( s p 2)
Ejemplo:
F ( s) =
s+2
s+2
=
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 = [ ]
F ( s) =
1
1
+
2
(s + 1)
(s + 1)
Ejemplo:
Resolver la ecuacin diferencial:
d2y
dy
+
3
+ 2 y(t ) = 5, condiciones iniciales y(0) = -1, y ' (o) = 2
2
dt
dt
a) Aplicamos transformada de Laplace:
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 = [ ]
Y (s) =
1.5
5
2.5
+
s + 2 s +1 s
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
G(s)
X(s)
Y(s)
sistema
G (s) =
Y ( s ) b0 + b1 s + ... + bm s m
=
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
Ecuacin diferencial: T (t ) = J
d 2
dt 2
( s)
T (s)
1
Js 2
12
ei
a) Entrada: ei,
eo
salida: eo
b) Para la resistencia
e eo
e R = Ri, i = i
R
para el condensador
eo =
1
idt
C
c)Transformada de Laplace
Ei ( s) E o ( s)
,
R
1
Eo (s) =
I (s)
sC
I ( s) =
d)
Estructura
Ei(s) Eo(s)
I(s)
+
Ei(s)
1/R
-
1/sC
Eo(s)
13
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
X(s)
G1(s)
+
G1(s)
Y(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)
R(s)
C(s)
B(s)
H(s)
Realimentacin
B(s)
= G (s) * H (s)
E ( s)
C (s) G( s) * E ( s)
=
, 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)
Glc =
C ( s)
G(s)
=
,
R(s) 1 + G (s) H ( s)
Caso especial:
+
E(s)
G(s)
R(s)
C(s)
B(s)
Realimentacin
Gla = G ( s ),
Glc =
C (s)
G( s)
=
, 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:
G( s) =
C (s)
R( s)
G4 =
s
s + 6s + 9s + 2
3
% Segunda realimentacin
H2=1/2
Glc2=feedback(G4,H2)
Respuesta: Glc 2 =
s
s + 6 s + 9 .5 s + 2
3
16
G5 =
s
s + 6 s + 9 .5 s 2 + 2 s
4
% Tercera realimentacin
Glc=feedback(G5,1)
Respuesta: Glc =
s
s + 6 s + 9.5s 2 + 3s
4
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
s 2 + 3s + 2
s 3 + 6 s 2 + 5s + 1
17
s 2 + 3s + 2
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
lim
s0
Ejemplo:
lim
s 2 + 3s + 2
Ess = 1
= 1 0.333 = 0.666
s 0 s 3 + 6 s 2 + 5s + 6
Ejemplo:
Para:
Ess = 1
Glc =
s 2 + 3s + 6
s 3 + 6 s 2 + 5s + 6
lim
s 2 + 3s + 6
= 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
. Se abre la ventana
digitando el comando >>Simulink o utilizando el icono
Simulink Library Browser como se indica abajo y se puede diagramar un nuevo
modelo activando el botn New Model , o sea el icono
New Model
o de File
21
22
ECUACIONES DINMICAS
23
24
8.5
25
26
9. PROGRAMACIN
9.1 SUBSISTEMAS
9.1.1
% CONTROL DE UN MOTOR DC
[num, den]=linmod('ControlMotor')
Glazo_abierto = tf(num, den)
Respuesta:
9.1.2
% 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
Respuesta:
9.3
Ejemplo:
Resolver la siguiente ecuacin diferencial:
d2y
dy
+ 3 + 6 y = 4t y ' '+3 y '+6 y = 4t y ' ' = 4t 3 y '6 y
2
dt
dt
Diagrama Simulink:
Respuestas:
Ejemplo:
Comprobar la integracin por Simulink.
9.4
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
En Matlab:
>> plot(t,y)
9.5
EJERCICIOS
Ejercicio1:
dh
= q (t ) K h
dt
Diagrama Simulink:
Ecuaciones:
(1)
d 2h
i 2
=
mg
h
dt 2
(2) L
di
= V iR
dt
Valores:
m=0.1 Kg;
g=9.81;
R=2 Ohm;
Diagrama simulink:
Controlador:
zeros=[-11.5+7.9i, -11.5-7.9i]
polos=[0 -1000]
ganancia=-3.3057e+004
Planta:
L=0.02 H;
=0.001
i(0) = 0;
h(0)=0.05;
h(0)=0
10
dVol
dh
=A
= bV a h
dt
dt
Diagrama simulink:
11
Controlador:
Planta:
12
Ecuaciones:
x' ' = 0
Movimiento unforme
= 30
13
14
15
Ecuacin:
mL ' '+ BL '+ wsen = 0
Valores:
w (peso) = 2;
L (longitud) = 0.6;
B (amortiguacin) = 0.08;
Diagrama simulink:
16
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)
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
17
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,)
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
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:
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;
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');
20
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
2.0000
3.0000
4.0000
5.0000
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:
&
xor
Ejemplo:
calif = input('Dame la calificacion: ');
if calif >= 3.0
disp(' ')
disp('Aprobado')
end
if calif < 3.0
AND
OR
NOT
XOR
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
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)
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
Ecuaciones dinmicas:
f (t ) = m1
0 = m2
dv1
+ k (v1 v 2)dt
dt
dv 2
+ k (v 2 v1) dt + bv 2
dt
Ecuaciones de Laplace:
F ( s ) = m1sV 1 + k
0 = m 2 sV 2 + k
V1 V 2
s
V 2 V1
+ bV 2
s
F
V1 V 2
k
m1s
m1s 2
V1 V 2
V 2(m2 s + b) = k
s
V1 =
Programa en Simulink:
26
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);
27
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
Ecuacin dinmica:
dc(t )
= Fci (t ) Fc(t ) KVc(t )
dt
dc(t )
= Fci (t ) ( F + KV )c(t )
dt
V
dc(t )
F
+ c(t ) =
ci (t )
F + KV dt
F + KV
Constante de tiempo:
V
F + KV
Ke =
F
F + KV
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
29
Programa en Simulink:
30
Parmetros:
m1=40; m2=60; k1=400; k2=400; b1=180; b2=220;
31
f (t ) = m1
0 = m2
dv1
+ k1 (v1 v 2)dt + (v1 v 2)b1
dt
dv 2
+ k1 (v 2 v1)dt + (v 2 v1)b1 + k 2 v 2dt + b2v 2
dt
Ecuaciones de Laplace:
F ( s) = m1sV 1 +
0 = m2sV 2 +
K1
(V 1 V 2) + (V 1 V 2)b1
s
k1
k2
(V 2 V 1) + (V 2 V 1)b1 + V 2 + b2V 2
s
s
V1 =
1
1
k1 + b1s
k1
F ( s) (V 1 V 2)( + b1) =
F (V 1 V 2)(
)
m1s
s
s
m1s
32
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:
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
Push Button
Slider
Radio Button
Check Box
Edit Text
Static text
Pop-up Menu
Listbox
Toggle Button
Axes
Panel
Button Grup
ActiveX Control
DESCRIPCIN
Genera una accin
Representa un rango de valores
Representa una opcin
Indica el estado de una opcin
Para editar texto
Muestra un string de texto
Provee una lista de opciones
Lista deslizable
Genera una accin on, off
Para graficar
Visualiza grupo de controles
Es un panel exclusivo para radio buttons
y toggle buttons
Despliega controles ActiveX en Gui
5
Para colocar el valor de la variable kelvin1 al statictext,(Tag kelvin) escribimos:
set(handles.kelvin,'string',kelvin1);
Ejemplo: ConvTemperatura.fig
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
9
Min: 1;
Max:10;
Value:5
10
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
13
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
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
20
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
23
if strcmp(selection,'No')
return;
end
delete(handles.figure1)
Ejemplo: Mensajes.fig
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
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.
26
27
28
Ejemplo: Listbox.fig
29
['Codigo:2006264188. Nota Matlab=4.5']);
end
guidata(hObject,handles);
30
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
33
msica.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
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');
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
37
-a
nombregui_activex1