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
Durante décadas, cuando escribías una dirección web y pulsabas Intro, tu navegador hacía algo que…
La independencia financiera es el punto en el que tus inversiones generan suficientes rendimientos para…
Tienes dos grupos de datos y quieres saber si son estadísticamente distintos. O tienes una…
A primera vista, tuplas y listas son casi idénticas. Ambas guardan colecciones ordenadas de elementos.…
"Nuestros datos no tienen buena calidad." Escuchas esto constantemente en reuniones. El problema es que…
El artículo Data Leakage en Credit Scoring explicó por qué este es el error más…
This website uses cookies.