timerfind
timer オブジェクトの検索
説明
は表示状態の timer オブジェクトを検索し、配列 out
= timerfindout
を返します。
は、プロパティ値が out
= timerfind(Name,Value
)Name,Value
の引数として渡された値と一致する表示状態の timer オブジェクトを検索し、配列 out
を返します。Value
は空の配列にできます。この場合、timerfind
は Name
で指定されたプロパティに空の値をもつタイマーを検索します。
は、out
= timerfind(t
,Name,Value
)Name,Value
のペアの引数を t
にリストされている timer オブジェクトに一致させ (ここで、t
は timer オブジェクトの配列)、配列 out
を返します。
例
メモリ内に存在する timer オブジェクトの検索
複数の個別のタイマーとタイマーの配列を作成します。
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');];
メモリ内のすべてのタイマーを検索します。
out1 = timerfind
out1 = Timer Object Array Index: ExecutionMode: Period: TimerFcn: Name: 1 fixedSpacing 30 @(~,~)logStack() timer-1 2 singleShot 1 '' timer-2 3 singleShot 1 '' timer-3 4 singleShot 1 '' timer-4 5 singleShot 1 '' timer-5 6 singleShot 1 '' timer-6
メモリ内に存在し、Tag
プロパティの値が 'displayProgress'
のタイマーのみを検索します。
out2 = timerfind('Tag','displayProgress')
out2 = Timer Object Array Index: ExecutionMode: Period: TimerFcn: Name: 1 singleShot 1 '' timer-3 2 singleShot 1 '' timer-5 3 singleShot 1 '' timer-6
タイマーの検索対象を timerArr
内にある Tag
プロパティの値が 'displayProgress'
の timer オブジェクトに制限します。
out3 = timerfind(timerArr,'Tag','displayProgress')
out3 = Timer Object Array Index: ExecutionMode: Period: TimerFcn: Name: 1 singleShot 1 '' timer-5 2 singleShot 1 '' timer-6
対象となる Tag
および UserData
プロパティを含む struct
を定義します。
searchStruct = struct('Tag','broadcastProgress','UserData','Monday')
searchStruct = struct with fields:
Tag: 'broadcastProgress'
UserData: 'Monday'
検索条件として struct
を使用して、メモリ内の timer オブジェクトを検索します。
out4 = timerfind(searchStruct)
out4 = Timer Object: timer-2 Timer Settings ExecutionMode: singleShot Period: 1 BusyMode: drop Running: off Callbacks TimerFcn: '' ErrorFcn: '' StartFcn: '' StopFcn: ''
timer オブジェクトを削除します。
delete(t1) delete(t2) delete(timerArr)
すべてのタイマーの停止
関数 timerfind
を使用して、ワークスペースからタイマー変数が削除されている場合でも、複数のタイマーを同時に停止します。
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
timerfind
を使用してタイマーを手動で停止し、タイマーが動作していないことを確認します。
stop(timerfind) t1.Running
ans = 'off'
t2.Running
ans = 'off'
タイマーを削除します。
delete(timerfind)
名前に基づくタイマーの削除
タイマーの配列を作成して、メモリ内に既存のタイマーが存在することをシミュレートします。カスタム名が付けられたタイマーを作成します。表示状態のすべてのタイマーを一覧表示します。
existingTimers = [timer timer timer]; myTimerName = 'myTimer'; anotherTimer = timer('Name',myTimerName); timerfind
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 '' myTimer
指定されたタイマーを削除し、表示状態のすべてのタイマーを一覧表示します。
delete(timerfind('Name',myTimerName));
timerfind
Timer Object Array Index: ExecutionMode: Period: TimerFcn: Name: 1 singleShot 1 '' timer-1 2 singleShot 1 '' timer-2 3 singleShot 1 '' timer-3
表示状態のすべてのタイマーをメモリから削除します。
delete(timerfind)
ワークスペースからクリアされた、有効な timer オブジェクトの検索
timerfind
を使用して、「失われた」timer オブジェクト参照を検索します。ワークスペースから timer オブジェクトをクリアすると参照は失われますが、メモリからは削除されません。
2 つの timer オブジェクトを作成します。コールバック関数は timer または event オブジェクトを必要としないため、チルダ (~
) 演算子を使用して、関数ハンドルの入力を無視できます。
t1 = timer('TimerFcn',@(~,~)disp('Timer 1 Fired!')); t2 = timer('TimerFcn',@(~,~)disp('Timer 2 Fired!')); whos
Name Size Bytes Class Attributes t1 1x1 104 timer t2 1x1 104 timer
ワークスペースから timer オブジェクトを 1 つをクリアします。メモリからタイマーを削除するには、クリアして削除します。
clear t1
whos
Name Size Bytes Class Attributes t2 1x1 104 timer
タイマー t1
の削除を試みます。
delete(t1)
Undefined function or variable 't1'.
参照がクリアされているため、削除操作を使用してメモリからタイマー t1
を削除できません。
メモリ内にある有効な timer オブジェクトを検索します。
out = timerfind
Timer Object Array Index: ExecutionMode: Period: TimerFcn: Name: 1 singleShot 1 1x1 function_handle arraytimer-1 2 singleShot 1 1x1 function_handle arraytimer-2
2 つのタイマーが見つかったため、ワークスペースにどちらのタイマーが存在しないかを判別します。
out ~= t2
ans = 1 0
out
の最初の timer オブジェクトは t2
と等しくありません。このオブジェクトは以前は t1
でした。これを t1
に再度割り当てます。このオブジェクトはまだ有効なため、タイマーを開始できます。
t1 = out(1); start(t1)
Timer 1 Fired!
timer オブジェクトを削除します。timerfind
を使用して、メモリ内にある timer オブジェクトにアクセスします。オブジェクトはコピーされないため、メモリから out
を削除する必要はありません。タイマーが削除されたことを確認するには、timerfind
を使用します。
delete(t1) delete(t2) timerfind
ans = []
メモリ内のすべての timer オブジェクトの削除
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!'));
ワークスペースから 2 つのタイマーをクリアします。
clear t2 t3
timerfind
を delete
に渡して、ワークスペース内に存在しているかどうかにかかわらず、メモリからすべての timer オブジェクトを削除します。
delete(timerfind) timerfind
ans = []
入力引数
t
— timer オブジェクト
timer オブジェクト | timer オブジェクトの配列
検索するタイマー。timer オブジェクトまたは timer オブジェクトの配列として指定します。
例: out = timerfind(t)
S
— フィールド名
タイマー プロパティ名に対応するフィールド名をもつ構造体
タイマー プロパティ名に対応するフィールド名をもつ構造体。フィールド値は、対応するプロパティ値です。
例: out = timerfind(S)
名前と値の引数
引数のオプションのペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名で、Value
は対応する値です。名前と値の引数は他の引数の後になければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用してそれぞれの名前と値を区切り、Name
を引用符で囲みます。
例: out = timerfind('BusyMode','drop')
TimerFcn
— タイマー コールバック関数
文字ベクトル | string スカラー | 関数ハンドル | cell 配列
タイマー コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。タイマーを開始する前に、このプロパティを定義しなければなりません。イベント キュー内のコールバック関数の実行を強制するためには、コード内に関数 drawnow
への呼び出しを含めます。関数 drawnow
は、イベント キューをフラッシュします。
関数ハンドルを使用してこのプロパティを指定する場合、MATLAB® がコールバックを実行すると、
timer
オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type
フィールド内のイベントのタイプとData
フィールド内のイベントの時間が含まれます。文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。
コールバック関数が、
timer
オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。
詳細については、タイマー コールバック関数を参照してください。
例: t = timer('TimerFcn',"MyTimerFunction(Input);")
StartFcn
— タイマー開始コールバック関数
文字ベクトル | string スカラー | 関数ハンドル | cell 配列
タイマー開始コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。
関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、
timer
オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type
フィールド内のイベントのタイプとData
フィールド内のイベントの時間が含まれます。文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。
コールバック関数が、
timer
オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。
詳細については、タイマー コールバック関数を参照してください。
例: t = timer('StartFcn',@MyStartFunction(~,~))
StopFcn
— タイマー停止コールバック関数
文字ベクトル | string スカラー | 関数ハンドル | cell 配列
タイマー停止コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。
関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、
timer
オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type
フィールド内のイベントのタイプとData
フィールド内のイベントの時間が含まれます。文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。コールバックを文字ベクトルとして定義することは推奨されていません。関数ハンドルとして指定された関数を使用すると、MATLAB でコールバック関数に重要な情報を渡すことができます。
コールバック関数が、
timer
オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。
詳細については、タイマー コールバック関数を参照してください。
タイマーは、以下の状態のときに停止します。
タイマーの
stop
メソッドを呼び出した場合。タイマーが
TimerFcn
の実行を終了した場合。つまり、TasksExecuted
値がTasksToExecute
によって設定された制限に達した場合。エラーが発生します。
ErrorFcn
コールバックが最初に呼び出され、その後にStopFcn
コールバックが呼び出されます。
StopFcn
を使用して、メモリからの timer オブジェクトの削除などのクリーンアップ操作を定義できます。
例: t = timer('StopFcn',@MyStopFunction(~,~))
ErrorFcn
— タイマー エラー コールバック関数
文字ベクトル | string スカラー | 関数ハンドル | cell 配列
タイマー エラー コールバック関数。文字ベクトル、string スカラー、関数ハンドル、または cell 配列として指定します。エラーが発生すると、この関数が実行され、StopFcn
が呼び出されます。
文字ベクトルまたは string スカラーを使用してこのプロパティを指定した場合、MATLAB は、コールバックの実行時にその文字ベクトルに含まれる MATLAB コードを評価します。
関数ハンドルを使用してこのプロパティを指定する場合、MATLAB がコールバックを実行すると、
timer
オブジェクトとイベント構造体をコールバック関数に渡します。イベント構造体には、Type
フィールド内のイベントのタイプとData
フィールド内のイベントの時間が含まれます。コールバック関数が、
timer
オブジェクトとイベント データに加えて引数を受け入れる場合、このプロパティを、関数ハンドルと追加引数が含まれる cell 配列として指定します。
詳細については、タイマー コールバック関数を参照してください。
例: t = timer('ErrorFcn','disp("An error has occured")')
Period
— 実行間の遅延
1 (既定値) | 数値スカラー
実行間の遅延。秒単位で 0.001 より大きい数値として指定します。タイマーで Period
を使用するには、複数の timer オブジェクトのコールバック イベントのスケジュールを設定するように、ExecutionMode
と TasksToExecute
を設定しなければなりません。
例: t = timer('Period',5)
StartDelay
— タイマーの開始と最初の実行との間の遅延
0 (既定値) | 数値スカラー
タイマーの開始と最初の実行との間の遅延。秒単位で 0 以上の数値として指定します。Running = 'on'
の場合、StartDelay
は読み取り専用です。
例: t = timer('StartDelay',2)
TasksToExecute
— タイマー コールバック関数の実行回数
数値スカラー
タイマー コールバック関数の実行回数。0 より大きい数値として指定します。TasksToExecute
プロパティを使用して、実行回数を設定します。TasksToExecute
を使用するには、複数のタイマー コールバック イベントのスケジュールを設定するように、ExecutionMode
を設定しなければなりません。
例: t = timer('TasksToExecute',5)
BusyMode
— タイマー関数コールバックのキューイング
'drop'
(既定値) | 'error'
| 'queue'
タイマー関数コールバックのキューイング。次の表のいずれかの値として指定します。このプロパティを使用して、TimerFcn
の前の実行が完了する前に、タイマーが TimerFcn
を実行しなければならない場合に行う操作を指定します。Running
プロパティが 'on'
に設定されている場合、BusyMode
プロパティは読み取り専用です。
| キューが空の場合の動作 | キューが空でない場合の動作 | メモ |
---|---|---|---|
| キューにタスクを追加 | タスクを無視 | 場合によって、 |
| キューにタスクを追加 | タスクを完了。 | 実行キュー内のタスクを実行した後、タイマーを停止 |
| キューにタスクを追加 | キューが空になるまで待機してから、キューにタスクを格納 | 実行キューのタスクを管理するように、 |
詳細については、タイマー キューの競合への対処を参照してください。
例: t = timer('BusyMode','error')
ExecutionMode
— タイマー関数コールバックのスケジューリング
'singleShot'
(既定値) | 'fixedRate'
| 'fixedDelay'
| 'fixedSpacing'
タイマー関数コールバックのスケジューリング。次の表のいずれかの値として指定します。Running='on'
の場合、ExecutionMode
は読み取り専用です。次の表は、実行モードをまとめたものです。
実行モード |
|
---|---|
| タイマー コールバック関数は一度だけ実行されます。このため、 |
| タイマー コールバック関数を MATLAB 実行キューに追加した直後に開始します。 |
| MATLAB 実行キューの遅延に起因するタイム ラグ後、タイマー関数コールバックの実行が再開された後に開始します。 |
| タイマー コールバック関数の実行が終了すると開始します。 |
'singleShot'
は、timer
クラスに対する単一実行モードで、既定の値です。'fixedDelay'
、'fixedRate'
および'fixedSpacing'
は、サポートされている 3 つのマルチ実行モードです。これらのモードは、Period
プロパティの開始点を定義します。Period
プロパティは、実行間の時間間隔 (実行間隔は同じ) を指定します。実行が始まる時点のみ異なります。
例: t = timer('ExecutionMode','fixedDelay')
Name
— タイマーの名前
'timer-i'
(既定値) | 文字ベクトル | string スカラー
タイマーの名前。文字ベクトルまたは string スカラーとして指定します。
既定では 'timer-
i
'
となります。ここで i
はこのセッションで作成された i
番目の timer オブジェクトを示す番号です。i
を 1 にリセットするには、clear classes
コマンドを実行します。
例: t = timer('Name','MyTimer')
Tag
— オブジェクトのラベル
文字ベクトル | string スカラー
オブジェクトのラベル。文字ベクトルまたは string スカラーとして指定します。
例: t = timer('Tag','TimerTag')
ObjectVisibility
— オブジェクトの可視性
'on'
(既定値) | 'off'
オブジェクトの可視性。'on'
または 'off'
として指定します。アプリケーションによって作成された timer オブジェクトにエンドユーザーがアクセスすることを抑止できます。関数 timerfind
は、ObjectVisibility
プロパティが 'off'
に設定されているオブジェクトを返しません。オブジェクトは、表示されませんが有効です。表示されないものも含めて、メモリ内にあるすべての timer オブジェクトのリストを抽出するには、関数 timerfindall
を使用します。
例: t = timer('ObjectVisibility','off')
UserData
— ユーザー データ用のフィールド
任意の有効な MATLAB データ型
オブジェクトに追加するデータ用の汎用フィールド。
例: t = timer('UserData',"This is my first timer!")
AveragePeriod
— 実行間の平均時間
数値スカラー
実行間の平均時間。数値スカラーとして秒単位で指定します。タイマーが 2回、タイマー コールバックを実行するまで、値は NaN
です。
InstantPeriod
— 最新 2 回の実行の間隔
NaN
(既定値) | 数値スカラー
最新 2 回の実行の間隔。数値スカラーとして秒単位で指定します。タイマーが 2回、タイマー コールバックを実行するまで、値は NaN
です。
Running
— コールバック関数のアクティブな実行を示すインジケーター
'off'
| 'on'
コールバック関数のアクティブな実行を示すインジケーター。'off'
または 'on'
として指定します。
TasksExecuted
— タイマーが実行された回数
数値スカラー
タイマーが実行された回数。数値スカラーとして指定します。
Type
— オブジェクト タイプ
'timer'
(既定値)
オブジェクト タイプを識別する文字ベクトル。
出力引数
out
— 検出された timer オブジェクト
timer オブジェクトの配列
検出された timer オブジェクト。timer オブジェクトの配列として返されます。
詳細
表示状態の timer オブジェクト
"表示状態の timer オブジェクト" は、メモリ内に存在し、ObjectVisibility
プロパティが「on」に設定されている timer オブジェクトです。
ヒント
timerfind
は表示状態の timer オブジェクトのみを検索します。表示状態の timer オブジェクトはメモリ内に存在し、ObjectVisibility
プロパティが'on'
に設定されているオブジェクトです。非表示で有効なオブジェクトを検索するには、timerfindall
を使用します。
バージョン履歴
R2006a より前に導入
参考
timer
| delete
| get
| set
| timerfindall
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)