opción. Y 'value' se usa para obtener el Una vez obtenidos los modelos valor numérico del menú emergente matemáticos de los sistemas se empezó a dependiendo de la opción seleccionada trabajar en la interfaz de usuario guide; se optó por usar un menú emergente que op almacena el valor numérico del menú contenga las 4 opciones de los modelos a emergente. Luego se usa un if para hacer analizar. se procedió a utilizar la propiedad aparecer los textos estáticos y textos de de la función set ‘invincible’,’on/off’ para edición correspondientes a cada sistema en aparecer y desaparecer ya sea textos el menú emergente, asi: estáticos o textos de edición dependiendo if op==2 del sistema seleccionado: figura=imread('a.jpg'); %Leer imagen set(handles.fig,'visible','off'); axes(handles.fig); %Carga la imagen en set(handles.ci1,'visible','off'); background set(handles.ci2,'visible','off'); axis off; set(handles.ci3,'visible','off'); imshow(figura); %Presenta la imagen set(handles.ci4,'visible','off'); set(handles.text34,'visible','off'); set(handles.ci5,'visible','off'); set(handles.text35,'visible','off'); set(handles.ci6,'visible','off'); set(handles.text33,'visible','off'); set(handles.ci7,'visible','off'); set(handles.text29,'visible','off'); set(handles.ci8,'visible','off'); set(handles.text30,'visible','off'); set(handles.posicionq1b,'visible','off'); set(handles.text31,'visible','off'); set(handles.velocidadq1b,'visible','off'); set(handles.text32,'visible','off'); set(handles.posicionq2b,'visible','off'); set(handles.text26,'visible','on'); set(handles.velocidadq2b,'visible','off'); set(handles.text27,'visible','on'); set(handles.edit13,'visible','off'); set(handles.text28,'visible','on'); set(handles.text21,'visible','off'); set(handles.edit9,'visible','on'); set(handles.text22,'visible','off'); set(handles.edit10,'visible','on'); set(handles.text23,'visible','off'); set(handles.edit11,'visible','on'); set(handles.text24,'visible','off'); set(handles.edit12,'visible','off'); set(handles.text25,'visible','off'); set(handles.edit13,'visible','off'); set(handles.text26,'visible','off'); set(handles.text21,'visible','off'); set(handles.text27,'visible','off'); set(handles.text22,'visible','off'); set(handles.text28,'visible','off'); set(handles.text23,'visible','off'); set(handles.text29,'visible','off'); set(handles.text24,'visible','off'); set(handles.text30,'visible','off'); set(handles.text25,'visible','off'); set(handles.edit9,'visible','off'); set(handles.ci1,'visible','on'); set(handles.edit10,'visible','off'); set(handles.ci2,'visible','on'); set(handles.edit11,'visible','off'); set(handles.ci3,'visible','on'); set(handles.edit12,'visible','off'); set(handles.ci4,'visible','on'); set(handles.text33,'visible','off'); set(handles.ci5,'visible','on'); set(handles.text31,'visible','off'); set(handles.ci6,'visible','on'); set(handles.text32,'visible','off'); set(handles.ci7,'visible','on'); set(handles.text34,'visible','off'); set(handles.ci8,'visible','on'); set(handles.text35,'visible','off'); set(handles.posicionq1b,'visible','off'); set(handles.velocidadq1b,'visible','off') De esta forma se “desaparecen” los textos ; estáticos y los textos de edición. set(handles.posicionq2b,'visible','off'); set(handles.velocidadq2b,'visible','off') Para hacerlos aparecer se usa la propiedad ; de los menús emergentes la cual da un valor elseif op==3 numérico a cada salto de línea del menú: figura=imread('b.jpg'); %Leer imagen axes(handles.fig); %Carga la imagen en op=get(handles.opcion,'value'); background axis off; set(handles.edit11,'visible','on'); imshow(figura); %Presenta la imagen set(handles.edit12,'visible','on'); set(handles.text34,'visible','off'); set(handles.edit13,'visible','off'); set(handles.text35,'visible','off'); set(handles.text21,'visible','off'); set(handles.text33,'visible','off'); set(handles.text22,'visible','off'); set(handles.text29,'visible','off'); set(handles.text23,'visible','off'); set(handles.text30,'visible','off'); set(handles.text24,'visible','off'); set(handles.text31,'visible','off'); set(handles.text25,'visible','off'); set(handles.text32,'visible','off'); set(handles.ci1,'visible','off'); set(handles.text26,'visible','off'); set(handles.ci2,'visible','off'); set(handles.text27,'visible','off'); set(handles.ci3,'visible','off'); set(handles.text28,'visible','off'); set(handles.ci4,'visible','off'); set(handles.edit9,'visible','on'); set(handles.ci5,'visible','off'); set(handles.edit10,'visible','on'); set(handles.ci6,'visible','off'); set(handles.edit11,'visible','on'); set(handles.ci7,'visible','off'); set(handles.edit12,'visible','on'); set(handles.ci8,'visible','off'); set(handles.edit13,'visible','on'); set(handles.posicionq1b,'visible','off'); set(handles.text21,'visible','on'); set(handles.velocidadq1b,'visible','off') set(handles.text22,'visible','on'); ; set(handles.text23,'visible','on'); set(handles.posicionq2b,'visible','off'); set(handles.text24,'visible','on'); set(handles.velocidadq2b,'visible','off') set(handles.text25,'visible','on'); ; set(handles.ci1,'visible','on'); set(handles.ci1,'visible','on'); set(handles.ci2,'visible','on'); set(handles.ci2,'visible','on'); set(handles.ci3,'visible','on'); set(handles.ci3,'visible','on'); set(handles.ci4,'visible','on'); set(handles.ci4,'visible','on'); set(handles.ci5,'visible','on'); set(handles.ci5,'visible','on'); set(handles.ci6,'visible','on'); set(handles.ci6,'visible','on'); set(handles.ci7,'visible','on'); set(handles.ci7,'visible','on'); set(handles.ci8,'visible','on'); set(handles.ci8,'visible','on'); set(handles.posicionq1b,'visible','off'); elseif op==5 set(handles.velocidadq1b,'visible','off') figura=imread('d.jpg'); %Leer imagen ; axes(handles.fig); %Carga la imagen en set(handles.posicionq2b,'visible','off'); background set(handles.velocidadq2b,'visible','off') axis off; ; imshow(figura); %Presenta la imagen elseif op==4 set(handles.text34,'visible','off'); figura=imread('c.jpg'); %Leer imagen set(handles.text35,'visible','off'); axes(handles.fig); %Carga la imagen en set(handles.text33,'visible','on'); background set(handles.text29,'visible','on'); axis off; set(handles.text30,'visible','on'); imshow(figura); %Presenta la imagen set(handles.text31,'visible','on'); set(handles.text32,'visible','on'); set(handles.text34,'visible','on'); set(handles.text26,'visible','off'); set(handles.text35,'visible','on'); set(handles.text27,'visible','off'); set(handles.text33,'visible','off'); set(handles.text28,'visible','off'); set(handles.text29,'visible','off'); set(handles.edit9,'visible','on'); set(handles.text30,'visible','off'); set(handles.edit10,'visible','on'); set(handles.text31,'visible','on'); set(handles.edit11,'visible','on'); set(handles.text32,'visible','on'); set(handles.edit12,'visible','on'); set(handles.text26,'visible','off'); set(handles.edit13,'visible','on'); set(handles.text27,'visible','off'); set(handles.text21,'visible','off'); set(handles.text28,'visible','off'); set(handles.text22,'visible','off'); set(handles.edit9,'visible','on'); set(handles.text23,'visible','off'); set(handles.edit10,'visible','on'); set(handles.text24,'visible','off'); set(handles.text25,'visible','off'); datos de las ecuaciones dentro de la set(handles.ci1,'visible','on'); interfaz. set(handles.ci2,'visible','on'); set(handles.ci3,'visible','on'); Entonces se implemento dentro del set(handles.ci4,'visible','on'); archivo.m que contenia la interfaz de set(handles.ci5,'visible','on'); usuario de la siguiente manera set(handles.ci6,'visible','on'); set(handles.ci7,'visible','on'); Un puntero llamado dx que contiene las set(handles.ci8,'visible','on'); ecuaciones del sistema A, asi set(handles.posicionq1b,'visible','off'); dx(1)= x(2); set(handles.velocidadq1b,'visible','off') ; dx(2)= m2gsin(x(3)); set(handles.posicionq2b,'visible','off'); set(handles.velocidadq2b,'visible','off') dx(3)= x(4); ; end dx(4)= -g*sin(x(3))/l; este puntero se envía a la función ode45 La parte de código dentro de cada if que se que se usa para resolver ecuaciones muestra a continuación es para mostrar la diferenciales enviándole condiciones imagen del sistema que se está modelando. iniciales y un vector de tiempo Esto para que el usuario tenga facilidad a la [t,x]=ode45(dx,rango_tiempo,ci); hora de ingresar los datos que se requieren Ode45 retorna las respuestas al sistema en para modelar una matriz x figura=imread('d.jpg'); %Leer imagen Y los tiempos en un vector t. axes(handles.fig); %Carga la imagen axis off; El rango de tiempo para todos los sistemas imshow(figura); %Presenta la imagen se definio asi: la imagen se guarda en un axes llamado fig rango_tiempo=[0:0.1:100]; y las condiciones iniciales se deben ingresar Despues de esto se uso un botón llamado por el ususario asi: simular para que una vez ingresados los cip1=get(handles.ci5,'string'); datos el usuario pueda observar la ci(1)=str2num(cip1); animación del sistema y los valores de las ci1v=get(handles.ci6,'string'); coordenadas generalizadas ci(2)=str2num(ci1v); cip2=get(handles.ci7,'string'); cla(handles.animacion,'reset'); ci(3)=str2num(cip2); esta línea de código es usada para limpiar el ci2v=get(handles.ci8,'string'); axes “animación” cada vez que se pulse el ci(4)=str2num(ci2v); botón “simular” si esta línea de código no generando un vector ci 1*4 estuviese las animaciones del sistema se sobrescribirían una en la otra. La matriz x contiene las respuestas a los movimientos y se procede a analizar los Para el ingreso de las ecuaciones obtenidas movimientos de cada coordenada ya que en el modelamiento matemático hecho para usar la función patch se deben ingresar anteriormente se uso la siguiente linea de datos en x y datos en y del movimiento.para código. los puntos B y D no fue necesario analizar el movimiento ya que ambos sistemas solo dx=@(t,x)[x(2);(m2*g*sin(x(3)))/m1;x(4); se movían en una coordenada (x o y), pero (-g*sin(x(3))/l)]; los movimientos de A y C que contenían un no se pudo usar un archivo .m aparte que movimiento angular se requerían la división contuviera las ecuaciones de cada sistema de componentes en X y Y. ya que era necesario modificar algunos