Main Content

timerfindall

すべての timer オブジェクトの検索

説明

out = timerfindall は、表示状態に関係なく、メモリ内に存在する timer オブジェクトを検索し、配列 out を返します。ObjectVisibility プロパティを使用して、オブジェクトの表示状態を設定します。

out = timerfindall(Name,Value) は、表示状態に関係なく、メモリ内に存在し、プロパティ値が Name,Value の引数として渡された値と一致する timer オブジェクトを検索し、配列 out を返します。Value は空の配列にできます。この場合、timerfindallName で指定されたプロパティに空の値をもつタイマーを検索します。

out = timerfindall(t,Name,Value) は、Name,Value の引数を t にリストされている timer オブジェクトに一致させ (ここで、t は timer オブジェクトの配列)、配列 out を返します。

out = timerfindall(S) は、構造体 S で定義されたプロパティ値と一致し、配列 out を返します。S のフィールド名は timer オブジェクトのプロパティ名です。フィールド値は、対応するプロパティ値です。

すべて展開する

関数 timerfindall を使用して、ワークスペースからタイマー変数が削除されている場合でも、複数のタイマーを同時に停止します。

100 個の乱数を生成し、1,000,000 回実行する timer オブジェクトを 2 つ作成します。「Timer has stopped」というメッセージを表示する StopFcn コールバックを定義します。タイマーを開始し、タイマーが実行中であることを確認します。

t1 = timer('TimerFcn','rand(100,1);',...
    'ExecutionMode','fixedSpacing','TasksToExecute',1e6,...
    'StopFcn','disp(''Timer1 has stopped.'')');
t2 = timer('TimerFcn','rand(100,1);',...
    'ExecutionMode','fixedSpacing','TasksToExecute',1e6,...
    'StopFcn','disp(''Timer2 has stopped.'')');
start([t1 t2])

ワークスペースからタイマー変数をクリアします。

clear

timerfindall を使用してタイマーを手動で停止し、タイマーが動作していないことを確認します。

stop(timerfindall)
t1.Running
ans = 
'off'
t2.Running
ans = 
'off'

タイマーを削除します。

delete(timerfindall)

4 つの timer オブジェクトを作成します。

t1 = timer('TimerFcn',@(~,~)disp('Timer 1 Fired!'));
t2 = timer('TimerFcn',@(~,~)disp('Timer 2 Fired!'));
t3 = timer('TimerFcn',@(~,~)disp('Timer 3 Fired!'));
t4 = timer('TimerFcn',@(~,~)disp('Timer 4 Fired!'));

タイマー t2t4 を非表示に設定します。

t2.ObjectVisibility = 'off';
t4.ObjectVisibility = 'off';

ワークスペースからタイマー t1t2 をクリアします。

clear t1 t2
whos
  Name      Size            Bytes  Class    Attributes

  t3        1x1               104  timer              
  t4        1x1               104  timer              

メモリ内の表示状態のすべてのタイマーを検索します。

timerfind
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        1x1 function_handle arraytimer-1
   2       singleShot      1        1x1 function_handle arraytimer-3

timerfind は、表示状態のタイマー t1t2 だけを検索します。タイマー t2 はワークスペースからはクリアされましたが、現在でも有効でメモリ内に存在しています。

メモリ内のすべてのタイマーを検索します。

timerfindall
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        1x1 function_handle arraytimer-1
   2       singleShot      1        1x1 function_handle arraytimer-2
   3       singleShot      1        1x1 function_handle arraytimer-3
   4       singleShot      1        1x1 function_handle arraytimer-4

t2t4 は非表示状態で、t1t2 はワークスペースからクリアされましたが、timerfindall はメモリ内に存在する 4 つの有効なタイマーをすべて検索します。

メモリからすべてのタイマーを削除します。

delete(timerfindall)

4 つの timer オブジェクトを作成します。

t1 = timer('TimerFcn',@(~,~)disp('Timer 1 Fired!'));
t2 = timer('TimerFcn',@(~,~)disp('Timer 2 Fired!'));
t3 = timer('TimerFcn',@(~,~)disp('Timer 3 Fired!'));
t4 = timer('TimerFcn',@(~,~)disp('Timer 4 Fired!'));

タイマー t2t4 を非表示に設定します。ワークスペースからタイマー t1t2 をクリアします。

t2.ObjectVisibility = 'off';
t4.ObjectVisibility = 'off';
clear t1 t2; 
whos
  Name      Size            Bytes  Class    Attributes

  t3        1x1               104  timer              
  t4        1x1               104  timer              

有効で非表示状態のすべてのタイマーを検索します。

out = timerfindall('ObjectVisibility','off')
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        1x1 function_handle arraytimer-2
   2       singleShot      1        1x1 function_handle arraytimer-4

ワークスペースに存在するかどうかにかかわらず、有効で非表示状態のタイマーが両方とも timerfindall によって検索されます。

複数の個別のタイマーとタイマーの配列を作成します。

t1 = timer('Tag', 'broadcastProgress','UserData','Monday');
t2 = timer('Tag', 'displayProgress','UserData','Monday');
timerArr = [timer('Tag', 'broadcastProgress','UserData','Tuesday');
    timer('Tag', 'displayProgress','UserData','Tuesday');
    timer('Tag', 'displayProgress','UserData','Wednesday');];

タイマー t1timerArr(2) を非表示にします。

t1.ObjectVisibility = 'off';
timerArr(2).ObjectVisibility = 'off';

timerfind を使用して、メモリ内のすべてのタイマーを検索します。

out1 = timerfind
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-2
   2       singleShot      1        ''                      timer-3
   3       singleShot      1        ''                      timer-5

timerfind は、非表示状態のタイマーを検索しません。

timerfindall を使用して、メモリ内のすべてのタイマーを検索します。

out2 = timerfindall
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-1
   2       singleShot      1        ''                      timer-2
   3       singleShot      1        ''                      timer-3
   4       singleShot      1        ''                      timer-4
   5       singleShot      1        ''                      timer-5

timerfindall は、非表示状態のタイマーを含め、すべてのタイマーを検索します。

メモリ内に存在し、Tag プロパティの値が 'displayProgress' であるタイマーのみを検索します。

out3 = timerfindall('Tag','displayProgress')
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-2
   2       singleShot      1        ''                      timer-4
   3       singleShot      1        ''                      timer-5

タイマーの検索対象を、timerArr 内にある、Tag プロパティの値が 'displayProgress' である timer オブジェクトに制限します。

out4 = timerfindall(timerArr,'Tag','displayProgress')
Timer Object Array

   Index:  ExecutionMode:  Period:  TimerFcn:               Name:
   1       singleShot      1        ''                      timer-4
   2       singleShot      1        ''                      timer-5

対象となる Tag および UserData プロパティを含む struct を定義します。

searchStruct = struct('Tag','broadcastProgress','UserData','Monday')
searchStruct = 

         Tag: 'broadcastProgress'
    UserData: 'Monday'

検索条件として struct を使用して、メモリ内の timer オブジェクトを検索します。

out5 = timerfindall(searchStruct)
   Timer Object: timer-1

   Timer Settings
      ExecutionMode: singleShot
             Period: 1
           BusyMode: drop
            Running: off

   Callbacks
           TimerFcn: ''
           ErrorFcn: ''
           StartFcn: ''
            StopFcn: ''

timer オブジェクトを削除します。

delete(timerfindall)

入力引数

すべて展開する

検索するタイマー。timer オブジェクトまたは timer オブジェクトの配列として指定します。

例: out = timerfindall(t)

検索するタイマーのプロパティ。タイマー プロパティ名に対応するフィールド名をもつ構造体として指定します。フィールド値は、対応するプロパティ値です。

例: out = timerfindall(S)

名前と値の引数

引数のオプションのペアを Name1=Value1,...,NameN=ValueN として指定します。ここで Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name を引用符で囲みます。

例: out = timerfind('BusyMode','drop')

コールバック関数のプロパティ

すべて展開する

タイマー コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。タイマーを開始する前に、このプロパティを定義しなければなりません。イベント キュー内のコールバック関数の実行を強制するためには、コード内に関数 drawnow への呼び出しを含めます。関数 drawnow は、イベント キューをフラッシュします。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB® がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

例: t = timer('TimerFcn',"MyTimerFunction(Input);")

タイマー開始コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

例: t = timer('StartFcn',@MyStartFunction(~,~))

タイマー停止コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

タイマーは、以下の状態のときに停止します。

  • タイマーの stop メソッドを呼び出した場合。

  • タイマーが TimerFcn の実行を終了した場合。つまり、TasksExecuted 値が TasksToExecute によって設定された制限に達した場合。

  • エラーが発生します。ErrorFcn コールバックが最初に呼び出され、その後に StopFcn コールバックが呼び出されます。

StopFcn を使用して、メモリからの timer オブジェクトの削除などのクリーンアップ操作を定義できます。

例: t = timer('StopFcn',@MyStopFunction(~,~))

タイマー エラー コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。エラーが発生すると、この関数が実行され、StopFcn が呼び出されます。

  • 文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。

  • 関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、timer オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type フィールド内のイベントのタイプと Data フィールド内のイベントの時間が含まれます。

  • コールバック関数が、timer オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。

詳細については、タイマー コールバック関数を参照してください。

例: t = timer('ErrorFcn','disp("An error has occurred")')

タイミング プロパティ

すべて展開する

実行間の遅延。秒単位で 0.001 より大きい数値として指定します。タイマーで Period を使用するには、複数の timer オブジェクトのコールバック イベントのスケジュールを設定するように、ExecutionModeTasksToExecute を設定しなければなりません。

例: t = timer('Period',5)

タイマーの開始と最初の実行との間の遅延。秒単位で 0 以上の数値として指定します。Running = 'on' の場合、StartDelay は読み取り専用です。

例: t = timer('StartDelay',2)

タイマー コールバック関数の実行回数。0 より大きい数値として指定します。TasksToExecute プロパティを使用して、実行回数を設定します。TasksToExecute を使用するには、複数のタイマー コールバック イベントのスケジュールを設定するように、ExecutionMode を設定しなければなりません。

例: t = timer('TasksToExecute',5)

タイマー関数コールバックのキューイング。次の表のいずれかの値として指定します。このプロパティを使用して、TimerFcn の前の実行が完了する前に、タイマーが TimerFcn を実行しなければならない場合に行う操作を指定します。Running プロパティが 'on' に設定されている場合、BusyMode プロパティは読み取り専用です。

BusyMode の値

キューが空の場合の動作

キューが空でない場合の動作

メモ

'drop'

キューにタスクを追加

タスクを無視

場合によって、TimerFcn 呼び出しをスキップ

'error'

キューにタスクを追加

タスクを完了。ErrorFcn で指定されたエラーをスロー。タイマーを停止

実行キュー内のタスクを実行した後、タイマーを停止

'queue'

キューにタスクを追加

キューが空になるまで待機してから、キューにタスクを格納

実行キューのタスクを管理するように、Period プロパティを調整

詳細については、タイマー キューの競合への対処を参照してください。

例: t = timer('BusyMode','error')

タイマー関数コールバックのスケジューリング。次の表のいずれかの値として指定します。Running='on' の場合、ExecutionMode は読み取り専用です。次の表は、実行モードをまとめたものです。

実行モード

Period 時間の開始点

'singleShot'

タイマー コールバック関数は一度だけ実行されます。このため、Period プロパティは効果がありません。このモードは、既定の実行モードです。

'fixedRate'

タイマー コールバック関数を MATLAB 実行キューに追加した直後に開始します。

'fixedDelay'

MATLAB 実行キューの遅延に起因するタイム ラグ後、タイマー関数コールバックの実行が再開された後に開始します。

'fixedSpacing'

タイマー コールバック関数の実行が終了すると開始します。

  • 'singleShot' は、timer クラスに対する単一実行モードで、既定の値です。

    Schematic of timing of 'singleShot' execution mode.

  • 'fixedDelay''fixedRate' および 'fixedSpacing' は、サポートされている 3 つのマルチ実行モードです。これらのモードは、Period プロパティの開始点を定義します。Period プロパティは、実行間の時間間隔 (実行間隔は同じ) を指定します。実行が始まる時点のみ異なります。

例: t = timer('ExecutionMode','fixedDelay')

ラベル付けプロパティ

すべて展開する

タイマーの名前。文字ベクトルまたは string スカラーとして指定します。

既定では 'timer-i' となります。ここで i はこのセッションで作成された i 番目の timer オブジェクトを示す番号です。i を 1 にリセットするには、clear classes コマンドを実行します。

例: t = timer('Name','MyTimer')

オブジェクトのラベル。文字ベクトルまたは string スカラーとして指定します。

例: t = timer('Tag','TimerTag')

オブジェクトの可視性。'on' または 'off' として指定します。アプリケーションによって作成された timer オブジェクトにエンドユーザーがアクセスすることを抑止できます。関数 timerfind は、ObjectVisibility プロパティが 'off' に設定されているオブジェクトを返しません。オブジェクトは、表示されませんが有効です。表示されないものも含めて、メモリ内にあるすべての timer オブジェクトのリストを抽出するには、関数 timerfindall を使用します。

例: t = timer('ObjectVisibility','off')

オブジェクトに追加するデータ用の汎用フィールド。

例: t = timer('UserData',"This is my first timer!")

読み取り専用プロパティ

すべて展開する

実行間の平均時間。数値スカラーとして秒単位で指定します。タイマーが 2回、タイマー コールバックを実行するまで、値は NaN です。

最新 2 回の実行の間隔。数値スカラーとして秒単位で指定します。タイマーが 2回、タイマー コールバックを実行するまで、値は NaN です。

コールバック関数のアクティブな実行を示すインジケーター。'off' または 'on' として指定します。

タイマーが実行された回数。数値スカラーとして指定します。

オブジェクト タイプを識別する文字ベクトル。

出力引数

すべて展開する

検出された timer オブジェクト。timer オブジェクトの配列として返されます。

詳細

すべて展開する

バージョン履歴

R2006a より前に導入

参考

| | | |