Matlab

Ejecutar una función con retraso en Matlab

Generalmente al escribir un comando en Matlab queremos que este se ejecute al momento, y es lo que sucede. Pero, en algunas ocasiones puede ser interesante que la función no se ejecute al momento, sino que un tiempo después. Por ejemplo, para actualizar una figura con nuevos datos. Aunque el lenguaje no cuenta con una función para realizar esta trate específicamente, es posible ejecutar una función con retraso en Matlab usando un timer.

El timer de Matlab

La función timer de Matlab permite programar tareas para que se ejecuten periódicamente cada cierto tiempo. Tarea que generalmente se indica mediante una función handle. La función puede recibir diferentes valores opcionales que se deben pasar en pares nombre de la propiedad (una cadena de texto) y valor. Las propiedades más interesantes que admite la función son:

  • TimerFcn: la función que se desea ejecutar periódicamente.
  • Period: el tiempo en segundos entre cada una de las llamadas a la función.
  • StartDelay: retraso en segundos para que la función se ejecute por primera vez.
  • TasksToExecute: las veces que la función se va a ejecutar, debe ser un valor mayor de cero.
  • ExecutionMode: el modo en el que se mide el tiempo entre ejecuciones. Los posibles valores de este parámetro son:
    • singleShot: la tarea se ejecuta una única vez.
    • fixedRate: el tiempo entre las ejecuciones empieza contar cuando la ejecución anterior ha terminado.
    • fixedDelay: el tiempo entre ejecuciones empieza contar después del retraso.
    • fixedSpacing: la tarea se ejecuta en espacios fijos de tiempo.

Ejecutar una función con retraso en Matlab

En base a lo visto, para ejecutar una función con retraso en Matlab solamente se tendría que ejecutar el siguiente código.

T = timer('StartDelay', 5, 'TimerFcn', @(~, ~) msgbox('Mensaje con retraso'));
start(T);

En el que se define un retraso de cinco segundos (StartDelay) para que se muestre por pantalla un mensaje con retraso. Con la función timer se crea un objeto. Para inicializar el contador se le debe pasar una señal al objeto usando para ello la función start(). Una vez hecho esto la función se ejecutará una vez pasados 5 segundos.

Ejecutar una función con retraso varias veces Matlab

Para que la función se ejecute varias es necesario agregar algunas opciones. La primera es indicar con TasksToExecute el número de ejecuciones, valor que por defeco es uno. Otra opción que se debe cambiar el modo de ejecución, por defecto es singleShot por lo que se debe seleccionar uno válido como fixedDelay. Además, también se debe iniciar el pedido entre ejecuciones. Por ejemplo, el siguiente código permite mostrar el mensaje dos veces, uno tras cinco segundos y el segundo dos segundos después (siente segundos después de iniciar el proceso).

T = timer('StartDelay', 5, 'TimerFcn', @(~, ~) msgbox('Mensaje con retraso'), …
          'TasksToExecute', 2, 'ExecutionMode', 'fixedDelay', 'Period', 2);
start(T);        

Conclusiones

En esta entrada se ha visto un método para ejecutar una función con retraso en Matlab, algo que nos puede ser útil cuando se desarrollan aplicaciones que interaccionan con usuarios.

Imagen de Rico Imbiky en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Síndrome del objeto brillante en ciencia de datos: el error simétrico a los costes hundidos

Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…

4 días ago

De la Regresión Logística al Scorecard: La Transformación Matemática

En un entrada previa explicamos qué son el WOE y el IV y por qué…

6 días ago

Analytics Lane lanza la versión 1.1 del laboratorio con nuevas suites de CLV y Scoring

Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…

1 semana ago

Interés compuesto: la fuerza que multiplica tu dinero (y los errores que la anulan)

“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…

2 semanas ago

Cómo comparar datos con barras en Matplotlib: agrupadas, apiladas y porcentuales

Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…

2 semanas ago

Costes hundidos en ciencia de datos: cuándo mantener un modelo y cuándo migrar

Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…

3 semanas ago

This website uses cookies.