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.
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.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.
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); 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
Hace poco publiqué una entrada en la que trataba de un sesgo bien documentado: aferrarse…
En un entrada previa explicamos qué son el WOE y el IV y por qué…
Seguimos evolucionando el laboratorio de Analytics Lane y hoy lanzamos la versión 1.1, disponible en:…
“El interés compuesto es la octava maravilla del mundo. El que lo entiende lo gana…
Tienes los datos de ventas de tres productos en dos años distintos y quieres saber…
Imagina la situación. Tu equipo lleva tres años con un modelo en producción. No es…
This website uses cookies.