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.
Citar este Artículo
¡Hola! Soy Sergio Andrés Castaño Giraldo. Bienvenidos a Control Automático Educación, un espacio dedicado a una de mis grandes pasiones: la Ingeniería de Control y la Automatización.
Mi objetivo aquí es tender un puente entre la teoría académica y la práctica profesional. Como profesor e investigador, he tenido la oportunidad de trabajar en proyectos complejos —desde sistemas de compresión en plataformas offshore hasta modelos de control avanzado— y todo ese aprendizaje lo vuelco en este sitio.
Aquí encontrarás material que crece constantemente: desde fundamentos de instrumentación hasta estrategias de control avanzado y programación profesional. Mi meta es que la información que comparto te sea de utilidad real en tu carrera o formación.
Te invito a que te suscribas, te unas a nuestro canal de YouTube y formemos una comunidad de aprendizaje continuo. ¡Gracias por estar aquí!