現時点での回避方法としては、timer オブジェクトの StopFcn コールバック内で、timer オブジェクトが isvalid 関数を用いて有効かどうかを確認する方法が考えられます。
例:
t = timer("TimerFcn",@tick,"StopFcn",@finish,'ExecutionMode','fixedRate',...
'Period',3);
start(t);
pause(1)
delete(t);
function tick(src,event)
disp("Tick!")
end
function finish(src,event)
if ~isvalid(src) % 追加
disp("Done!")
end
end
実行結果:
>> mytest
Tick!
警告: 1 つ以上の実行されているタイマー オブジェクトを削除しています。MATLAB は削除前に自動的にそれらのタイマーを停止しました
なお、上記の警告メッセージを非表示にしたい場合は、delete メソッドを実行する前に、stop(t) で timer オブジェクトを停止するか、下記コマンドを実行します。
>> warning('off', 'MATLAB:timer:deleterunning')