ところが、上記の移動平均によるスムージング処理には、以下の解決すべき課題が存在している。すなわち、この移動平均では、平均値を算出する算出期間を予め定める必要があるが、例えば、連続して入力する時間間隔が不定のパルスについての周波数(パルスの入力周期の逆数)をスムージング処理を施しつつ算出する場合に課題が生じる。つまり、この場合には、移動平均を算出する対象となるデータ(周波数)の時間間隔が不定であるため、パルスの入力周期が変動する場合に算出期間を適切な長さに設定することが難しく、このデータの時間間隔が予め設定した算出期間に対して十分に短いときには、確実にスムージングすることが可能となるが、逆にこのデータの時間間隔が予め設定した算出期間とほぼ等しいか、または長いときには、スムージングすることができないという解決すべき課題が存在している。また、移動平均を算出する対象となるデータの時間間隔が予め設定した算出期間に対して十分短くなるように、算出期間を長くしたときには、移動平均の算出までの時間が長くなるため、応答性が低下するという課題が生じる。
本発明は、かかる課題を解決すべくなされたものであり、時間間隔が不定のパルスについてのパルス特性値を確実にスムージング処理しつつ算出し得るパルス特性値算出方法を提供することを主目的とする。また、このパルス特性値算出方法を実行するパルス特性値算出装置を提供することを他の主目的とする。
上記目的を達成すべく請求項1記載のパルス特性値算出方法は、連続して入力する時間間隔が不定のパルスについての周波数を示すパルス特性値をスムージング処理を施しつつ算出する際に、新規な前記パルスを入力したときに、当該新規のパルスの1つ前の前記パルスの入力時から当該新規なパルスの入力時までの時間間隔に基づいて当該新規なパルスの入力時点での仮の前記パルス特性値を算出する仮特性値算出処理を実行し、次いで、前記新規なパルスの入力時からの経過時間tが前記時間間隔に達したとき、および次の前記パルスが入力されたときのいずれか早いときまでは、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、当該新規なパルスの入力時から単位時間毎に前記各経過時間tにおける前記パルス特性値を算出し、次の前記パルスの入力前に当該経過時間tが当該時間間隔に達した後においては、前記傾きbがゼロ以上の値のときには、前記一次関数(b×t+a)に基づいて算出される前記パルス特性値に代えて、当該経過時間tが当該時間間隔に達したときの前記パルス特性値を当該各経過時間tにおける前記パルス特性値として算出し、前記傾きbが負の値のときには、関数(1/t)に基づいて算出される値を下限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する本特性値算出処理を実行するパルス特性値算出方法であって、前記初期値aについては、前記1つ前のパルスの入力時から前記新規なパルスの入力時まで実行していた前記本特性値算出処理によって算出された最終の前記パルス特性値を使用し、前記傾きbについては、前記時間間隔を経過したとしたときに前記パルス特性値が前記仮のパルス特性値となる数値を使用する。
また、請求項2記載のパルス特性値算出方法は、請求項1記載のパルス特性値算出方法において、前記傾きbが負のときにおいて、前記経過時間tが前記時間間隔に達した時点から時間toを経過した後には、前記本特性値算出処理において、関数(1/(t−to))に基づいて算出される値を上限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する。
また、請求項3記載のパルス特性値算出方法は、請求項2記載のパルス特性値算出方法において、前記時間toを前記時間間隔に規定して前記上限値を算出する。
また、請求項4記載のパルス特性値算出方法は、連続して入力する時間間隔が不定のパルスについての周期を示すパルス特性値をスムージング処理を施しつつ算出する際に、
新規な前記パルスを入力したときに、当該新規のパルスの1つ前の前記パルスの入力時から当該新規なパルスの入力時までの時間間隔に基づいて当該新規なパルスの入力時点での仮の前記パルス特性値を算出する仮特性値算出処理を実行し、次いで、前記新規なパルスの入力時からの経過時間tが前記時間間隔に達したとき、および次の前記パルスが入力されたときのいずれか早いときまでは、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、当該新規なパルスの入力時から単位時間毎に前記各経過時間tにおける前記パルス特性値を算出し、次の前記パルスの入力前に当該経過時間tが当該時間間隔に達した後においては、前記傾きbが負の値のときには、前記一次関数(b×t+a)に基づいて算出される前記パルス特性値に代えて、当該経過時間tが当該時間間隔に達したときの前記パルス特性値を当該各経過時間tにおける前記パルス特性値として算出し、前記傾きbがゼロ以上の値のときには、関数(t)に基づいて算出される値を上限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する本特性値算出処理を実行するパルス特性値算出方法であって、前記初期値aについては、前記1つ前のパルスの入力時から前記新規なパルスの入力時まで実行していた前記本特性値算出処理によって算出された最終の前記パルス特性値を使用し、前記傾きbについては、前記時間間隔を経過したとしたときに前記パルス特性値が前記仮のパルス特性値となる数値を使用する。
また、請求項5記載のパルス特性値算出方法は、請求項4記載のパルス特性値算出方法において、前記傾きbがゼロ以上のときにおいて、前記経過時間tが前記時間間隔に達した時点から時間toを経過した後には、前記本特性値算出処理において、関数(t−to)に基づいて算出される値を下限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する。
また、請求項6記載のパルス特性値算出方法は、請求項5記載のパルス特性値算出方法において、前記時間toを前記時間間隔に規定して前記下限値を算出する。
また、上記目的を達成すべく請求項7記載のパルス特性値算出装置は、連続して入力する時間間隔が不定のパルスについての周波数を示すパルス特性値をスムージング処理を施しつつ算出するパルス特性値算出装置であって、新規な前記パルスを入力したときに、当該新規のパルスの1つ前の前記パルスの入力時から当該新規なパルスの入力時までの時間間隔に基づいて当該新規なパルスの入力時点での仮の前記パルス特性値を算出する仮特性値算出処理を実行し、次いで、前記新規なパルスの入力時からの経過時間tが前記時間間隔に達したとき、および次の前記パルスが入力されたときのいずれか早いときまでは、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、当該新規なパルスの入力時から単位時間毎に前記各経過時間tにおける前記パルス特性値を算出し、次の前記パルスの入力前に当該経過時間tが当該時間間隔に達した後においては、前記傾きbがゼロ以上の値のときには、前記一次関数(b×t+a)に基づいて算出される前記パルス特性値に代えて、当該経過時間tが当該時間間隔に達したときの前記パルス特性値を当該各経過時間tにおける前記パルス特性値として算出し、前記傾きbが負の値のときには、関数(1/t)に基づいて算出される値を下限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する本特性値算出処理を実行する処理部を備え、前記処理部は、前記初期値aについては、前記1つ前のパルスの入力時から前記新規なパルスの入力時まで実行していた前記本特性値算出処理によって算出された最終の前記パルス特性値を使用し、前記傾きbについては、前記時間間隔を経過したとしたときに前記パルス特性値が前記仮のパルス特性値となる数値を使用して前記本特性値算出処理を実行する。
また、請求項8記載のパルス特性値算出装置は、請求項7記載のパルス特性値算出装置において、前記処理部は、前記傾きbが負のときにおいて、前記経過時間tが前記時間間隔に達した時点から時間toを経過した後には、前記本特性値算出処理において、関数(1/(t−to))に基づいて算出される値を上限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する。
また、請求項9記載のパルス特性値算出装置は、請求項8記載のパルス特性値算出装置において、前記処理部は、前記時間間隔を前記時間toとして規定して前記上限値を算出する。
また、請求項10記載のパルス特性値算出装置は、連続して入力する時間間隔が不定のパルスについての周期を示すパルス特性値をスムージング処理を施しつつ算出するパルス特性値算出装置であって、新規な前記パルスを入力したときに、当該新規のパルスの1つ前の前記パルスの入力時から当該新規なパルスの入力時までの時間間隔に基づいて当該新規なパルスの入力時点での仮の前記パルス特性値を算出する仮特性値算出処理を実行し、次いで、前記新規なパルスの入力時からの経過時間tが前記時間間隔に達したとき、および次の前記パルスが入力されたときのいずれか早いときまでは、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、当該新規なパルスの入力時から単位時間毎に前記各経過時間tにおける前記パルス特性値を算出し、次の前記パルスの入力前に当該経過時間tが当該時間間隔に達した後においては、前記傾きbが負の値のときには、前記一次関数(b×t+a)に基づいて算出される前記パルス特性値に代えて、当該経過時間tが当該時間間隔に達したときの前記パルス特性値を当該各経過時間tにおける前記パルス特性値として算出し、前記傾きbがゼロ以上の値のときには、関数(t)に基づいて算出される値を上限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する本特性値算出処理を実行する処理部を備え、前記処理部は、前記初期値aについては、前記1つ前のパルスの入力時から前記新規なパルスの入力時まで実行していた前記本特性値算出処理によって算出された最終の前記パルス特性値を使用し、前記傾きbについては、前記時間間隔を経過したとしたときに前記パルス特性値が前記仮のパルス特性値となる数値を使用して前記本特性値算出処理を実行する。
また、請求項11記載のパルス特性値算出装置は、請求項10記載のパルス特性値算出装置において、前記処理部は、前記傾きbがゼロ以上のときにおいて、前記経過時間tが前記時間間隔に達した時点から時間toを経過した後には、前記本特性値算出処理において、関数(t−to)に基づいて算出される値を下限値として、当該各経過時間tにおける前記パルス特性値を前記一次関数(b×t+a)に基づいて算出する。
また、請求項12記載のパルス特性値算出装置は、請求項11記載のパルス特性値算出装置において、前記処理部は、前記時間間隔を前記時間toとして規定して前記下限値を算出する。
請求項1記載のパルス特性値算出方法、および請求項7記載のパルス特性値算出装置によれば、時間間隔が不定であって、時間間隔が変動するパルスについての周波数を示すパルス特性値を、スムージング処理を施しつつ確実に算出することができる。また、新規なパルスを入力した時点での仮のパルス特性値を使用して、新規なパルスの入力時から次のパルスを入力するまで、各経過時間tにおけるパルス特性値を算出して出力することができるため、この次のパルスの入力時までのパルス特性値を、例えば、この次のパルスの1つ前に入力したパルスの入力時に算出したパルス特性値を初期値とし、この次のパルスの入力時に算出したパルス特性値を最終値とする一次関数に基づいて、この次のパルスを入力した時点において遡って算出する方法と比較して、パルス特性値をより早く出力することができる(つまり応答速度を向上させることができる)。また、次のパルスの入力前に経過時間が時間間隔に達したときにおいて、傾きbがゼロ以上の値のときには、一次関数(b×t+a)に基づいて算出されるパルス特性値に代えて、この経過時間tが時間間隔に達したときのパルス特性値を各経過時間tにおけるパルス特性値として算出して出力するため、パルスのパルス特性値が低下したにも拘わらず、算出されるパルス特性値が増加するという事態を回避しつつ、スムージング処理を実行することができる。また、傾きbが負の値のときには、関数(1/t)に基づいて算出される値を下限値として適用しつつ、各経過時間tにおけるパルス特性値を一次関数(b×t+a)に基づいて算出するため、算出されるパルスのパルス特性値がゼロを割り込むといった事態についても回避しつつ、スムージング処理を実行することができる。
また、請求項2記載のパルス特性値算出方法、および請求項8記載のパルス特性値算出装置によれば、次のパルスの入力が遅れたり、または次のパルスが入力されない場合であっても、上限値の適用によってパルス特性値を強制的に低下させることができるため、パルスのパルス特性値が低下したにも拘わらず、算出されるパルス特性値が低下しないという事態の発生を確実に回避しつつ、スムージング処理を実行することができる。
また、請求項3記載のパルス特性値算出方法、および請求項9記載のパルス特性値算出装置によれば、時間toを上記の時間間隔とすることにより、次のパルスが入力されない状況においても、妥当な時刻で上限値の適用を開始することができる結果、違和感の少ないスムージング処理を実行することができる。
請求項4記載のパルス特性値算出方法、および請求項10記載のパルス特性値算出装置によれば、時間間隔が不定であって、時間間隔が変動するパルスについての周期を示すパルス特性値を、スムージング処理を施しつつ確実に算出することができる。また、新規なパルスを入力した時点での仮のパルス特性値を使用して、新規なパルスの入力時から次のパルスを入力するまで、各経過時間tにおけるパルス特性値を算出して出力することができるため、この次のパルスの入力時までのパルス特性値を、例えば、この次のパルスの1つ前に入力したパルスの入力時に算出したパルス特性値を初期値とし、この次のパルスの入力時に算出したパルス特性値を最終値とする一次関数に基づいて、この次のパルスを入力した時点において遡って算出する方法と比較して、パルス特性値をより早く出力することができる(つまり応答速度を向上させることができる)。また、次のパルスの入力前に経過時間が時間間隔に達したときにおいて、傾きbが負の値のときには、一次関数(b×t+a)に基づいて算出されるパルス特性値に代えて、この経過時間tが時間間隔に達したときのパルス特性値を各経過時間tにおけるパルス特性値として算出して出力するため、パルスのパルス特性値が低下したにも拘わらず、算出されるパルス特性値が増加するという事態を回避しつつ、スムージング処理を実行することができる。また、傾きbがゼロ以上の値のときには、関数(t)に基づいて算出される値を上限値として適用しつつ、各経過時間tにおけるパルス特性値を一次関数(b×t+a)に基づいて算出するため、算出されるパルスのパルス特性値が急激に上昇するといった事態についても回避しつつ、スムージング処理を実行することができる。
また、請求項5記載のパルス特性値算出方法、および請求項11記載のパルス特性値算出装置によれば、次のパルスの入力が遅れたり、または次のパルスが入力されない場合であっても、下限値の適用によってパルス特性値を強制的に上昇させることができるため、パルスのパルス特性値が上昇したにも拘わらず、算出されるパルス特性値が上昇しないという事態の発生を確実に回避しつつ、スムージング処理を実行することができる。
また、請求項6記載のパルス特性値算出方法、および請求項12記載のパルス特性値算出装置によれば、時間toを上記の時間間隔とすることにより、次のパルスが入力されない状況においても、妥当な時刻で下限値の適用を開始することができる結果、違和感の少ないスムージング処理を実行することができる。
以下、添付図面を参照して、パルス特性値算出処理およびこの処理を実行するパルス特性値算出装置1の実施の形態について説明する。なお、算出するパルス特性値として、周波数を例に挙げて説明する。
まず、周波数算出装置1の構成について、図面を参照して説明する。
周波数算出装置1は、図1に示すように、処理部2、記憶部3および出力部4を備え、連続して入力する時間間隔Tが不定のパルスPについての周波数foをスムージング処理を施しつつ算出し、算出した周波数foを出力する。
処理部2は、CPUなどで構成されて、図6に示すパルス特性値出力処理(本例では周波数出力処理)を実行する。この周波数出力処理では、処理部2は、仮特性値算出処理(本例では仮周波数算出処理)および本特性値算出処理(本例では本周波数算出処理)を実行してパルス特性値(本例では周波数fo)を算出し、算出した周波数foを示すデータDfを出力部4に出力する。この場合、処理部2は、仮周波数算出処理では、新規なパルスPを入力したときに、この新規のパルスPの1つ前のパルスPの入力時からこの新規なパルスPの入力時までの時間間隔T(直前の時間間隔T)に基づいて、この新規なパルスPの入力時点での仮のパルス特性値(本例では仮の周波数(「仮周波数」ともいう)fpr(=1/T))を算出する。この例では、時間間隔Tの逆数を求めて仮周波数fprを算出する。また、処理部2は、本周波数算出処理では、新規なパルスPの入力時からの経過時間tが時間間隔Tに達したとき(つまり、直前の時間間隔Tと同じ時間に達したとき)、および次のパルスPが入力されたときのいずれか早いときまで、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、この新規なパルスPの入力時から単位時間Δt毎に各経過時間tにおける周波数foを算出する。
また、処理部2は、経過時間tが上記した直前の時間間隔Tに達したときの方が早いとき(次のパルスPの入力前に経過時間tが上記した直前の時間間隔Tに達したとき)には、経過時間tがこの直前の時間間隔Tに達した以降、次のパルスPの入力までの間、上記の傾きbの値に応じて周波数foの算出方法を変えると共に、後述する下限値fo1および上限値fo2を適用して、単位時間Δt毎に各経過時間tにおける周波数foを算出する。具体的には、処理部2は、傾きbがゼロ以上の値のときには、一次関数(b×t+a)に基づいて算出される上記の周波数foに代えて、経過時間tが直前の時間間隔Tに達したときの周波数foを、それ以降の各経過時間tにおける周波数foとして算出すると共に、下限値fo1および上限値fo2を適用して、単位時間Δt毎に各経過時間tにおける周波数foを算出する。また、処理部2は、傾きbが負の値のときには、下限値fo1および上限値fo2を適用して、単位時間Δt毎に各経過時間tにおける周波数foを一次関数(b×t+a)に基づいて算出する。この場合、処理部2は、経過時間tが直前の時間間隔Tに達した以降において、各経過時間tにおける関数(1/t)に基づく値を、上記の方法で算出した周波数foに対する下限値fo1として使用する。また、処理部2は、経過時間tが時間間隔Tに達したとき(時点)から時間toを経過した時点以降であって次のパルスの入力前のときに、各経過時間tにおける関数(1/(t−to))に基づく値を上記の方法で算出した周波数foに対する上限値fo2として、下限値fo1と共に使用する。本例では、一例として、時間toは直前の時間間隔Tに規定されている。また、処理部2は、本周波数算出処理において、上記のようにして各経過時間tにおける周波数foを算出する都度、周波数foを示すデータDfを出力部4に出力する。したがって、処理部2から出力部4に対して、各経過時間tにおける周波数foを示すデータDfが単位時間Δt間隔で連続して出力される。
記憶部3は、一例としてROMおよびRAMなどの半導体メモリで構成されて、CPUの動作を規定するための動作プログラムと、処理部2によって計測された各パルスP間の上記の時間間隔Tと、この時間間隔Tに基づいて算出された仮周波数fprと、算出された各経過時間tにおける周波数fo(単位時間Δt毎の周波数fo)とを記憶する。また、記憶部3には、本周波数算出処理において使用される一次関数(b×t+a)の両パラメータ(初期値aおよび傾きb)の初期値(共に「0」)が予め記憶されている。出力部4は、LCDなどのモニタ装置、およびプリンタ装置やプロッタ装置などの印刷装置のうちの少なくとも1つで構成されて、処理部2から単位時間Δt間隔で出力されるデータDfを入力して、このデータDfで示される周波数foの時間的変化を波形として出力する。
次に、周波数算出装置1の動作について、周波数算出方法と併せて、図1〜図6を参照して説明する。なお、一例として、周波数算出装置1に入力される各パルスP(P1〜P12)は、図2に示す時間間隔T(T2〜T12)で、図1に示すように順次入力されるものとする。また、処理部2は、既に時刻t1でパルスP1を入力しており、パルスP1の入力時点からの時間(経過時間)tを計測しているものとする。
この周波数算出装置1では、作動状態において、処理部2が図6に示す周波数出力処理を実行する。この周波数出力処理50では、処理部2は、新規なパルスPの入力を繰り返し検出しつつ(ステップ51)、新規なパルスP2の入力を検出したとき(時刻t2。図3参照)には、仮周波数算出処理を実行する(ステップ52)。この仮周波数算出処理では、処理部2は、単位時間Δt間隔で計測していた経過時間tを、この新規なパルスP2と先のパルスP1との間の時間間隔T(この場合には、パルスP1,P2間の時間間隔Tであるため、時間間隔T2)として記憶部3に記憶する。この際に、処理部2は、計測した時間間隔T2に基づいて仮周波数fpr(=1/T2)を算出して、時間間隔T2と対応させて記憶する。
次いで、処理部2は、本周波数算出処理を実行する。この本周波数算出処理では、処理部2は、新規なパルスP2の入力時点(時刻t2)からの周波数fo(時刻t2から経過時間tを経過したときの周波数(各経過時間tにおける周波数)fo)を、一次関数(b×t+a)を用いて算出して出力する。まず、処理部2は、この一次関数の両パラメータ(初期値aおよび傾きb)を算出する(ステップ53)。具体的には、処理部2は、初期値aについては、1つ前のパルスP(本例ではパルスP1)の入力から新規なパルスP2の入力まで実行していた本周波数算出処理によって算出された周波数foの最終値(最終の周波数fo)を使用する。この場合、パルスP2の入力時(時刻t2)までの本周波数算出処理では、両パラメータa,bが初期値である「0」を共に使用して周波数foを算出するため、図4に示すように、最終の周波数foも「0」である。このため、初期値aとして「0」を使用する。また、処理部2は、傾きbについては、同図に示すように、時刻t2から時間間隔T2を経過したとしたとき(時刻tx)の周波数foが仮周波数fprとなる数値を計算して使用する。すなわち、処理部2は、パルスP2の入力時(時刻t2)までの本周波数算出処理によって算出された最終の周波数fo(0[Hz])と仮周波数fprとの差分(fpr−fo)を時間間隔T2で除算した数値を算出して、傾きb(Hz/sec)として使用する。本例では、時間間隔T2は1[sec]であることから、仮周波数fprは1(=1/T2)[Hz]となり、これにより、傾きb(=(fpr−fo)/T2)は数値「1」となる。よって、一次関数(b×t+a)は、tとなる。
続いて、処理部2は、パルスP2を入力した時点(時刻t2)からの経過時間tの計測を開始する(ステップ54)。具体的には、処理部2は、計測している経過時間tをゼロから単位時間Δtずつ増加させることで、新たな経過時間t(=t+Δt)を計測(算出)する。次いで、処理部2は、この経過時間tを一次関数(b×t+a)に代入して、周波数foを算出し(ステップ55)、続いて、計測している経過時間tが時間間隔T2(入力した新規なパルスP2とその1つ前のパルスP1との間の時間間隔T)に達したか否かを判別する(ステップ56)。この判別の結果、経過時間tが時間間隔T2に達していないときには、処理部2は、ステップ55において算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。次いで、処理部2は、次のパルスPが入力されたか否かを検出する(ステップ65)。処理部2は、ステップ65において次のパルスPの入力を検出するまで、上記した各ステップ54,55,56,64,65を繰り返す。本例では、図2に示すように、次のパルスP3は、処理部2が計測している経過時間tが時間間隔T2に達する前に入力される。このため、処理部2は、パルスP2の入力から次のパルスP3が入力されるまでの間は、単位時間Δtだけ経過する度に、経過時間tを一次関数(b×t+a(パルスP2,P3間では、一次関数t))に代入して周波数foを算出すると共に、算出した周波数foを示すデータDfを出力部4に出力する。
図2に示すように本例では、パルスP7の入力までは、各パルスの区間(パルスP2,P3の区間、パルスP3,P4の区間、パルスP4,P5の区間、パルスP5,P6の区間、パルスP6,P7の区間)において、新規なパルスの入力からの経過時間tが時間間隔Tに達する前に、または経過時間tが時間間隔Tに達すると同時に、次のパルスが入力される。つまり、次のパルスの入力前に、経過時間tが時間間隔Tに達するという事態が生じない。このため、これらの各区間では、処理部2は、上記したパルスP2,P3の区間のときと同様にして、新規なパルスの入力からの経過時間tを一次関数(b×t+a)に代入することにより、各経過時間tでの周波数foを算出すると共に、算出した周波数foを示すデータDfを出力部4に出力する。具体的には、パルスP3,P4の区間では、その直前の区間(パルスP2,P3の区間)での周波数foの最終値が0.5[Hz]であり、両パルスP2,P3の時間間隔T(つまりT3)が0.5[sec]であって仮周波数fprが2[Hz]となるため、初期値aは0.5[Hz]で、傾きbは数値「3」(=(fpr−fo)/T2=(2−0.5)/0.5)となる。このため、処理部2は、一次関数(3×t+0.5)に基づいて、周波数foを算出する。
同様にして、パルスP4,P5の区間では、その直前の区間(パルスP3,P4の区間)での周波数foの最終値(つまり、初期値a)が1.25[Hz]であり、また、両パルスP3,P4の時間間隔T(つまりT4)から算出される仮周波数fprが4(=1/0.25)[Hz]となるため、傾きbが数値「11」(=(4−1.25)/0.25)となる。したがって、処理部2は、一次関数(11×t+1.25)に基づいて、周波数foを算出する。次のパルスP5,P6の区間では、その直前の区間(パルスP4,P5の区間)での周波数foの最終値(つまり、初期値a)が2.625[Hz]であり、また、両パルスP4,P5の時間間隔T(つまりT5)から算出される仮周波数fprが8(=1/0.125)[Hz]となるため、傾きbが数値「43」(=(8−2.625)/0.125)となる。したがって、処理部2は、一次関数(43×t+2.625)に基づいて、周波数foを算出する。次のパルスP6,P7の区間では、その直前の区間(パルスP5,P6の区間)での周波数foの最終値(つまり、初期値a)が6.925[Hz]であり、また、両パルスP5,P6の時間間隔T(つまりT6)から算出される仮周波数fprが10(=1/0.1)[Hz]となるため、傾きbが数値「30.75」(=(10−6.925)/0.1)となる。したがって、処理部2は、一次関数(30.75×t+6.925)に基づいて、周波数foを算出する。
一方、次からの3つのパルスの区間(パルスP7,P8の区間、パルスP8,P9の区間、パルスP9,P10の区間)においては、図2に示すように、パルス間隔が徐々に長くなるため、新規なパルスの入力から次のパルスが入力されるまでの間に、新規なパルスの入力からの経過時間tが時間間隔Tに達する状態が発生する。このようなパルスの区間では、処理部2は、まず、新規なパルスの入力からの経過時間tが時間間隔Tに達するまでは、上記したパルスP2,P3の区間のときと同様にして、ステップ52の仮周波数算出処理を実行して仮周波数fprを算出し、本周波数算出処理におけるステップ53を実行して、初期値aおよび傾きbを算出する。その後は、処理部2は、本周波数算出処理におけるステップ54,55,56,64,65を繰り返し実行して、経過時間tを一次関数(b×t+a)に代入することにより、各経過時間tでの周波数foを算出すると共に、算出した周波数foを示すデータDfを出力部4に出力する。次いで、新規なパルスの入力からの経過時間tが時間間隔Tに達した以降、次のパルスPの入力までの間は、処理部2は、経過時間tが時間間隔Tに達するまで使用していた一次関数(b×t+a)の傾きbの値に応じて算出方法を変えて、周波数foを算出する。
具体的に、この3つの各パルスの区間での周波数foの算出方法について説明する。
まず、新規なパルスP7の入力(時刻t7a)から、パルスP7の入力からの経過時間tが時間間隔T(パルスP6,P7の時間間隔T7)に達する(時刻t7b)までは、処理部2は、上記したように、ステップ52の仮周波数算出処理を実行して仮周波数fpr(この場合、10(=1/0.1)[Hz])を算出し、本周波数算出処理におけるステップ53を実行して、初期値aおよび傾きbを算出する。この場合、その直前の区間(パルスP6,P7の区間)での周波数foの最終値(つまり、初期値a)が10[Hz]であり、また上記したように仮周波数fprが10[Hz]であるため、傾きbは数値「0」(=(10−10)/0.1)となる。このため、処理部2は、本周波数算出処理におけるステップ54,55,56,64,65を繰り返し実行して、経過時間tを一次関数(0×t+10)に代入することにより、各経過時間tでの周波数fo(一定の数値「10」)を算出すると共に、算出した周波数foを示すデータDfを出力部4に出力する。
次いで、新規なパルスP7の入力からの経過時間tが時間間隔T7に達したとき(時刻t7bになったとき)には、処理部2は、ステップ56においてこれを検出して、算出した傾きbがゼロ以上の値であるか否かを判別する(ステップ57)。この判別の結果、傾きbがゼロ以上の値のときには、処理部2は、経過時間tが時間間隔T7に達した時点での周波数fo(つまり、仮周波数fpr)を、それ以降の周波数foとして算出する(ステップ58)。一方、処理部2は、ステップ57での判別の結果、傾きbが負の値であるときには、ステップ56において、一次関数(b×t+a)に基づいて算出された経過時間tでの周波数foをそのまま使用する。本例では、傾きbが数値「0」であるため、処理部2は、ステップ57においてこれを検出して、ステップ58を実行することにより、経過時間tが時間間隔T7に達したときの周波数fo(仮周波数fpr。本例では数値「10」)を、それ以降の周波数foとして算出する。
続いて、処理部2は、ステップ57において傾きbが負の値であることを検出した後、またはステップ58を実行した後に、各経過時間tにおける関数(1/t)に基づく値を下限値fo1として算出する(ステップ59)。次いで、処理部2は、現在の経過時間tが、パルスP7の入力からの経過時間tが時間間隔T(T7)に達して(到達して)から(時刻t7bから)、時間to(本例では、時間間隔T7)を経過したか否か(時刻t7c(=t7b+to)に達したか否か)を判別する(ステップ60)。この判別の結果、処理部2は、経過時間tが時間間隔T7に達してから時間to(本例では、時間間隔T7)を経過していない(時刻t7cに達していない)と判別したときには、現時点において算出されている周波数fo(ステップ55で算出された周波数foまたはステップ58において算出された周波数fo)に対して、ステップ59において算出された下限値fo1を適用する(ステップ61)。つまり、処理部2は、現時点での周波数foと下限値fo1とを比較して、現時点での周波数foが下限値fo1以上のときには、現時点での周波数foを最終的な周波数foとし、現時点での周波数foが下限値fo1未満のときには、下限値fo1を最終的な周波数foとして算出する。処理部2は、現時点での周波数foは一定の数値「10」であり、常に、関数(1/t)に基づく値である下限値fo1(その最大値は、経過時間tが時間間隔T7に達したときの10(=1/0.1))[Hz]以上となるため、時刻t7bから時刻t7cまでの区間では、各ステップ54,55,56,57,58,59,60,61,64,65を繰り返し実行することにより、各経過時間tにおいて最終的な周波数foとして10[Hz]を算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。
その後、現在の経過時間tが時刻t7cに達したときには、処理部2は、ステップ60においてこれを検出して、各経過時間tにおける関数(1/(t−to))に基づく値を上限値fo2として算出し(ステップ62)、次いで、この算出した上限値fo2を、ステップ59において算出した下限値fo1と共に、現時点において算出されている周波数fo(ステップ55で算出された周波数foまたはステップ58において算出された周波数fo)に対して適用する(ステップ63)。つまり、処理部2は、現時点での周波数foと上限値fo2とを比較して、現時点での周波数foが上限値fo2未満のときには、現時点での周波数foを最終的な周波数foとし、現時点での周波数foが上限値fo2以上のときには、上限値fo2を最終的な周波数foとして算出する。また、下限値fo1については、上記したステップ61のときと同様にして適用する。処理部2は、現時点での周波数foは一定の10[Hz]であり、常に、関数(1/(t−to))に基づく値である上限値fo2(その最大値は、経過時間tが時刻t7cに達したときの10(=1/(0.2−0.1))[Hz]以上となるため、時刻t7cから次のパルスP8の入力(時刻t8a)までの区間では、各ステップ54,55,56,57,58,59,60,62,63,64,65を繰り返し実行することにより、各経過時間tにおいて関数(1/(t−to))に基づいて算出される値を最終的な周波数foとして算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。
同様にして、次のパルスP8,P9の区間でも、新規なパルスP8の入力(時刻t8a)から、パルスP8の入力からの経過時間tが時間間隔T(パルスP7,P8の時間間隔T(つまりT8))に達する(時刻t8b)までは、処理部2は、上記したように、ステップ52の仮周波数算出処理を実行して仮周波数fpr(この場合、3.333(=1/0.3)[Hz])を算出し、本周波数算出処理におけるステップ53を実行して、初期値aおよび傾きbを算出する。この場合、その直前の区間(パルスP7,P8の区間)での周波数foの最終値(つまり、初期値a)が5(=1/(0.3−0.1))[Hz]であり、また上記したように仮周波数fprが3.333[Hz]であるため、傾きbが数値「−5.556」(=(3.333−5)/0.3)となる。このため、処理部2は、本周波数算出処理におけるステップ54,55,56,64,65を繰り返し実行して、経過時間tを一次関数(−5.556×t+5)に代入することにより、各経過時間tでの周波数foを算出すると共に、算出した周波数foを示すデータDfを出力部4に出力する。
また、パルスP8,P9の区間では、パルスP8の入力からの経過時間tが時間間隔T8に達してから(時刻t8bから)時間to(本例では、時間間隔T8)が経過する前に、次のパルスP9が入力される。また、一次関数(−5.556×t+5)の傾きbが負の値となっている。このため、処理部2は、時刻t8bから次のパルスP9の入力までの間、各ステップ54,55,56,57,59,60,61,64,65を繰り返し実行することにより、ステップ55において一次関数(−5.556×t+5)に基づいて算出した各経過時間tでの周波数foに対して、ステップ59で算出した下限値fo1をステップ61において適用して、最終的な周波数foを算出し、算出した周波数foを示すデータDfを出力部4に出力する。本例では、一次関数(−5.556×t+5)に基づいて算出される周波数foは、下限値fo1よりも常に大きいため、処理部2は、一次関数(−5.556×t+5)に基づいて算出される周波数foを最終的な周波数foとして算出して、この周波数foを示すデータDfを出力部4に出力する。すなわち、このパルスP8,P9の区間では、全区間に亘って、一次関数(−5.556×t+5)に基づいて算出された周波数foが最終的な周波数foとして算出される。
次のパルスP9,P10の区間でも、新規なパルスP9の入力(時刻t9a)からの経過時間tが時間間隔T(パルスP8,P9の時間間隔T(つまりT9))に達する(時刻t9b)までは、処理部2は、上記したように、ステップ52の仮周波数算出処理を実行して仮周波数fpr(この場合、2.857(=1/0.35)[Hz])を算出し、本周波数算出処理におけるステップ53を実行して、初期値aおよび傾きbを算出する。この場合、その直前の区間(パルスP8,P9の区間)での周波数foの最終値(つまり、初期値a)が3.0555[Hz]であり、また上記したように仮周波数fprが2.857[Hz]であるため、傾きbが数値「−0.5667」(=(2.857−3.0555)/0.35)となる。したがって、処理部2は、本周波数算出処理におけるステップ54,55,56,57,59,60,61,64,65を繰り返し実行して、経過時間tを一次関数(−0.5667×t+3.0555)に代入することにより、各経過時間tでの周波数foを算出すると共に、算出した周波数foを示すデータDfを出力部4に出力する。
次いで、新規なパルスP9の入力からの経過時間tが時間間隔T9に達したとき(時刻t9bになったとき)には、処理部2は、ステップ56においてこれを検出して、算出した傾きbがゼロ以上の値であるか否かを判別する(ステップ57)。この判別の結果、傾きbがゼロ以上の値のときには、処理部2は、経過時間tが時間間隔T9に達した時点での周波数fo(つまり、仮周波数fpr)を、それ以降の周波数foとして算出する(ステップ58)。一方、処理部2は、ステップ57での判別の結果、傾きbが負の値であるときには、ステップ56において、一次関数(b×t+a)に基づいて算出された経過時間tでの周波数foを、そのまま、経過時間tでの周波数foとする。本例では、傾きbが負(数値「−0.5667」)であるため、処理部2は、一次関数(−0.5667×t+3.0555)に基づいて算出された経過時間tでの周波数foを、経過時間tでの周波数foとする。
続いて、処理部2は、ステップ57において傾きbが負の値であることを検出した後、経過時間tにおける関数(1/t)に基づく値を下限値fo1として算出する(ステップ59)。次いで、処理部2は、現在の経過時間tが、パルスP9の入力からの経過時間tが時間間隔T(T9)に達して(到達して)から(時刻t9bから)、時間to(本例では、時間間隔T9)を経過したか否か(時刻t9c(=t9b+to)に達したか否か)を判別する(ステップ60)。この判別の結果、処理部2は、経過時間tが時間間隔T(T9)に達して(到達して)から時間to(本例では、時間間隔T9)を経過していない(時刻t9cに達していない)と判別したときには、現時点において算出されている周波数fo(ステップ55で算出された周波数foまたはステップ58において算出された周波数fo)に対して、ステップ59において算出された下限値fo1を適用する(ステップ61)。つまり、処理部2は、現時点での周波数foと下限値fo1とを比較して、現時点での周波数foが下限値fo1以上のときには、現時点での周波数foを最終的な周波数foとし、現時点での周波数foが下限値fo1未満のときには、下限値fo1を最終的な周波数foとして算出する。このパルスP9,P10の区間における時刻t9bから時刻t9cまでの間では、図3,5に示すように、ステップ55において上記一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foは、常に下限値fo1以上となるため、処理部2は、各ステップ54,55,56,57,59,60,61,64,65を繰り返し実行することにより、この一次関数(−0.5667×t+3.0555)に基づいて算出された各経過時間tでの周波数foを最終的な周波数foとして算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。
その後、経過時間tが時刻t9cに達したときには、処理部2は、ステップ60においてこれを検出して、各経過時間tにおける関数(1/(t−to))に基づく値を上限値fo2として算出し(ステップ62)、次いで、この算出した上限値fo2を、ステップ59において算出した下限値fo1と共に、現時点において算出されている周波数fo(ステップ55で算出された周波数foまたはステップ58において算出された周波数fo)に対して適用する(ステップ63)。つまり、処理部2は、現時点での周波数foと上限値fo2とを比較して、現時点での周波数foが上限値fo2未満のときには、現時点での周波数foを最終的な周波数foとし、現時点での周波数foが上限値fo2以上のときには、上限値fo2を最終的な周波数foとして算出する。また、下限値fo1については、上記したステップ61のときと同様にして適用する。このパルスP9,P10の区間における時刻t9cから時刻t9dまでの間では、図3,5に示すように、ステップ55において上記一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foは、下限値fo1以上で、かつ上限値fo2未満となる。このため、処理部2は、各ステップ54,55,56,57,59,60,62,63,64,65を繰り返し実行することにより、この一次関数(−0.5667×t+3.0555)に基づいて算出された各経過時間tでの周波数foを最終的な周波数foとして算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。
その後、経過時間tが時刻t9dに達したときには、一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foと関数(1/(t−to))に基づいて算出された上限値fo2とが一致し、時刻t9dから時刻t9eまでの間では、図3,5に示すように、ステップ55において上記一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foは、上限値fo2以上となる。このため、処理部2は、各ステップ54,55,56,57,59,60,62,63,64,65を繰り返し実行することにより、ステップ62において算出される各経過時間tでの上限値fo2を最終的な周波数foとして算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。
その後、経過時間tが時刻t9eに達したときには、一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foと関数(1/(t−to))に基づいて算出された上限値fo2とが再び一致し、時刻t9eの後、時刻t9fまでの間では、図3,5に示すように、ステップ55において上記一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foは、再び、下限値fo1以上で、かつ上限値fo2未満となる。このため、処理部2は、各ステップ54,55,56,57,59,60,62,63,64,65を繰り返し実行することにより、この一次関数(−0.5667×t+3.0555)に基づいて算出された各経過時間tでの周波数foを最終的な周波数foとして算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。
その後、経過時間tが時刻t9fに達したときには、一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foと関数(1/t)に基づいて算出された下限値fo1とが一致し、時刻t9fの後、次のパルスP10の入力までの間では、図3,5に示すように、ステップ55において上記一次関数(−0.5667×t+3.0555)に基づいて算出された周波数foは、下限値fo1未満となる。このため、処理部2は、各ステップ54,55,56,57,59,60,62,63,64,65を繰り返し実行することにより、ステップ59において算出される各経過時間tでの下限値fo1を最終的な周波数foとして算出して、算出した周波数foを示すデータDfを出力部4に出力する(ステップ64)。このため、パルスP9,P10間での周波数fo最終値は、0.1667(=1/6)[Hz]となる。
次いで、新規なパルスP10が入力されたとき(時刻t10。図3参照)には、処理部2は、ステップ65においてこのパルスP10の入力を検出して、仮周波数算出処理を実行して、計測していた経過時間tを、この新規なパルスP10と先のパルスP9との間の時間間隔T(時間間隔T10(本例では6[sec]))として記憶部3に記憶すると共に、仮周波数fpr(0.1667=1/T10)を算出して、時間間隔T10と対応させて記憶する。次いで、処理部2は、本周波数算出処理を実行して、時刻t10からの各経過時間tにおける周波数foを算出して、算出した周波数foを示すデータDfを出力部4に出力する。
本例では、このパルスP10以降の各パルスの区間(パルスP10,P11の区間、およびパルスP11,P12の区間)については、図2に示すように時間間隔Tが次第に短くなるため、新規なパルスの入力からの経過時間tが時間間隔Tに達する前に、または経過時間tが時間間隔Tに達すると同時に、次のパルスが入力される。このため、これらの各区間では、処理部2は、例えば、上記したパルスP2,P3の区間のときと同様にして、各ステップ54,55,56,64,65を繰り返し実行することにより、ステップ55において一次関数(b×t+a)に基づいて算出される周波数foを最終的な周波数foとして算出して、この周波数foを示すデータDfを出力部4に出力する。
具体的には、パルスP10,P11の区間では、ステップ53において、処理部2が、その直前の区間(パルスP9,P10の区間)での周波数foの最終値が0.1667[Hz]であり、両パルスP9,P10の時間間隔T(つまりT10)が6[sec]であって仮周波数fprが0.1667[Hz]となることから、初期値aを0.1667[Hz]と算出し、また傾きbを数値「0」(=(fpr−fo)/T10=(0.1667−0.1667)/6)と算出する。このため、処理部2は、一次関数(0×t+0.1667)に基づいて、周波数fo(一定値:0.1667[Hz])を算出して(ステップ55)、この周波数foを示すデータDfを出力部4に出力する(ステップ64)。
次いで、新規なパルスP11が入力されたとき(時刻t11。図3参照)には、処理部2は、ステップ65においてこのパルスP11の入力を検出して、上記したパルスP10の入力時と同様にして、仮周波数算出処理を実行して、計測していた経過時間tを、この新規なパルスP11と先のパルスP10との間の時間間隔T(時間間隔T11(本例では0.8[sec]))として記憶部3に記憶すると共に、仮周波数fpr(1.25(=1/T11)[Hz])を算出して、時間間隔T11と対応させて記憶する。次いで、処理部2は、本周波数算出処理を実行して、時刻t11からの各経過時間tにおける周波数foを算出して、算出した周波数foを示すデータDfを出力部4に出力する。
具体的には、パルスP11,P12の区間では、ステップ53において、処理部2が、その直前の区間(パルスP10,P11の区間)での周波数foの最終値が0.1667[Hz]であり、両パルスP10,P11の時間間隔T(つまりT11)が0.8[sec]であって仮周波数fprが1.25[Hz]となることから、初期値aを0.1667[Hz]と算出し、また傾きbを数値「1.354」(=(fpr−fo)/T11=(1.25−0.1667)/0.8)と算出する。このため、処理部2は、一次関数(1.354×t+0.1667)に基づいて、各経過時間tにおける周波数foを算出して(ステップ55)、この周波数foを示すデータDfを出力部4に出力する(ステップ64)。
以上のようにして、処理部2が、パルスP2の入力からパルスP12の入力までの区間について、各パルス区間での新規のパルスの入力時から単位時間Δt毎に各経過時間tにおける周波数foを算出し、この周波数foを示すデータDfを出力部4に対して出力する。出力部4は、このデータDfを入力して、このデータDfで示される周波数foの時間的変化を波形として出力する。これにより、図3において実線で示すように、周波数foの時間的変化を示す波形が出力部4に出力される。この波形は、同図において破線で示した階段波状の波形(各パルスPの入力時点で算出される仮周波数fprをそのまま周波数foとして、次の新規なパルスPの入力まで維持することで求められる波形)に対して、十分にスムージング処理された波形となる。
このように、この周波数算出処理および周波数算出装置1では、新規なパルスPを入力したときに、この新規のパルスPの1つ前のパルスPの入力時からこの新規なパルスPの入力時までの時間間隔Tに基づいてこの新規なパルスPの入力時点での仮周波数fprを算出する仮周波数算出処理を実行し、次いで、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、新規なパルスPの入力時から単位時間Δt毎に各経過時間tにおける周波数foを算出し、次のパルスPの入力前に経過時間tが上記の時間間隔Tに達した以降においては、傾きbがゼロ以上の値のときには、一次関数(b×t+a)に基づいて算出される周波数foに代えて、この経過時間tが時間間隔Tに達したときの周波数foを各経過時間tにおける周波数foとして算出し、傾きbが負の値のときには、関数(1/t)に基づいて算出される値を下限値fo1として、各経過時間tにおける周波数foを一次関数(b×t+a)に基づいて算出する本特性値算出処理を実行する。この場合、初期値aについては、1つ前のパルスPの入力時から新規なパルスPの入力時まで実行していた本周波数算出処理によって算出された最終の周波数fo(周波数foの最終値)を使用し、傾きbについては、上記の時間間隔Tを経過したとしたときに周波数foが仮周波数fprとなる数値を算出して使用する。
したがって、この周波数算出処理および周波数算出装置1によれば、時間間隔Tが不定であって、時間間隔Tが変動するパルスPについての周波数foを、スムージング処理を施しつつ確実に算出することができる。また、新規なパルスPを入力した時点でのパラメータ(仮周波数fprおよび時間間隔T)を使用して、新規なパルスPの入力時から次のパルスPを入力するまで、単位時間Δt毎に各経過時間tにおける周波数foを算出して出力することができるため、この次のパルスPの入力時までの周波数を、例えば、この次のパルスPの1つ前に入力したパルスの入力時に算出した周波数を初期値とし、この次のパルスPの入力時に算出した周波数を最終値とする一次関数に基づいて単位時間Δt毎に各経過時間tにおける周波数として、この次のパルスPを入力した時点において遡って算出する方法と比較して、周波数fo(周波数foを示すデータDf)をより早く出力することができる(つまり応答速度を向上させることができる)。また、次のパルスPの入力前に経過時間tが時間間隔Tに達したとき(パルスPの周波数が低下したとき)において、傾きbがゼロ以上の値のときには、一次関数(b×t+a)に基づいて算出される周波数foに代えて、この経過時間tが時間間隔Tに達したときの周波数foを各経過時間tにおける周波数foとして算出して出力するため、パルスPの周波数が低下したにも拘わらず、算出される周波数foが増加するという事態を回避しつつ、スムージング処理を実行することができる。また、傾きbが負の値のときには、関数(1/t)に基づいて算出される値を下限値fo1として適用しつつ、各経過時間tにおける周波数foを一次関数(b×t+a)に基づいて算出するため、算出されるパルスPの周波数がゼロを割り込むといった事態についても回避しつつ、スムージング処理を実行することができる。
また、この周波数算出処理および周波数算出装置1では、一次関数(b×t+a)の傾きbが負のときにおいて、経過時間tが時間間隔Tに達した時点から時間toを経過した時点以後で、かつ次のパルスPの入力前のときに、本特性値算出処理において、関数(1/(t−to))に基づいて算出される値を上限値fo2として適用しつつ、上記の下限値fo1を適用して、各経過時間tにおける周波数foを一次関数(b×t+a)に基づいて算出することによってスムージング処理を実行する。
したがって、この周波数算出処理および周波数算出装置1によれば、次のパルスの入力が遅れたり、次のパルスが入力されない場合であっても、上限値fo2の適用によって周波数foを強制的に低下させることができるため、パルスPの周波数が低下したにも拘わらず、算出される周波数foが低下しないという事態の発生を確実に回避しつつ、スムージング処理を実行することができる。
また、この周波数算出処理および周波数算出装置1によれば、この時間toを直前の時間間隔Tに規定して上限値を算出することにより、この新規なパルスの直前のパルスの間隔(つまり時間間隔T)に応じて、上限値fo2の適用時期を変更することができる。例えば、車速に関しては、急激に車速を高める運転の場合には、減速も急激に行われることが多く、逆に、ゆっくりと車速を高める運転の場合には、減速もゆっくりと行われることが多いなど、自然界における物理量の変化では、増加のときの傾向と低下のときの傾向とが同じになる場合が多いと考えられる。このため、このような物理量の変化をパルスPの周波数foとして検出する場合において、上記のようにして時間toを直前の時間間隔Tとすることにより、次のパルスPが入力されない状況においても、妥当な時刻で上限値fo2の適用を開始することができる結果、違和感の少ないスムージング処理を実行することができる。
なお、一次関数(b×t+a)に基づいて算出される周波数foに対して、下限値fo1および上限値fo2の双方を適用する例について上記したが、下限値fo1のみを適用する方法を採用してもよいのは勿論である。この下限値fo1のみを適用する方法においても、各パルスの間隔が次第に狭まるか、または等しい状態に維持される区間(例えば、図3におけるパルスP2の入力からパルスP7の入力までの区間)では、上記した方法と同様にして一次関数(b×t+a)に基づいて、直線的にスムージングされる。一方、パルスP7の入力からパルスP8の入力までの区間では、周波数foが一定値(10[Hz])に維持され、次のパルスP8の入力からパルスP9の入力までの区間では、この区間における開始から時間間隔T(T8)を経過するまでの期間は一次関数(b×t+a)(本例では、−22.2×t+10)に基づいてスムージングされ、時間間隔T(T8)を経過した後、次のパルスP9の入力までの期間は下限値fo1で規制されて、スムージングされる。したがって、この下限値fo1のみを適用する方法においても、周波数foのスムージングを行いつつ、次のパルスPの入力時までの周波数を、例えば、この次のパルスPの1つ前に入力したパルスの入力時に算出した周波数を初期値とし、この次のパルスPの入力時に算出した周波数を最終値とする一次関数に基づいて単位時間Δt毎に各経過時間tにおける周波数として、この次のパルスPを入力した時点において遡って算出する方法と比較して、周波数fo(周波数foを示すデータDf)をより早く出力することができる(つまり応答速度を向上させることができる)。
また、上限値fo2の適用に際して、時間toを直前のパルスPの間隔(時間間隔T)と一致させる好ましい構成を採用した例について上記したが、直前のパルスPの間隔(時間間隔T)よりも若干短く規定する構成を採用したり、逆に若干長く規定する構成を採用してもよいのは勿論である。
また、パルス特性値として周波数foを算出して出力する周波数算出処理および周波数算出装置1について上記したが、上記した仮周波数算出処理における仮周波数fpr(=1/T)の算出に代えて、上記した直前の時間間隔Tをそのまま使用することで、各パルスPの周期をパルス特性値として出力する周期算出処理方法および周期算出装置を実現することもできる。図示はしないが、この構成においては、周期出力処理(パルス特性値出力処理)では、処理部2は、仮周期算出処理(仮特性値算出処理)および本周期算出処理(本特性値算出処理)を実行して周期(パルス特性値)を算出し、算出した周期を示すデータを出力部4に出力する。この場合、処理部2は、仮周期算出処理では、新規なパルスPを入力したときに、この新規のパルスPの1つ前のパルスPの入力時から新規なパルスPの入力時までの時間間隔T(直前の時間間隔)を、新規なパルスPの入力時点での仮の周期(仮のパルス特性値)とする。また、処理部2は、本周期算出処理では、まず、初期値aについては、1つ前のパルスPの入力から新規なパルスPの入力まで実行していた本周期算出処理によって算出された周期の最終値(最終の周期)を使用し、傾きbについては、新規なパルスPの入力時から直前の時間間隔Tを経過したとしたときの周期が、新規なパルスPの入力時点での仮の周期となる数値を使用することで、初期値aおよび傾きbを決定する。次いで、処理部2は、新規なパルスPの入力時からの経過時間tが直前の時間間隔Tに達したとき(つまり、直前の時間間隔Tと同じ時間に達したとき)、および次のパルスPが入力されたときのいずれか早いときまで、初期値aおよび傾きbで規定される一次関数(b×t+a)に基づいて、この新規なパルスPの入力時から単位時間Δt毎に各経過時間tにおける周期を算出し、新規なパルスPの入力よりも早く時経過時間tが上記の時間間隔Tに達したとき以降においては、傾きbが負の値のときには、一次関数(b×t+a)に基づいて算出される周期に代えて、経過時間tが時間間隔Tに達したときの周期を各経過時間tにおける周期として算出し、傾きbがゼロ以上の値のときには、一次関数(b×t+a)に基づいて算出される周期を、各経過時間tにおける関数(t)に基づく値を上限値とし、関数(t−to)に基づく値を下限値として適用しつつ、各経過時間tにおける周期として算出する。また、処理部2は、本周期算出処理において、上記のようにして各経過時間tにおける周期を算出する都度、周期を示すデータを出力部4に出力する。これにより、処理部2から出力部4に対して、各経過時間tにおける周期を示すデータが単位時間Δt間隔で連続して出力される。
したがって、この周期算出処理および周期算出装置によれば、時間間隔Tが不定であって、時間間隔Tが変動するパルスPについての周期を、上記した周波数の算出のときと同様の効果、すなわち、周期(周期を示すデータ)をより早く出力しつつ(つまり応答速度を向上させつつ)、スムージング処理を施しつつ確実に算出することができるという効果を奏することができる。また、次のパルスPの入力前に経過時間tが時間間隔Tに達したとき(パルスPの周期が上昇したとき)において、傾きbが負の値のときには、一次関数(b×t+a)に基づいて算出される周期に代えて、この経過時間tが時間間隔Tに達したときの周期を各経過時間tにおける周期として算出して出力するため、パルスPの周期が上昇したにも拘わらず、算出される周期が減少するという事態を回避しつつ、スムージング処理を実行することができるという効果を奏することができる。また、また、傾きbがゼロ以上の値のときには、関数(t)に基づいて算出される値を上限値として適用しつつ、各経過時間tにおける周期を一次関数(b×t+a)に基づいて算出するため、算出されるパルスPの周期が急激に上昇するといった事態についても回避しつつ、スムージング処理を実行することができる。また、関数(t−to)に基づいて算出される値を下限値として適用しつつ、上記の上限値を適用して、各経過時間tにおける周期を一次関数(b×t+a)に基づいて算出することによってスムージング処理を実行するため、次のパルスの入力が遅れたり、次のパルスが入力されない場合であっても、下限値の適用によって周期を強制的に上昇させることができるため、パルスPの周期が上昇したにも拘わらず、算出される周期が上昇しないという事態の発生を確実に回避しつつ、スムージング処理を実行することができる。また、この時間toを直前の時間間隔Tに規定して下限値を算出することにより、この新規なパルスの直前のパルスの間隔(つまり時間間隔T)に応じて、下限値の適用時期を変更することができるという効果を奏することができる。
また、処理部2および記憶部3を1つのDSP(Digital Signal Processor)で構成してもよいのは勿論である。