説明

丸め処理方法及びプログラム

【課題】本発明は、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束する丸め処理方法及びプログラムの提供を目的とする。
【解決手段】本願発明の丸め処理方法は、IIR型フィルタに関する動作情報Iを取得する動作情報取得手順S101と、予め定められた2以上の丸め処理のなかから、動作情報Iに対応する1つの丸め処理を選択する選択手順S102と、選択手順S102で選択した丸め処理を用いてIIR型フィルタへの入力信号Sを丸める丸め処理手順S103と、を順に有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、有限長精度の数値データの丸め処理を複数回行う丸め処理方法及びプログラムに関する。
【背景技術】
【0002】
計算機等で有限長精度の数値演算を行うときに指定のビット位置で丸め処理を行う。丸め処理の方法には、IEEE(Institute of Electrical and Electronics Engineers,.Inc.)754等の複数の方法があり、それぞれ特性や処理量が異なる(例えば、特許文献1参照。)。
【0003】
特許文献1の方法は、演算器から出力された乗算結果の符合に基づいて、正側加算器又は負側加算器を選択し、乗算器から出力された正の乗算結果を正側加算器に出力し、乗算器から出力された負の乗算結果を負側加算器に出力することにより、正負を分けて累加算演算を行う。これにより、演算器のビット幅を広げることなく、桁落ちを防止する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2003−241958号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
IIR(Infinite Impulse Response)フィルタで有限長精度の数値演算を行ったときに、入力が0になっても丸め誤差によって0に収束しなくなる場合がある。例えば、IIRフィルタを用いたHPF(High Pass filter)では、演算で扱うデータのビット数が少ないと、丸めによる誤差の割合が高いデータを次のフィルタ演算で使用することになる。このため、入力が0になっても丸め誤差によって0に収束しなくなる場合がある。
【0006】
特許文献1の方法は、正側加算器又は負側加算器を用いるため、演算で扱うデータのビット数が少ないと、丸めによる誤差の割合が高いデータを次のフィルタ演算で使用することになる。このため、入力が0になっても丸め誤差によって0に収束しなくなる場合がある。
【0007】
したがって、本発明は、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束する丸め処理方法及びプログラムの提供を目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するために、本願発明の丸め処理方法は、IIR型フィルタに関する動作情報を取得する動作情報取得手順と、予め定められた2以上の丸め処理のなかから、前記動作情報に対応する1つの丸め処理を選択する選択手順と、前記選択手順で選択した丸め処理を用いて前記IIR型フィルタへの入力信号を丸める丸め処理手順と、を順に有する。
【0009】
丸め処理手順を有するため、IIR型フィルタへの入力信号を丸めることができる。丸め処理手順の前に動作情報取得手順及び選択手順を有するため、動作情報を用いて入力が0になれば丸め誤差によって0に収束する丸め処理を選択することができる。したがって、本願発明は、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束する丸め処理方法を提供することができる。
【0010】
本願発明の丸め処理方法では、前記IIR型フィルタへの入力信号が入力され、前記入力信号の符号及び絶対値を前記動作情報として作成する入力信号情報作成手順を、前記動作情報取得手順の前にさらに有し、前記動作情報取得手順において、前記IIR型フィルタへの入力信号の符号及び絶対値を前記動作情報として取得し、前記選択手順において、前記入力信号の絶対値が予め定められた閾値よりも小さいときは0への丸め処理を選択し、前記入力信号の符号が正でありかつ前記入力信号の絶対値が前記閾値よりも大きいときは正の無限大の丸め処理を選択し、前記入力信号の符号が負でありかつ前記入力信号の絶対値が前記閾値よりも大きいときは負の無限大の丸め処理を選択してもよい。
【0011】
本願発明の丸め処理方法では、前記入力信号以外のIIR型フィルタに関する信号である外部信号が入力され、入力された前記外部信号に応じて、前記予め定められた2以上の丸め処理のいずれかを指定する指定情報を前記動作情報として作成する外部信号情報作成手順を、前記動作情報取得手順の前にさらに有し、前記動作情報取得手順において、前記指定情報を前記動作情報として取得し、前記選択手順において、前記指定情報の指定する丸め処理を選択してもよい。
【0012】
上記目的を達成するために、本願発明のプログラムは、本願発明の丸め処理方法を、コンピュータに実行させるためのプログラムである。
本願発明のプログラムにより、動作情報取得手順、選択手順及び丸め処理手順を、コンピュータに順に実行させることができる。したがって、本願発明のプログラムは、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束するプログラムを提供することができる。
【0013】
なお、上記各発明は、可能な限り組み合わせることができる。
【発明の効果】
【0014】
本発明によれば、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束する丸め処理方法及びプログラムを提供することができる。
【図面の簡単な説明】
【0015】
【図1】実施形態1に係るIIRフィルタの構成の一例を示す。
【図2】実施形態1に係る丸め処理方法の一例を示す。
【図3】実施形態1に係る丸め処理部、入力信号情報作成部及び判定部の拡大図を示す。
【図4】実施形態2に係るIIRフィルタの構成の一例を示す。
【図5】実施形態2に係る丸め処理方法の一例を示す。
【図6】実施形態2に係る丸め処理部、入力信号情報作成部及び判定部の拡大図を示す。
【発明を実施するための形態】
【0016】
添付の図面を参照して本発明の実施形態を説明する。以下に説明する実施形態は本発明の実施の例であり、本発明は、以下の実施形態に制限されるものではない。なお、本明細書及び図面において符号が同じ構成要素は、相互に同一のものを示すものとする。
【0017】
(実施形態1)
図1に、実施形態1に係るIIRフィルタの構成の一例を示す。本実施形態に係るIIRフィルタは、入力信号入力端子11と、加算器16と、丸め処理部12と、遅延部13−1,13−2と、係数乗算部14−1,14−2と、出力端子15と、を備え、有限長精度の数値データで数値演算を行う。
【0018】
例えば、入力信号入力端子11に16bitの入力信号Sが入力される。加算器16は、入力信号入力端子11に入力された入力信号Sと、係数乗算部14−1からの32bitの信号S−1及び係数乗算部14−2からの32bitの信号S−2と、を加算して、34bitの信号Sを出力する。丸め処理部12は、判定部22からの命令Oに従って、34bitの信号Sの丸め処理を行い、16bitの出力信号Sを出力する。これにより、出力端子15から、丸め処理を行った16bitの出力信号Sが出力される。
【0019】
遅延部13−1は、予め定められた伝達関数に従って、出力信号Sを遅延させ、信号S―1を出力する。係数乗算部14−1は、遅延部13−1からの信号S−1を、予め定められた係数を用いて乗算し、32bitの信号S−1を出力する。遅延部13−2は、予め定められた伝達関数に従って、信号S―1を遅延させ、信号S―2を出力する。係数乗算部14−2は、遅延部13−2からの信号S−2を、予め定められた係数を用いて乗算し、32bitの信号S−2を出力する。
【0020】
ここで、遅延部13−1及び遅延部13−2は、例えば、シフトレジスタである。伝達関数は、例えば逆Z変換である。係数乗算部14−1及び係数乗算部14−2は、例えば16bitの係数との乗算器である。このように、実施形態1に係るIIRフィルタは、固定小数点演算器を使用してIIR型フィルタ処理を行う。
【0021】
さらに、本実施形態に係るIIRフィルタは、判定部22と、入力信号情報作成部23と、を備え、入力信号Sを判断材料として複数の丸めアルゴリズムから丸め方を選択する。これにより、演算器が扱うビット数を増加させることなく、小入力信号時の丸め誤差の影響を軽減する。
【0022】
実施形態1に係るプログラムは、実施形態1に係る丸め処理方法を、コンピュータに実行させるためのプログラムである。図2に、本実施形態に係る丸め処理方法の一例を示す。本実施形態に係る丸め処理方法は、入力信号情報作成手順S104と、動作情報取得手順S101と、選択手順S102と、丸め処理手順S103と、を順に有する。
【0023】
図3に、丸め処理部、入力信号情報作成部及び判定部の拡大図を示す。丸め処理部12は、負の無限大への丸め処理部31−1と、0への丸め処理部31−2と、正の無限大への丸め処理部31−3と、切り替えスイッチ32と、を備える。この場合の丸め処理方法について説明する。
【0024】
入力信号情報作成手順S104では、IIR型フィルタへの入力信号Sが入力され、入力信号情報作成部23が、入力信号Sの符号及び絶対値を動作情報Iとして作成する。
【0025】
動作情報取得手順S101では、判定部22が、入力信号情報作成部23からIIR型フィルタに関する動作情報Iを取得する。本実施形態では、動作情報Iは、入力信号Sの符号及び入力信号Sの絶対値である。
【0026】
選択手順S102では、予め定められた2以上の丸め処理のなかから、動作情報に対応する1つの丸め処理を選択する。例えば、判定部22は、負の無限大への丸め処理、0への丸め処理及び正の無限大への丸め処理のなかから、動作情報Iに対応する1つの丸め処理を選択する。そして、判定部22は、選択した丸め処理を用いて丸め処理を行う旨の命令Oを丸め処理部12に出力する。
【0027】
入力信号Sの絶対値が予め定められた閾値よりも小さいとき、判定部22は、0への丸め処理を選択し、0への丸め処理を用いて丸め処理を行う旨の命令Oを丸め処理部12に出力する。入力信号の符号が正でありかつ入力信号の絶対値が閾値よりも大きいとき、判定部22は、正の無限大の丸め処理を選択し、正の無限大への丸め処理を用いて丸め処理を行う旨の命令Oを丸め処理部12に出力する。入力信号の符号が負でありかつ入力信号の絶対値が閾値よりも大きいとき、判定部22は、負の無限大の丸め処理を選択し、負の無限大への丸め処理を用いて丸め処理を行う旨の命令Oを、丸め処理部12に出力する。IIRフィルタを用いてLPF(Low Pass Filter)を構成する場合も同様である。
【0028】
ここで、判定部22の閾値は、予め定められた値である。閾値は、例えば、入力信号の最大振幅の一定割合より低い値に定める。最大振幅の一定割合は、例えば10%である。
【0029】
判定部22が入力信号Sの符号及び入力信号Sの絶対値によって丸め処理を選択することで、誤差の影響の大きい場合は安定する方に演算結果を収束させることができる。なお、丸め処理は、例えば、IEEE754に規定するいずれの丸め処理であってもよい。IEEE754に規定する丸め処理は、例えば、最近接丸め(偶数)、最近接丸め(0から遠い方へ)、0への丸め、正の無限大への丸め又は負の無限大への丸めである。
【0030】
丸め処理手順S103では、選択手順S102で選択した丸め処理を用いてIIR型フィルタへの入力信号Sを丸める。このとき、丸め処理部12は、判定部22からの命令Oに従って丸め処理を行う。例えば、負の無限大への丸め処理部31−1、0への丸め処理部31−2及び正の無限大への丸め処理部31−3は、入力信号Sの丸め処理を行う。
【0031】
負の無限大への丸め処理を用いて丸め処理を行う旨の命令Oが入力された場合、切り替えスイッチ32は、負の無限大への丸め処理部31−1を接続する。これにより、丸め処理部12は、負の無限大への丸め処理部31−1の丸め処理を行った処理結果を出力信号Sとして出力する。
0への丸め処理を用いて丸め処理を行う旨の命令Oが入力された場合、切り替えスイッチ32は、0への丸め処理部31−2を接続する。これにより、丸め処理部12は、0への丸め処理部31−2の丸め処理を行った処理結果を出力信号Sとして出力する。
正の無限大への丸め処理を用いて丸め処理を行う旨の命令Oが入力された場合、切り替えスイッチ32は、正の無限大への丸め処理部31−3を接続する。これにより、丸め処理部12は、正の無限大への丸め処理部31−3の丸め処理を行った処理結果を出力信号Sとして出力する。
【0032】
なお、本実施形態では、2次のIIRフィルタの場合について説明したが、1次のIIRフィルタであってもよいし、3次以上のIIRフィルタであってもよい。
【0033】
以上、実施形態1に係るIIRフィルタは、実施形態1に係る丸め処理方法を実行することで、入力信号Sを判断材料として複数の丸めアルゴリズムから丸め方を選択することにより、誤差の影響の大きい場合は安定する方に演算結果を収束させることができる。これにより、一定の精度を保ちながら入力が0になったときでも出力を0とすることができるようになる。したがって、実施形態1に係る丸め処理方法は、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束させることができる。
【0034】
(実施形態2)
図4に、実施形態2に係るIIRフィルタの構成の一例を示す。本実施形態に係るIIRフィルタは、外部信号入力端子21をさらに備え、実施形態1の入力信号情報作成部23に代えて外部信号情報作成部24を備える。
【0035】
実施形態2に係るプログラムは、実施形態2に係る丸め処理方法を、コンピュータに実行させるためのプログラムである。図5に、実施形態2に係る丸め処理方法の一例を示す。本実施形態に係る丸め処理方法は、実施形態1の入力信号情報作成手順S104に代えて、外部信号情報作成手順S105を有する。
【0036】
図6に、丸め処理部、入力信号情報作成部及び判定部の拡大図を示す。丸め処理部12は、第1の丸め処理を行う第1の丸め処理部33−1と、第2の丸め処理を行う第2の丸め処理部33−2と、切り替えスイッチ32と、を備える。この場合、判定部22は、第1の丸め処理部及び第2の丸め処理のなかから、動作情報Iに対応する1つの丸め処理を選択する。第1の丸め処理は、0への丸め処理を行う。第2の丸め処理は、正の無限大への丸め処理又は負の無限大への丸め処理を行う。
【0037】
図5に示す外部信号情報作成手順S105では、外部信号情報作成部24に外部信号S−2が入力される。ここで、外部信号S−2は、入力信号S以外のIIR型フィルタに関する信号であり、例えば、CPU(Central Processing Unit)の稼働率を示す信号、メモリ使用率を示す信号又は省電力モードであるか否かを示す信号である。そして、外部信号情報作成部24は、外部信号S−2に応じて、第1の丸め処理部及び第2の丸め処理のいずれかを指定する指定情報を動作情報I−2として作成する。
【0038】
例えば、外部信号S−2としてCPUの稼働率が外部信号情報作成部24に入力される。この場合、CPUの稼働率が一定未満であるとき、外部信号情報作成部24は、第2の丸め処理を指定する指定情報を動作情報I−2として作成する。一方、CPUの稼働率が一定以上であるとき、外部信号情報作成部24は、第1の丸め処理を指定する指定情報を動作情報I−2として作成する。
【0039】
例えば、外部信号S−2としてメモリ使用率が外部信号情報作成部24に入力される。この場合、メモリ使用率が一定以上であるとき、外部信号情報作成部24は、第1の丸め処理を指定する指定情報を動作情報I−2として作成する。一方、メモリ使用率が一定未満であるとき、外部信号情報作成部24は、第2の丸め処理を指定する指定情報を動作情報I−2として作成する。
【0040】
例えば、外部信号S−2として省電力モードであるか否かが外部信号情報作成部24に入力される。この場合、省電力モードであるとき、外部信号情報作成部24は、第1の丸め処理を指定する指定情報を動作情報I−2として作成する。一方、省電力モードでない通常モードであるとき、外部信号情報作成部24は、第2の丸め処理を指定する指定情報を動作情報I−2として作成する。
【0041】
図5に示す動作情報取得手順S101において、判定部22は、外部信号情報作成部24から指定情報を動作情報Iとして取得する。本実施形態では、動作情報Iは、第1の丸め処理部及び第2の丸め処理のいずれかを指定する指定情報である。
【0042】
図5に示す選択手順S102において、判定部22は、動作情報Iによって指定された丸め処理を選択する。例えば、判定部22は、第1の丸め処理部及び第2の丸め処理のなかから、動作情報Iに対応する1つの丸め処理を選択する。そして、判定部22は、選択した丸め処理を用いて丸め処理を行う旨の命令Oを丸め処理部12に出力する。
【0043】
例えば、動作情報Iが第1の丸め処理部を指定する指定情報である場合、判定部22は、第1の丸め処理部を選択し、第1の丸め処理部を用いて丸め処理を行う旨の命令Oを丸め処理部12に出力する。例えば、動作情報Iが第2の丸め処理部を指定する指定情報である場合、判定部22は、第2の丸め処理部を選択し、第2の丸め処理部を用いて丸め処理を行う旨の命令Oを丸め処理部12に出力する。
【0044】
図5に示す丸め処理手順S103では、選択手順S102で選択した丸め処理を用いてIIR型フィルタへの入力信号Sを丸める。このとき、丸め処理部12は、判定部22からの命令Oに従って丸め処理を行う。例えば、第1の丸め処理部33−1及び第2の丸め処理部33−2は、入力信号Sの丸め処理を行う。
【0045】
第1の丸め処理を行う旨の命令Oが入力された場合、切り替えスイッチ32は、第1の丸め処理部33−1を接続する。これにより、丸め処理部12は、第1の丸め処理を行った処理結果を出力信号Sとして出力する。
第2の丸め処理を行う旨の命令Oが入力された場合、切り替えスイッチ32は、第2の丸め処理部33−2を接続する。これにより、丸め処理部12は、第2の丸め処理を行った処理結果を出力信号Sとして出力する。
【0046】
なお、本実施形態では、2次のIIRフィルタの場合について説明したが、1次のIIRフィルタであってもよいし、3次以上のIIRフィルタであってもよい。
【0047】
以上、実施形態2に係るIIRフィルタは、実施形態2に係る丸め処理方法を実行することで、外部信号S−2を判断材料として複数の丸めアルゴリズムから丸め方を選択することにより、誤差の影響の大きい場合は安定する方に演算結果を収束させることができる。これにより、一定の精度を保ちながら入力が0になったときでも出力を0とすることができるようになる。したがって、実施形態2に係る丸め処理方法は、IIRフィルタで有限長精度の数値演算を行った場合であっても、入力が0になれば丸め誤差によって0に収束させることができる。
【0048】
さらに、実施形態2に係るIIRフィルタは、外部信号S−2を判断材料としているため、アルゴリズムの選択方法として、全体の処理の重さによって高精度の演算と低処理量の演算とを切り替えることができる。
【産業上の利用可能性】
【0049】
本発明は、情報通信産業に適用することができる。
【符号の説明】
【0050】
11:入力信号入力端子
12:丸め処理部
13−1、13−2:遅延部
14−1、14−2:係数乗算部
15:出力端子
16:加算器
21:外部信号入力端子
22:判定部
23:入力信号情報作成部
24:外部信号情報作成部
31−1:負の無限大への丸め処理部
31−2:0への丸め処理部
31−3:正の無限大への丸め処理部
32:切り替えスイッチ
33−1:第1の丸め処理部
33−2:第2の丸め処理部

【特許請求の範囲】
【請求項1】
IIR型フィルタに関する動作情報を取得する動作情報取得手順と、
予め定められた2以上の丸め処理のなかから、前記動作情報に対応する1つの丸め処理を選択する選択手順と、
前記選択手順で選択した丸め処理を用いて前記IIR型フィルタへの入力信号を丸める丸め処理手順と、
を順に有する丸め処理方法。
【請求項2】
前記IIR型フィルタへの入力信号が入力され、前記入力信号の符号及び絶対値を前記動作情報として作成する入力信号情報作成手順を、前記動作情報取得手順の前にさらに有し、
前記動作情報取得手順において、前記IIR型フィルタへの入力信号の符号及び絶対値を前記動作情報として取得し、
前記選択手順において、
前記入力信号の絶対値が予め定められた閾値よりも小さいときは0への丸め処理を選択し、
前記入力信号の符号が正でありかつ前記入力信号の絶対値が前記閾値よりも大きいときは正の無限大の丸め処理を選択し、
前記入力信号の符号が負でありかつ前記入力信号の絶対値が前記閾値よりも大きいときは負の無限大の丸め処理を選択する
ことを特徴とする請求項1に記載の丸め処理方法。
【請求項3】
前記入力信号以外のIIR型フィルタに関する信号である外部信号が入力され、入力された前記外部信号に応じて、前記予め定められた2以上の丸め処理のいずれかを指定する指定情報を前記動作情報として作成する外部信号情報作成手順を、前記動作情報取得手順の前にさらに有し、
前記動作情報取得手順において、前記指定情報を前記動作情報として取得し、
前記選択手順において、前記指定情報の指定する丸め処理を選択する
ことを特徴とする請求項1に記載の丸め処理方法。
【請求項4】
請求項1から3のいずれかに記載の各手順を、コンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−49819(P2012−49819A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−189899(P2010−189899)
【出願日】平成22年8月26日(2010.8.26)
【出願人】(000004330)日本無線株式会社 (1,186)
【Fターム(参考)】