Hola controleros y controleras bienvenidos a otro post del sitio web donde aprenderemos a hacer una Grafica Animada en 2D con MATLAB y veremos algunos comandos básicos usados en la programación de interfaces gráficas.
Antes que nada, te invito a que le des un vistazo a nuestro CURSO DE MATLAB PARA PRINCIPIANTES
Grafica Animada en Matlab
Lo que veremos hoy será algo muy básico pero sumamente atractivo y útil, principalmente porque con este código podremos hacer proyectos futuros con nuestro curso de microcontroladores.
Inicialmente lo que vamos a hacer es ANIMAR la evolución de las funciones SENO y COSENO vistas en la entrada pasada de Grafica en 2D con MATLAB.
Vamos a crear la siguiente Grafica Animada en Matlab, donde vamos a identificar cada una de sus partes

Comandos de Interfaz de Matlab
Lo primero que haremos es crear la figura, junto con todos sus atributos, como por ejemplo el tamaño de la figura, el titulo o nombre de la figura, el color de fondo.
%Crea una figura, le establece nombre, posición y color fig(1)=figure('name','Monitor','menubar','none','position',[200 200 800 700],'color',[0.9 0.6 0.3])
Luego procedemos a crear el AXE dentro de la figura anterior, con todos sus parámetros como tamaño, rejillas. Y algo importante es que el AXE lo asignamos a un padre, el cual será la figura creada anteriormente. Y con la función set o incluso dentro del propio AXE podemos cambiar o nombrar las etiquetas.
axe(1)=axes('parent',fig(1),'units','pixels','position',[60 80 600 550],'xlim',[0 40],'ylim',[-3 3],'xgrid','on','ygrid','on') %Modifica las etiquetas del eje x y y de el AXE set(get(axe(1),'XLabel'),'String','Tiempo (Seg)') set(get(axe(1),'YLabel'),'String','Función')
Luego procedemos a crear las lineas que colocaremos dentro del AXE, por lo tanto el AXE será el padre de las lineas. También configuramos el color de lineas y el grosor.
%Crea las lineas que se van a graficar en el axe, con su color y grosor %correspondientes lin(1)=line('parent',axe(1),'xdata',[],'ydata',[],'Color','r','LineWidth',2.5); lin(2)=line('parent',axe(1),'xdata',[],'ydata',[],'Color','k','LineWidth',2);
Creamos cuadros de texto dentro de la interfaz para mostrar puntos de interés al usuario o para indicar algún resultado.
txbx(1)=uicontrol('parent',fig(1),'style','text','string','Función Seno','position',[680 170 100 50],'background',[0.9 0.6 0.3],'callback',@texto,'fontsize',11) txbx(2)=uicontrol('parent',fig(1),'style','text','string','Seno','position',[680 150 100 50],'callback',@texto,'fontsize',11) txbx(3)=uicontrol('parent',fig(1),'style','text','string','Función Coseno','position',[680 270 100 50],'background',[0.9 0.6 0.3],'callback',@texto,'fontsize',11)
Colocamos botones con los cuales el usuario podrá interactuar con nuestro programa, en este caso colocaremos 2 botones en la grafica animada de matlab, colocaremos un botón detener para que el sistema pare de graficar y un botón coseno para graficar el coseno en el AXE. Estos botones crean funciones las cuales deben ser programadas para que realicen el evento del botón.
%Crea botones y cuadros de texto dentro de la figura. bot(1)=uicontrol('parent',fig(1),'style','pushbutton','string','Detener','position',[680 50 100 50],'callback',@stop,'fontsize',11) bot(2)=uicontrol('parent',fig(1),'style','pushbutton','string','Coseno','position',[680 250 100 50],'callback',@coseno,'fontsize',11)
Graficando con interfaz en MATLAB
A continuación te dejo el código completo para que lo descargues y lo copies en tu compilador, y lo modifiques para que haga más cosas o grafique más funciones.
[sociallocker id=948]
%% Ejemplo de Graficas Animadas en MATLAB function varargout=animacion(varargin) parar=false;FCos=false; %Crea una figura, le establece nombre, posición y color fig(1)=figure('name','Monitor','menubar','none','position',[200 200 800 700],'color',[0.9 0.6 0.3]) %Comando que mueve la figura al Centro de la pantalla movegui(fig(1),'center'); %Crea un AXE, dentro de la Figura, establece la posicion y los limites axe(1)=axes('parent',fig(1),'units','pixels','position',[60 80 600 550],'xlim',[0 40],'ylim',[-3 3],'xgrid','on','ygrid','on') %Modifica las etiquetas del eje x y y de el AXE set(get(axe(1),'XLabel'),'String','Tiempo (Seg)') set(get(axe(1),'YLabel'),'String','Función') %Crea las lineas que se van a graficar en el axe, con su color y grosor %correspondientes lin(1)=line('parent',axe(1),'xdata',[],'ydata',[],'Color','r','LineWidth',2.5); lin(2)=line('parent',axe(1),'xdata',[],'ydata',[],'Color','k','LineWidth',2); txbx(1)=uicontrol('parent',fig(1),'style','text','string','Función Seno','position',[680 170 100 50],'background',[0.9 0.6 0.3],'callback',@texto,'fontsize',11) txbx(2)=uicontrol('parent',fig(1),'style','text','string','Seno','position',[680 150 100 50],'callback',@texto,'fontsize',11) txbx(3)=uicontrol('parent',fig(1),'style','text','string','Función Coseno','position',[680 270 100 50],'background',[0.9 0.6 0.3],'callback',@texto,'fontsize',11) %Crea botones y cuadros de texto dentro de la figura. bot(1)=uicontrol('parent',fig(1),'style','pushbutton','string','Detener','position',[680 50 100 50],'callback',@stop,'fontsize',11) bot(2)=uicontrol('parent',fig(1),'style','pushbutton','string','Coseno','position',[680 250 100 50],'callback',@coseno,'fontsize',11) %% Funcion PARAR function varargout=stop(hObject,evendata) parar=true; end %% Funcion Graficar Coseno function varargout=coseno(hObject,evendata) FCos=true; end %% funcion Graficar % function varargout=grafique(hObject,evendata) tiempo=[0]; salida=[0]; salida2=[0]; %Cada cuanto se va graficando en el axe dt=0.1; %Limites iniciales en el AXE limx=[0 40]; set(axe(1),'xlim',limx); %% Grafico k=1;nit = 800; while(~parar) Y=2*sin(tiempo(k)); Z=cos(4*tiempo(k)); %Crea función Coseno y lo guarda en Z if FCos == true set(bot(2),'string',Z); end set(txbx(2),'string',Y); %Actualiza las variables del grafico tiempo=[tiempo tiempo(end)+dt]; salida=[salida Y]; salida2=[salida2 Z]; if FCos == true set(lin(2),'xdata',tiempo,'ydata',salida2); end %Grafico con las lineas creadas anteriormente set(lin(1),'xdata',tiempo,'ydata',salida); pause(dt); %% espera 0.1 seg para cada interación if tiempo(end)>=limx % actualizo grafica cuando llega a su limite en tiempo real limx=[0 limx(2)+40] set(axe(1),'xlim',limx) end k=k+1; if(k==nit) parar=true; end end parar=false; % end end[/sociallocker]
Finalmente podemos expresar el exponencial en matlab con la función exp(), si deseamos realizar algún calculo con exponenciales.
Crear un EXE en MATLAB
Matlab nos ofrece la posibilidad de crear programas ejecutables (EXE) para poder instalar nuestras interfaces en cualquier computador con o sin Matlab.
Para eso nos valeremos del paquete Standalone de Matlab donde usaremos el MATLAB COMPILER para generar EXE o ejecutables con el software e instalarlo en nuestros ordenadores.
En el siguiente video, te muestro como tomar la interfaz gráfica GUI de Senos y Cosenos y lo convertimos en un ejecutable en MATLAB.
Eso es todo por la entrada del dia de hoy, espero les haya gustado y hayan aprendido algo nuevo. Si te ha servido el contenido de esta entrada, de los videos y los códigos de implementación y deseas apoyar mi trabajo invitandome a un café super barato, puedes hacerlo en el siguiente link:
👉 Invitar a Sergio a un Café ☕️
Que esten muy bien, nos vemos en la siguiente entrada.
Mi nombre es Sergio Andres Castaño Giraldo, y en este sitio web voy a compartir una de las cosas que mas me gusta en la vida y es sobre la Ingeniería de Control y Automatización. El sitio web estará en constante crecimiento, voy a ir publicando material sobre el asunto desde temas básicos hasta temas un poco más complejos. Suscríbete al sitio web, dale me gusta a la página en Facebook y únete al canal de youtube. Espero de corazón que la información que comparto en este sitio, te pueda ser de utilidad. Y nuevamente te doy las gracias y la bienvenida a control automático educación.