原因はスタンドアロンアプリケーションがタイマーオブジェクトのstopコマンド実行時にどのようにプログラムを終了させるかによるものです。一般的にはタイマーオブジェクトのコールバック関数はコールバック関数が終了時にスタンドアロンアプリケーションも終了させます。
これを回避するためには、メインルーチン内でタイマーオブジェクトのスタート後、MATLABのビルトイン関数であるwaitfor関数を使用し、タイマーオブジェクトが終了するまで待つようにします。
修正例:
-------------------------
function testTimer
i = 1;
t = timer('TimerFcn', @time_cbf, 'Period', 1, 'ExecutionMode', 'fixedRate', 'TasksToExecute', 10);
start(t);
waitfor(t); %waitforを追加
function time_cbf(obj, event)
t = obj;
disp(i);
i = i + 1;
if i>10
stop(obj);
end
end
end
-------------------------