Матлаб таймер миллисекунд

Я пользователь Matlab-любитель, который пытается написать код для запуска вызова определенной функции каждые 10 мс в течение 1 секунды. У меня возникли проблемы с попыткой заставить что-то работать в течение точного времени; Я пытался использовать Tic и Toc, но это в секундах (мне нужна точность в миллисекундах). Вот очень простой код, с которым я играл, чтобы попытаться получить показания с помощью функции getvelocity. Любая помощь будет оценена, спасибо!

function [ velocity ] = Vel()
i=1;
timerID=tic;

while (toc(timerID) <=2);
    [v(i)]=vpx_GetTotalVelocity;
    disp (v(i));
    i=i+1;
end
velocity=mean(v);


end

Приведенный выше код выполняется две секунды; однако я хочу работать с точностью ms.


person Gregory Del Rosario    schedule 02.07.2013    source источник


Ответы (1)


Предполагая, что функция, которую вы имеете, достаточно быстра (не тривиальное предположение), вы можете добиться этого следующим образом:

tic
for t = 0.01:0.01:1 %If you want the first function call to start right away you can change this to 0:0.01:0.99
    while toc < t
    end
    t %Put your function call here.
end

Обратите внимание, что 0,01 с — это 10 мс.

person Dennis Jaheruddin    schedule 02.07.2013
comment
Если вы просто хотите подождать 10 мс между вызовами функций, используйте pause(0.01) между ними. - person Dennis Jaheruddin; 02.07.2013
comment
@Lama Точность на самом деле не упоминалась, но Java Thread.Sleep действительно должен оказаться более точным: undocumentedmatlab.com/blog/pause-for-the-better - person Dennis Jaheruddin; 12.07.2013