Professional Documents
Culture Documents
Practica Matlab & Simulink PDF
Practica Matlab & Simulink PDF
Practicas
Practicas de MATLAB:
Comenzaremos con los comandos básicos, una vez conocido los más fundamentales los mezclaremos
con otros comandos más complejos para poder desarrollar un mejor entendimiento del programa.
Dado a que este no es un programa de desarrollo visual como se vio anteriormente con Visual Basic es
irremediable que la práctica se haga sobre problemas reales, ya que fundamentalmente el MATLAB es
una especie de calculadora muy poderosa que nos servirá para resolver problemas.
x=[x1-2:0.1:x2+2]
y=a*x.^2+b*x+c;
plot(x,y)
gris
% Valores X1:
pos_01 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[40 350 50 22],...
'CallBack','m_01=str2double(get(pos_01,''String''))');
pos_02 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[40 325 50 22],...
'CallBack','m_02=str2double(get(pos_02,''String''))');
pos_03 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[40 300 50 22],...
'CallBack','m_03=str2double(get(pos_03,''String''))');
pos_05 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[100 325 50 22],...
'CallBack','m_05=str2double(get(pos_05,''String''))');
pos_06 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[100 300 50 22],...
'CallBack','m_06=str2double(get(pos_06,''String''))');
% Valores X3:
pos_07 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[160 350 50 22],...
'CallBack','m_07=str2double(get(pos_07,''String''))');
pos_08 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[160 325 50 22],...
'CallBack','m_08=str2double(get(pos_08,''String''))');
pos_09 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[160 300 50 22],...
'CallBack','m_09=str2double(get(pos_09,''String''))');
npos_03 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',10,'FontName','Arial',...
'String',[],...
'Position',[220 300 50 22],...
'CallBack','n_03=str2double(get(npos_03,''String''))');
% Textos:
txt_01=uicontrol(gcf,...
'Style','text','String','X1',...
'Position',[280 350 50 22]);
txt_02=uicontrol(gcf,...
'Style','text','String','X2',...
'Position',[280 325 50 22]);
txt_03=uicontrol(gcf,...
'Style','text','String','X3',...
'Position',[280 300 50 22]);
% Resultados:
res_01 = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','y',...
'FontSize',10,'FontName','Arial',...
'HorizontalAlignment','Left',...
'String',[x(1)],...
'Position',[340 350 120 20]);
res_02 = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','y',...
'FontSize',10,'FontName','Arial',...
'HorizontalAlignment','Left',...
'String',[x(2)],...
'Position',[340 325 120 20]);
res_03 = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','y',...
'FontSize',10,'FontName','Arial',...
'HorizontalAlignment','Left',...
'String',[x(3)],...
'Position',[340 300 120 20]);
MATLAB & SIMUINK Pág. 5
FUNDAMENTOS DE INFORMATICA -2006- Departamento de Ing Eléctrica.
Práctica - Nº 5: Programación.
Dado el siguiente circuito eléctrico resolver con la ley de (OHM) si el sistema
Funciona bien, Funciona en el limite o Se Quema.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
fig=gcf; clf;
txt_val_a = uicontrol(gcf,...
'Style','text',...
'String','Lim. a:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 80 50 20]);
val_a = uicontrol(fig,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[110 80 50 20],...
'CallBack','a=str2double(get(val_a,''String''))');
txt_val_b = uicontrol(gcf,...
'Style','text',...
'String','Lim. b:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 55 50 20]);
txt_val_c = uicontrol(gcf,...
'Style','text',...
'String','Grado :',...
'FontSize',8,'FontName','Arial',...
'Position',[60 30 50 20]);
val_c = uicontrol(fig,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[110 30 50 20],...
'CallBack','c=str2double(get(val_c,''String''))');
txt_val_d = uicontrol(gcf,...
'Style','text',...
'String','Lim. d:',...
'FontSize',8,'FontName','Arial',...
'Position',[160 80 50 20]);
val_d = uicontrol(fig,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[210 80 50 20],...
'CallBack','d=str2double(get(val_d,''String''))');
txt_val_e = uicontrol(gcf,...
'Style','text',...
'String','Lim. e:',...
'FontSize',8,'FontName','Arial',...
'Position',[160 55 50 20]);
val_e = uicontrol(fig,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[210 55 50 20],...
'CallBack','e=str2double(get(val_e,''String''))');
txt_val_f = uicontrol(gcf,...
'Style','text',...
'String','Grado :',...
'FontSize',8,'FontName','Arial',...
'Position',[160 30 50 20]);
val_f = uicontrol(fig,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[210 30 50 20],...
'CallBack','f=str2double(get(val_f,''String''))');
boton_funcion = uicontrol(gcf,...
'Style','push',...
'Position',[160 6 100 20],...
'String','Función',...
'CallBack','curva_w3');
%Curva 2
d1=1+sum(x>=0)-sum(x>=d);
e1=sum(x<=e);
w1=x([d1:e1]);
z1=y([d1:e1]);
h=polyfit(w1,z1,f)
w2=[d:0.1:e];
z2=polyval(h,w2);
%Curva 3
i=polyfit([b d],[polyval(g,b) polyval(h,d)],1);
t2=[b:0.1:d];
u2=polyval(i,t2);
txt_val_i = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','r',...
'String',[i],...
'FontSize',8,'FontName','Arial',...
'Position',[380 10 75 100]);
txt_val_h = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','b',...
'String',[h],...
'FontSize',8,'FontName','Arial',...
'Position',[480 10 75 100]);
Práctica - Nº 7: Programación.
Resolver el siguiente problema de denominado como funciones económicas:
En un taller se fabrican piezas: A y B. Ambas están sujetas a tres procesos,
Estampado, Soldado y Pintado.
Las disponibilidades en minutos para cada proceso son:
Estampado à 480 min.
Soldado à 420 min.
Pintado à 360 min.
El tipo de piaza A consume: El tipo de piaza B consume:
Estampado à 6 min. Estampado à 16 min.
Soldado à 12 min. Soldado à 6 min.
Pintado à 9 min. Pintado à 9 min.
Ganancia $4 la A y $3 la B.
Evaluemos las restricciones:
Estampado à 6x1 +16x2 480
Soldado à 12x1 +6x2 420
Pintado à 9x1 +9x2 360
x=[0:0.1:100];
y1=[polyval(pol_01,x)];
y2=[polyval(pol_02,x)];
y3=[polyval(pol_03,x)];
xa=[0:0.1:100];
ya=[0:1:100];
p=0;
for a=0:0.1:100
ya1=[polyval(pol_01,a)];
ya2=[polyval(pol_02,a)];
ya3=[polyval(pol_03,a)];
yamim=min([ya1 ya2 ya3]);
p=p+1;
ya(p)=yamim;
end
%Curva de ganancia
z=4.*xa+3.*ya;
zmax=max(z);
p=0;
for a=0:0.1:100
p=p+1;
if zmax==z(p)
xp=a
yp=zmax/3-4/3*xp
end
end
txt_x = uicontrol(gcf,...
'Style','text',...
'String','Punto Obtimo X:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 80 100 15]);
txt_vx = uicontrol(gcf,...
'Style','text',...
'String',[xp],...
'FontSize',8,'FontName','Arial',...
'BackgroundColor','g',...
'Position',[160 80 30 15]);
MATLAB & SIMUINK Pág. 13
FUNDAMENTOS DE INFORMATICA -2006- Departamento de Ing Eléctrica.
txt_y = uicontrol(gcf,...
'Style','text',...
'String','Punto Obtimo Y:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 60 100 15]);
txt_vy = uicontrol(gcf,...
'Style','text',...
'String',[yp],...
'FontSize',8,'FontName','Arial',...
'BackgroundColor','g',...
'Position',[160 60 30 15]);
txt_z = uicontrol(gcf,...
'Style','text',...
'String','Ganancia Máxima:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 40 100 15]);
txt_vz = uicontrol(gcf,...
'Style','text',...
'String',[zmax],...
'FontSize',8,'FontName','Arial',...
'BackgroundColor','g',...
'Position',[160 40 30 15]);
txt_r = uicontrol(gcf,...
'Style','text','String','R',...
'Position',[160 375 50 22]);
txt_l = uicontrol(gcf,...
'Style','text','String','L',...
'Position',[220 375 50 22]);
txt_c = uicontrol(gcf,...
'Style','text','String','C',...
'Position',[280 375 50 22]);
txt_r1 = uicontrol(gcf,...
'Style','text','String','R1',...
'Position',[40 350 50 22]);
txt_r2 = uicontrol(gcf,...
'Style','text','String','R2',...
'Position',[40 325 50 22]);
txt_r3 = uicontrol(gcf,...
'Style','text','String','R3',...
'Position',[40 300 50 22]);
txt_f = uicontrol(gcf,...
'Style','text','String','Fr',...
'Position',[40 275 50 22]);
% Rama Nº2
txt_v2 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','White',...
'FontSize',9,'FontName','Arial',...
'String',[20],...
'Position',[100 325 50 22],...
'CallBack','v2=str2double(get(txt_v2,''String''))');
txt_r2 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','White',...
'FontSize',9,'FontName','Arial',...
'String',[200],...
'Position',[160 325 50 22],...
'CallBack','r2=str2double(get(txt_r2,''String''))');
txt_l2 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','White',...
'FontSize',9,'FontName','Arial',...
'String',[20],...
'Position',[220 325 50 22],...
'CallBack','l2=str2double(get(txt_l2,''String''))');
txt_c2 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','White',...
'FontSize',9,'FontName','Arial',...
'String',[200],...
'Position',[280 325 50 22],...
'CallBack','c2=str2double(get(txt_c2,''String''))');
% Frecuencia
txt_f = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','White',...
'FontSize',9,'FontName','Arial',...
'String',[50],...
'Position',[100 275 50 22],...
'CallBack','f=str2double(get(txt_f,''String''))');
% Boton MEMORIA
Boton_memoria = uicontrol(gcf,...
'Style','push',...
'BackgroundColor','y',...
'String','Generador de Z',...
'Position',[160 275 170 22],...
'CallBack','generador_de_z,m02');
% Boton MEMORIA
Boton_memoria = uicontrol(gcf,...
'Style','push',...
'BackgroundColor','y',...
'String','CALCULO',...
'Position',[160 250 170 22],...
'CallBack','valores_i,res_final');
Con Simulink generamos los valores de las impedancias Z1, Z2, Z3.
Creamos un fichero generador_de_z.mdl
Luego de tener las Z generadas chiqueamos sobre el botón CALCULO. Pero antes debemos cargar el
fichero valores_i.m que resuelve el sistema.
Una ves finalizada la resolución de las I1, I2, I3. Pasamos al Simulink en donde creamos un fichero
Res_final para obtener la visualización de los módulos de las corrientes y sus desfasages:
5
f1:
4
3
f2:
2
f3:
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Calcular mediante una interfase gráfica la función:
Función F1:
Función F3:
Para F1:
x=[0.4454 1.0000 2.0000 3.0000 4.0000 5.0000 6.0000 7.0000 7.7396 8.0000 9.0000
9.3955 10.0000 11.0000 12.0000 13.0000 14.0000 14.7222]
y=[3.2991 3.9524 4.6117 4.7597 4.6961 4.4870 4.0499 3.4638 3.0000 2.8354 2.2221
2.0000 1.6971 1.2817 0.9460 0.7176 0.6134 0.5770]
Para F2:
x=[0.5799 1.0000 2.0000 2.3417 3.0000 3.6060 4.0000 4.3447 5.0000 5.2975 6.0000
7.0000 8.0000 8.7660 9.0000 9.6201 10.0000 10.1736 10.7887 11.0000 11.6944 12.0000
13.0000 14.0000 14.7390]
y=[1.5348 1.6114 1.8634 2.0000 2.3958 3.0000 3.5346 4.0000 4.7453 5.0000 5.2988
5.5056 5.4124 5.0000 4.7991 4.0000 3.3200 3.0000 2.0000 1.7187 1.0000 0.7701
0.3448 0.2638 0.2913]
Para F3:
x=[0.4958 1.0000 2.0000 3.0000 3.5150 4.0000 4.7027 5.0000 5.4968 6.0000 6.4867
7.0000 8.0000 9.0000 10.0000 11.0000 11.4771 12.0000 13.0000 14.0000 14.8399]
y=[0.7282 0.6844 0.6572 0.8109 1.0000 1.2765 2.0000 2.4037 3.0000 3.5595 4.0000
4.3101 4.6307 4.7108 4.5628 4.2115 4.0000 3.7687 3.4431 3.3399 3.3327]
Tabla_01.m
fun1_1=[7.282435128443753e-004 -1.458478043639861e-002 1.070842814144333e-001
-3.277673152739540e-001 1.272757981926073e-001 1.371828443342523e+000
2.687835329247940e+000];
fun1_2=[-5.866009195766742e-001 7.569505517460017e+000];
fun1_3=[-7.371630854963460e-005 4.868400104707042e-003 -1.326476100741741e-001
1.908948154247105e+000 -1.525887569020492e+001 6.342580237474054e+001
-1.022652644166399e+002];
txt_val_x1 = uicontrol(gcf,...
'Style','text',...
'String','X1:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 280 50 20]);
txt_val_x2 = uicontrol(gcf,...
'Style','text',...
'String','X2:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 255 50 20]);
val_x2 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[110 255 50 20],...
'Max',100,...
'CallBack','x2=str2double(get(val_x2,''String''))');
txt_val_x3 = uicontrol(gcf,...
'Style','text',...
'String','X3:',...
'FontSize',8,'FontName','Arial',...
'Position',[60 230 50 20]);
val_x3 = uicontrol(gcf,...
'Style','edit',...
'BackgroundColor','white',...
'FontSize',8,'FontName','Arial',...
'String',[],...
'Position',[110 230 50 20],...
'Max',100,...
'CallBack','x3=str2double(get(val_x3,''String''))');
boton_buscar = uicontrol(gcf,...
'Style','push',...
'Position',[60 205 100 20],...
'String','Buscar',...
'CallBack','tabla_02');
Tabla_02:
if 1 <= x1 & x1 <= 6,rx1=polyval(fun1_1,x1)
elseif 6 < x1 & x1 <= 7,rx1=polyval(fun1_2,x1)
elseif 7 < x1 & x1 <= 14,rx1=polyval(fun1_3,x1)
else rx1='Error: 1<=x1<=14'
end
txt_val_x2 = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','y',...
'String',[rx2],...
'FontSize',10,'FontName','Arial',...
'Position',[160 255 200 20]);
txt_val_x3 = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','y',...
'String',[rx3],...
'FontSize',10,'FontName','Arial',...
'Position',[160 230 200 20]);
boton_calculo = uicontrol(gcf,...
'Style','push',...
'Position',[60 180 100 20],...
'String','Calcular',...
'CallBack','tabla_03');
Tabla_03:
if 1<=x1 & x1<=14 & 1<=x2 & x2<=14 & 1<=x3 & x3<=14 ,rfinal=(rx1^2+rx2^3-
(rx3)^(1/2))/(rx1+rx2+rx3)
else rfinal='Error'
end
txt_val_final = uicontrol(gcf,...
'Style','text',...
'BackgroundColor','g',...
'String',[rfinal],...
'FontSize',10,'FontName','Arial',...
'Position',[160 180 200 20]);
P = 3m.
A max = ?
ð ⋅ a2
A = a ⋅b +
b
8
a ⋅ð P a⋅ ð a
P = a + 2b + →b= − −
2 2 4 2
a P a ⋅ð a ð⋅a 2
F(A) = a ⋅ − − +
2 4 2 8
Donde:
F(A): u[1]*(u[2]/2-u[1]*3.141592654/4-u[1]/2)+(3.141592654*u[1]^2)/8
F(B): u[1]/2-u[2]*3.141592654/4-u[2]/2
- +
3º obtener el momento después de el cambio que produce la carga
puntual P.
( )
M 2 = − (Q × X )× − P × (X − a ) + R A × X = −
X Q× X2
− P × (X − a ) + R A × X
2 2
L1 L2
q2:
q1:
Para resolver el siguiente problema que es una simple suma de momentos variando
las distancias debemos tener en cuenta 3 datos importantes.
1) Momento = Fuerza * Distancia
2) La carga uniforme se representa como una puntual a la mitad de la misma.
3) La carga triangular se representa como una puntual a 1/3 de la parte cargada
superior o sea a 2/3 de la que se hace cero “0”.
Generamos un bloque que reúne dentro, los distintos sub-bloques, que resuelven el
sistema.
Dentro de Dato #2, sacamos el valor punto a punto de la carga triangular para
poder saber la carga distribuida triangular: