(57)【要約】  【課題】効率的な計算で超低速の速度分解能を得ることができる信号処理方法、信号処理装置を提供する。  【解決手段】３０ｋＨｚ付近に周波数スペクトルが展開している信号を２４ｋＨｚでアンダーサンプリングすることにより、前記周波数スペクトルは６ｋＨｚ付近に展開する。この周波数スペクトルの中心周波数をＤＣ＝０Ｈｚに周波数シフトする場合、中心周波数とサンプリング周波数との比が１／４であるため、サンプリングデータに順次１，−ｊ，−１，ｊを乗ずるのみでこれを行うことができる。さらに、この定数をＦＩＲフィルタの係数に埋め込んでおき、サンプリングデータが４ｎ（ｎは正の整数）だけ進む毎にＦＩＲフィルタの演算を行ってデータを出力することにより、周波数シフト、ＦＩＲフィルタ処理および４ｎのデシメーションを一括して処理することができる。【選択図】  図１２
2006119148.tif 000002
【特許請求の範囲】
【請求項１】
所定の基準周波数付近に周波数スペクトルを有する信号を入力し、
前記基準周波数をサンプリング周波数の４分の１または４分の３の周波数にシフトするサンプリング周波数で、前記信号をサンプリングし、
サンプリングデータの周波数帯域を制限するＦＩＲフィルタの各タップのフィルタ係数に複素単位乗数データ列を乗ずることによって、前記フィルタ係数を変更しておき、
前記ＦＩＲフィルタに順次入力される前記サンプリングデータが４の倍数に設定されているデシメーションレートだけ進む毎に、前記ＦＩＲフィルタの各タップの出力に対して、変更したフィルタ係数をそれぞれ乗算することにより、
周波数スペクトルのシフト、周波数帯域の制限、および、デシメーションを一括して処理することを特徴とする信号処理方法。
【請求項２】
前記複素単位乗数データ列を、＋１，−ｊ、−１，＋ｊの数列の任意の値から開始する繰り返しデータ列、または、＋１，＋ｊ、−１，−ｊの数列の任意の値から開始する繰り返しデータ列とする請求項１の信号処理方法。
【請求項３】
所定の基準周波数付近に周波数スペクトルを有する信号を入力し、前記基準周波数をサンプリング周波数の４分の１または４分の３の周波数にシフトするサンプリング周波数で、前記信号をサンプリングするサンプリング手段と、
サンプリングデータの周波数帯域を制限するように設定された各タップのフィルタ係数に複素単位乗数データ列を乗ずることによって、前記フィルタ係数が変更され、順次入力される前記サンプリングデータが４の倍数に設定されているデシメーションレートだけ進む毎に、前記各タップの出力に対して、設定・変更されたフィルタ係数をそれぞれ乗算することにより、前記サンプリングデータの周波数スペクトルのシフト、周波数帯域の制限、および、デシメーションを一括して処理するＦＩＲフィルタと、
を備えたことを特徴とする信号処理装置。
【請求項４】
前記ＦＩＲフィルタの各タップのフィルタ係数に乗算される複素単位乗数データ列は、＋１，−ｊ、−１，＋ｊの数列の任意の値から開始する繰り返しデータ列、または、＋１，＋ｊ、−１，−ｊの数列の任意の値から開始する繰り返しデータ列で設定される請求項３の信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、信号の周波数などを解析する際の処理を効率化した信号処理方法、信号処理装置、および、対象物との距離に応じた速度測定が可能なドップラソナーに関する。
【背景技術】
【０００２】
船舶における速度測定にはドップラソナーが広く用いられており、船舶の種類に応じてドップラソナーの測定レンジも種々に設定される。海底に沈んだ状態で故障している潜水艦の乗組員を救助するための潜水艦救難艇（ＤＳＲＶ）にもドップラソナーが搭載されている。ＤＳＲＶは、沈没潜水艦に自走で接近して救助ハッチにドッキングし、この救助ハッチを介して潜水艦の乗組員を救助する。沈没潜水艦の救助ハッチに安全・確実にドッキングするためには、超低速の速度制御が要求され、ドップラソナーにも高い速度分解能が要求される。
【０００３】
従来、一般的なドップラソナーは、超音波パルスビームを送信し、その反射波のドップラシフトにより対象物との相対速度を計測するものである。近年のドップラソナーは、ディジタル処理によってドップラシフト周波数を割り出すものが多く、ディジタル処理方式のものはＤＦＴ（離散フーリエ解析、実際の計算は、高速フーリエ解析（ＦＦＴ））によって、ドップラシフトの周波数スペクトルを求め、そのピーク位置に基づいてドップラ周波数を検出する。
【０００４】
このようなパルス方式の場合、対象物との距離が長い場合には、反射波の到達時間遅れが大きいため長いパルスビームを出力することができるが、対象物と接近した状態では到達時間遅れが少ないため、長いパルスビームを出力すると、出力パルスと反射波とが重なり合ってしまい、正確な速度計測をすることができない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、ＤＳＲＶの場合、対象物である沈没潜水艦に接近するほど低速に制御され、ドップラソナーも高い速度分解能が要求されるにもかかわらず、短いパルスしか送信できないため速度分解能が低下するという問題点があった。たとえば、対象物との距離が１ｍの場合、反射波の到達遅れ時間が約１．３ｍｓであるため、サンプリング周波数が５０ｋＨｚでもＦＦＴ点数は３２点しかとることができず、周波数分解能は１．５６ｋＨｚで検出速度分解能は約１５ｋｎｏｔとなり、超低速で接近する艦艇の速度を到底検出することができない。
【０００６】
そこで、送受波器を２つ設け、一方の送受波器で連続波を送信し、他方の送受波器で連続した反射波を受信することによって、長い信号から多くのサンプル点をとって、速度分解能を向上することが考えられる。しかし、単純に長い信号から長いサンプル点をとってＦＦＴ演算しようとすると極めて長時間の演算が必要になり、短時間の速度データの更新ができなくなるため、速度制御が不安定になるという問題点があった。
【０００７】
また、ドップラソナーはパルス信号の反射波遅延時間に基づいて対象物との距離を測定しているが、連続波ではこの距離測定ができないという問題点もあった。
【０００８】
この発明は、効率的な計算で超低速の速度分解能を得ることができる信号処理方法、信号処理装置、および、これらを備えたドップラソナーを提供することを目的とする。
【課題を解決するための手段】
【０００９】
この発明の信号処理方法は、所定の基準周波数付近に周波数スペクトルを有する信号を入力し、基準周波数をサンプリング周波数の４分の１または４分の３の周波数にシフトするサンプリング周波数で信号をサンプリングし、サンプリングデータの周波数帯域を制限するＦＩＲフィルタの各タップのフィルタ係数に複素単位乗数データ列を乗ずることによってフィルタ係数を変更しておき、ＦＩＲフィルタに順次入力されるサンプリングデータが４の倍数に設定されているデシメーションレートだけ進む毎に、ＦＩＲフィルタの各タップの出力に対して変更したフィルタ係数をそれぞれ乗算することにより、周波数スペクトルのシフト、周波数帯域の制限、および、デシメーションを一括して処理することを特徴としている。
【００１０】
また、この発明の信号処理装置は、所定の基準周波数付近に周波数スペクトルを有する信号を入力し、基準周波数をサンプリング周波数の４分の１または４分の３の周波数にシフトするサンプリング周波数で信号をサンプリングするサンプリング手段と、サンプリングデータの周波数帯域を制限するように設定された各タップのフィルタ係数に複素単位乗数データ列を乗ずることによってフィルタ係数が変更され、順次入力されるサンプリングデータが４の倍数に設定されているデシメーションレートだけ進む毎に各タップの出力に対して、設定・変更されたフィルタ係数をそれぞれ乗算することにより、サンプリングデータの周波数スペクトルのシフト、周波数帯域の制限、および、デシメーションを一括して処理するＦＩＲフィルタと、を備えたことを特徴としている。
【００１１】
また、この発明の信号処理方法および信号処理装置は、ＦＩＲフィルタの各タップのフィルタ係数に乗算される複素単位乗数データ列を、＋１，−ｊ、−１，＋ｊの数列の任意の値から開始する繰り返しデータ列、または、＋１，＋ｊ、−１，−ｊの数列の任意の値から開始する繰り返しデータ列で設定することを特徴としている。
【００１２】
また、この発明は、連続波信号を送信して反射波信号を受信することで検知対象物の少なくとも速度を検出するドップラソナーにおいて、
所定の基準周波数付近に周波数スペクトルを有する信号として、検知対象物からの反射波信号を入力して前記サンプリングを行う前述のサンプリング手段と、
サンプリングデータの周波数帯域を制限するように設定された各タップのフィルタ係数に複素単位乗数データ列を乗ずることによってフィルタ係数が変更され、順次入力されるサンプリングデータが４の倍数に設定されているデシメーションレートだけ進む毎に各タップの出力に対して、設定・変更されたフィルタ係数をそれぞれ乗算することにより、サンプリングデータの周波数スペクトルのシフト、周波数帯域の制限、および、デシメーションを一括して処理する前述のＦＩＲフィルタと、
該ＦＩＲフィルタにより処理された処理後サンプリングデータを離散フーリエ解析により周波数スペクトル化し、該周波数スペクトルからピーク周波数を検出することで、少なくとも検知対象物の速度を検出する速度検出手段と、を備えたことを特徴としている。
【００１３】
この発明において、入力信号の周波数スペクトルは、注目領域の中心周波数である基準周波数付近に展開している。図１（Ａ）は、この入力信号の周波数スペクトルの例を示す図である。この入力信号をサンプリング周波数ｆｓでサンプリングするが、このサンプリング周波数ｆｓを、図１（Ｂ）に示すように、サンプリング後の中心周波数ｆｃがｆｓ／４または３ｆｓ／４となるような周波数に設定する。このサンプリングには、たとえば、いわゆるアンダーサンプリングの手法を用いることができる。
【００１４】
このようにサンプリングすると、図１（Ｃ）に示すように、中心周波数がｆｃにバイアスされており、中心周波数を挟んで正負の範囲に周波数スペクトルが展開していてもその帯域幅がｆｃ以下であれば、スペクトル同士がエリアシングで重なり合うことがない。また、このとき０Ｈｚ付近に生じる写像は１次写像とは限らず、２次写像などの多次写像である可能性があるが、中心周波数ｆｃが事前に分かっているため、何次写像がどの付近に生じるかを予測することができ、最も利用しやすい０Ｈｚ付近の写像を用いることができる。なお、この技術はアンダーサンプリングのみならず、後述のデシメーションにおいても同様に適用することができる。
【００１５】
このように、サンプリング周波数ｆｓでサンプリングされ、中心周波数ｆｃの離散時間データ列となった信号は、
【００１６】
【数１】
2006119148.tif 000003
【００１７】
の指数関数列を乗算することによって中心周波数ｆｃが０（ＤＣ）になるように周波数スペクトルをシフトすることができる。すなわち、データ数列ｘ（ｎ）のＤＦＴ変換から求まる周波数スペクトルが、
【００１８】
【数２】
2006119148.tif 000004
【００１９】
で求められるのに対し、データ数列ｘ（ｎ）に離散複素指数関数ｃ（ｎ）を乗算した周波数スペクトルＸｓｈｉｆｔ（ｋ）が、
【００２０】
【数３】
2006119148.tif 000005
【００２１】
となることから周波数スペクトルＸ（ｋ）が周波数軸に沿ってシフトされていることが分かる。すなわち、
【００２２】
【数４】
2006119148.tif 000006
【００２３】
によってスペクトルの注目領域の中心周波数ｆｃを周波数ゼロとするように、スペクトル全体を周波数軸に沿ってシフトすることができる。
【００２４】
また、前記ｃ（ｎ）の指数部（−ｊΩc ｎ）のｎを、自然数Ｍを加算することによって（ｎ＋Ｍ）に置き換えた場合、すなわち，離散複素指数関数をＭ個シフトしてデータ数列に乗算した場合でも、
【００２５】
【数５】
2006119148.tif 000007
【００２６】
で明らかなように、周波数パワースペクトルはこのずれに影響されることなく同様にシフトされる。
【００２７】
そして、上述したようにサンプリング周波数ｆｓと注目領域の中心周波数ｆｃが、ｆｃ＝ｆｓ／４またはｆｃ＝３ｆｓ／４となるような関係にサンプリングしていることにより、
Ωc ＝２π（ｆｃ／ｆｓ）＝π／２
または、
Ωc ＝２π（ｆｃ／ｆｓ）＝３π／２
となり、前記離散複素指数関数ｃ（ｎ）は、
【００２８】
【数６】
2006119148.tif 000008
【００２９】
となる。ここで、Ωc ＝π／２の場合を考えると、任意の整数値ｎに対して、
【００３０】
【数７】
2006119148.tif 000009
【００３１】
となり、＋１，−ｊ，−１，＋ｊの４種類の値のみを取ることが分かる。
【００３２】
したがって、周波数スペクトルをシフトするために実際にｘ（ｎ）とｃ（ｎ）とを乗算する必要はなく、単にデータ数列ｘ（ｎ）を４個周期に、ｃ（ｎ）のｎの値から簡単に割り出される＋１，−ｊ，−１，＋ｊを乗算した場合に合わせて正負符号制御および実数虚数制御をするだけでよい。すなわち、ｃ（ｎ）がマイナス符号の場合には符号反転計算のみを行い、ｃ（ｎ）が実数の場合はｘ（ｎ）の値を全て実数部として処理し、ｃ（ｎ）が虚数の場合はｘ（ｎ）の値を全て虚数部として処理すればよい。なお、Ωc ＝３π／２の場合には、Ωc ＝π／２の場合と逆回りになり、＋１，＋ｊ，−１，−ｊとなる。なお、＋１→−ｊ→−１→＋ｊまたは＋１→＋ｊ→−１→−ｊの繰り返しの先頭は＋１，＋ｊ，−１，−ｊのうち任意のものでよい。
【００３３】
このように、ｆｃ＝ｆｓ／４またはｆｃ＝３ｆｓ／４となるようなサンプリング周波数ｆｓでサンプリングすることにより、サンプリングデータのサンプリング番号に基づいて符号制御および実数，虚数に割り振るのみの処理で周波数スペクトルのシフトを行うことができ、上記指数関数を実際に乗算して演算する必要がなくなるため、処理を大幅に簡略化することができる。
【００３４】
そして、この処理により周波数シフトされたサンプリングデータ列は、実数部のみのデータと虚数部のみのデータが交互に現れるため、後段のフィルタ演算などの演算においては、実数部の演算・虚数部の演算ともに通常の演算の１／２の演算量ですませることができる。すなわち、実数部の演算は、＋１または−１が乗算されたサンプリングデータの実数部について行い、虚数部の演算は、＋ｊまたは−ｊが乗算されたサンプリングデータの虚数部について行えばよく、図１０や図１３に示すように処理データ長の半分のデータ長の演算処理部でこれを実現できる。
【００３５】
また、上記のように中心周波数を０にシフトしたことにより、サンプリングデータの間引き（デシメーション）によって、図１（Ｄ）に示すように、０Ｈｚ（ＤＣ）を中心とした周波数スペクトルの引き延ばしが可能になる。サンプリングデータを間引きすることにより、長時間のサンプリングデータを少ないサンプル点（データ点数）で取り扱うことができる。
【００３６】
さらに、この発明では、デシメーションレートとして４ｎ（ｎ：正の整数）を用い、このデシメーションによって発生する折り返しスペクトルの重なり合い（エリアシング）を防止するためのローパスフィルタであるＦＩＲフィルタのフィルタ係数に対して上記周波数シフトのための乗数である＋１、−ｊ、−１、＋ｊまたは＋１、＋ｊ、−１、−ｊを予め乗算している。デシメーションレートが４ｎであるから、入力されるサンプリングデータ列が４ｎ進む毎にフィルタ演算が行われ、４個の周期で繰り返す＋１、−ｊ、−１、＋ｊまたは＋１、＋ｊ、−１、−ｊの乗数と同期し、同じサンプリングデータには常に同じ乗数が乗算されることになるため、ＦＩＲフィルタに入力するまえにサンプリングデータにこの乗数を乗算しておかなくても、フィルタ演算において同時に上記周波数スペクトル
のシフトを行うことができる。さらに、上述したように乗数として＋１、−ｊ、−１、＋ｊまたは＋１、＋ｊ、−１、−ｊを用いたことにより、サンプリングデータの実数部または虚数の一方が必ず０となるため、０となるタップ（係数演算）を省略することでフィルタ長を約１／２にすることができる。
【００３７】
これにより、周波数シフト、ＦＩＲフィルタ処理、およびデシメーションレート４ｎのデシメーション処理を一括して実行することができるとともに、フィルタ長を１／２にする（フィルタ演算量を１／２にする）ことができ、処理を大幅に簡略化することができる。
【００３８】
一方、有限長のサンプリングデータを切り出す場合、その周波数スペクトルを保存するためハニング窓などの窓関数を乗じてデータの切り出しを行うことがよく行われるが、この窓関数の各関数列に対して周波数スペクトルをシフトするための離散指数関数列ｃ（ｎ）を予め乗算しておき、これをサンプリングされたデータ列ｘ（ｎ）に乗ずることにより、窓関数によるサンプリングデータの切り出しと周波数スペクトルのシフトを同時に行うことができる。
【００３９】
さらに、この場合においても、図１５に示すように上記周波数スペクトルのシフトと同様にサンプリング周波数ｆｓと注目領域の中心周波数ｆｃが、ｆｃ＝ｆｓ／２またはｆｃ＝３ｆｓ／２となるような関係でサンプリングすることにより、窓関数列に対して＋１，−ｊ，−１，＋ｊまたは＋１，＋ｊ，−１，−ｊの乗数データ列を乗算したものをデータ列に乗算するのみで、簡略にサンプリングデータの切り出しと周波数スペクトルのシフトを同時に行うことができる。
【発明の効果】
【００４０】
この発明によれば、周波数スペクトルのシフト、周波数帯域の制限、デシメーションを一括した処理で行うことができるため、周波数スペクトルを有する信号の処理工程を簡略化することができる。特に、ディジタル化された周波数スペクトルのシフト、周波数帯域の制限、および、デシメーションを一括してＦＩＲフィルタにおける処理で行うことができるため、信号処理を極めて簡略化することができる。
【００４１】
また、この発明によれば、ディジタル処理における周波数スペクトルのシフトを符号制御および実数部、虚数部への振り分けからなる簡略な処理で行うことができるため、周波数スペクトルを有する信号の処理をより簡略化することができる。
【発明を実施するための最良の形態】
【００４２】
図２はこの発明の実施形態であるドップラソナーの概略構成図、図３は同ドップラソナーの受信部のブロック図である。このドップラソナーは、沈没潜水艦を救助する潜水艦救難艇（ＤＳＲＶ）に装着されるものであり、２００ｍｓ毎に速度データを更新出力する。ＤＳＲＶは、救助ハッチにドッキングする際は、沈没潜水艦に超低速で接近し、０．０１ノットの精度で速度制御する必要がある。このため、このドップラソナーは０．０１ノットの検出精度を有する。また、ＤＳＲＶは救助を迅速に行うため、母船と沈没潜水艦との往復行程はある程度の高速で潜水・浮上する。このため、ドップラソナーも６ノット程度までの速度検出レンジを有している。
【００４３】
ドップラソナーは、上記検出精度および検出レンジを確保するため、沈没潜水艦とある程度以上の距離（２０ｍ〜２５ｍ以上）が離れているときはパルス信号を用いて速度計測を行い、沈没潜水艦と上記距離以下に接近したときは連続波信号を送信して反射波信号を長時間継続的に受信し、この長時間の信号を用いて速度計測を行う。上記パルス信号を用いて速度計測を行うモードをパルスドップラモードといい、連続波信号を用いて速度計測を行うモードを連続波ドップラモードという。
【００４４】
図２において、ドップラソナーは送信部１，受信部２および制御部３からなっている。送信部１は３方向に超音波ビームを送信する３つの送波器１ａおよびこれら３つの送波器に対して高周波信号を印加する駆動回路などからなっている。駆動回路の動作は前記制御部３が制御する。
【００４５】
連続モードで動作する場合、前記送波器１ａは継続的に超音波ビームを送信しているため、これを受波器として併用することができない。このため、受信部２は送波器１ａとは別に、３個の受波器２ａを備えている。各受波器２ａは、前記３個の送波器１ａにそれぞれ対応しており、対応する送波器と同じ方向に向けて設置されている。送波器１ａが送信した超音波ビームは、沈没潜水艦などの対象物で反射して受波器２ａに戻ってくる。この反射波信号は、このドップラソナーを搭載したＤＳＲＶと対象物との相対速度によるドップラ効果により周波数が遷移（ドップラシフト）する。このドップラシフト周波数を測定することにより、ＤＳＲＶと対象物との相対速度を検出することができる。
【００４６】
また、パルスビームを送信した場合には、送信したのちその反射波を受信するまでの時間差を測定することができるため、この時間差に基づいてＤＳＲＶと対象物との距離を測定することができる。
【００４７】
前記受信部２は、３個の受波器２ａのそれぞれについて、図３に示す受信回路を備えている。ただし、Ａ／Ｄ変換器１５およびＤＳＰ１６と３系統で共有している。各送波器１ａ・受波器２ａの組は、それぞれ３次元的に独立した方向に向けられているため、受信した反射波信号のドップラシフト周波数を測定し、このドップラシフト周波数から割り出された速度成分をベクトル合成することによってＤＳＲＶの前後，左右，上下方向の速度ベクトルを算出することができる。
【００４８】
なお、このドップラソナーが送信する超音波信号は４００ｋＨｚであり、水中の音波の伝搬速度は１５００ｍ／秒であるため、超音波ビーム角を補正すると１ノット（＝０．５１４４ｍ／秒）に対応するドップラ周波数は、約１００Ｈｚである。
【００４９】
図３の受信回路において、受波器１０（２ａに相当）は対象物で反射した超音波信号を受信して電気信号に変換する。この反射波信号は、送信周波数とほぼ同じ約４００ｋＨｚであるが、図４（Ａ）に示すように、ＤＳＲＶの移動速度に応じて０Ｈｚ〜±１ｋＨｚ程度のドップラシフトを受けている。この反射波信号は、高周波アンプ１１に入力される。高周波アンプ１１はこの信号を後段の回路で処理可能なレベルまで増幅してミキサ１２に入力する。ミキサ１２には４３０ｋＨｚの変調信号が入力されており、この変調信号を前記反射波信号と混合する。この混合により、３０ｋＨｚ付近および８３０ｋＨｚ付近に前記ドップラシフト周波数の写像スペクトルを生じる。バンドパスフィルタ１３は３０ｋＨｚ付近に生じた下側うなりであるスペクトルのみを取り出してアンプ１４に入力する。これにより４００ｋＨｚのドップラシフト周波数信号が３０ｋＨｚの中間周波にダウンコンバートされたことになる（図４（Ｂ）参照）。このダウンコンバートされたドップラシフト周波数信号は、下側うなり信号であるため受波器２ａが受信したときの周波数スペクトルに対して周波数の高低が反転しているが、この反転は後段のＤＳＰ１６における処理で再度反転させるか、または、反転しているものとして逆向きに処理することにより解消することができる。ＤＳＰ１６における反転処理は、上述の＋１、−ｊ、−１、＋ｊまたはこれを反転した＋１、＋ｊ、−１、−ｊのどちらで周波数スペクトルのシフトを行うかを選択することで行うことができる。
【００５０】
アンプ１４はこの中間周波に変換されたドップラシフト周波数信号を適当なレベルまで増幅したのちＡ／Ｄ変換器１５に入力する。Ａ／Ｄ変換器１５は、この信号を２４ｋＨｚのサンプリング周波数でサンプリング（アンダーサンプリング）することによってディジタルデータに変換する。３０ｋＨｚの信号を２４ｋＨｚでアンダーサンプリングすることにより、３０ｋＨｚ±６ｋＨｚの周波数領域がサンプリングされ、この周波数領域のスペクトルが０（ＤＣ）〜１２ｋＨｚおよび１２ｋＨｚ〜２４ｋＨｚに現れる。したがって、中間周波において３０ｋＨｚ付近に生じていたドップラシフト周波数のスペクトルは、図４（Ｃ）に示すように、６ｋＨｚ付近および１８ｋＨｚ付近に現れる。このようにドップラシフト周波数信号が、６ｋＨｚまたは１８ｋＨｚにバイアスされたままサンプリングされることにより、ドップラシフトが送信周波数の下側に生じた場合でも実数値としてサンプリングすることができ、虚数側のＡ／Ｄ変換系統を設ける必要がなくなる。ここで、６ｋＨｚ付近に現れるドップラシフト周波数のスペクトルは受信波信号に対してスペクトルが反転しており、１８ｋＨｚ付近に現れるドップラシフト周波数のスペクトルは受信波信号のスペクトルと同相である。
【００５１】
なお、このように３０ｋＨｚの信号を２４ｋＨｚでサンプリングすることにより、高い周波数の情報が失われるが、上述したようにＤＳＲＶの最大移動速度は６ノット程度であり、これによって生じるドップラシフトの周波数はＤＳＲＶの動揺による広がりを考慮しても１ｋＨｚ程度であるため、上記±６ｋＨｚの周波数領域がサンプリングされることで十分ＤＳＲＶの移動速度のレンジをカバーすることができる。
【００５２】
上記アンダーサンプリングによって、ディジタル変換されたドップラシフト周波数信号はＤＳＰ１６に入力される。ＤＳＰ１６は、入力されたディジタル信号からドップラシフト周波数を算出し、そのドップラシフトを生じた超音波ビーム方向の速度成分を算出する。そして、前記３つの受波器２ａの方向の速度成分をベクトル合成することによって、速度ベクトルを算出する。
【００５３】
ＤＳＰ１６は、最高精度の処理時においては、約１秒の時間幅のサンプリングデータを用いてＦＦＴを行い、約１Ｈｚの周波数分解能すなわち０．０１ノットの速度分解能を得ているが、２４ｋＨｚのサンプリング周波数で、そのまま１秒のサンプル点をとった場合には２４×１０２４点＝２４５７６点という膨大なサンプル点でＦＦＴ演算する必要があり、演算量が膨大となって前記２００ｍｓ毎のデータ更新期間内に処理することが困難になる。また、データ処理用のメモリを多く確保することが必要になり、大規模なＤＳＰを使用する必要がある。一方、０．０１ノットの速度分解能が必要な状態とは、対象物に対して極めて接近し速度を十分に落とした状態であるため、ドップラシフト周波数も十分低いと考えられる。このため、サンプリング周波数２４ｋＨｚに対応する１２ｋＨｚの検出可能最大周波数を確保する必要は全く必要なく、最大でも上記１ｋＨｚ程度の検出可能最大周波数を有していれば、ドップラ周波数を検出可能である。したがって、このドップラソナーでは、サンプリングデータを間引き（デシメーション）してＦＦＴ処理をすることにより、検出可能最大周波数が低下するものの、少ないデータ数で演算量を増加させることなく周波数分解能を向上させている。
【００５４】
ここで、このＤＳＰ１６におけるドップラシフト周波数の算出方法の概略を、図５，図６のフローチャートおよび図７〜図９を参照して説明する。なお、前記制御部３は、パルス信号の反射波を受信するまでの時間差により対象物（沈没潜水艦）までの距離を算出する機能を有している。
【００５５】
図５，図６の処理は２００ｍｓ毎に繰り返し実行される速度算出処理動作を示している。この動作がスタートすると、まずｓ２で現在の動作モードを判断する。この動作モードは、パルスドップラモード（ＰＷＤ），連続波ドップラモード（ＣＷＤ）および距離測定モード（Ｔｅｍｐ．ＰＷＤ）の３つであり、そのいずれかが前記制御部（メインＣＰＵ）３から指示される。制御部３は、図７に示す方式でパルスドップラモードと連続波ドップラモードを切り換える。すなわち、ＤＳＲＶと対象物との距離が２０ｍ以下に接近したときパルスドップラモードから連続波ドップラモードに切り換え、両者の距離が２５ｍ以上に離れたとき連続波ドップラモードからパルスドップラモードに切り換える。このように、パルスドップラモードと連続波ドップラモードは、距離を基準にヒステリシスをもって
切り換えられる。
【００５６】
ここで、距離が接近したとき連続波ドップラモードに切り換えるのは、距離が接近していると送信信号を受信するまでの時間差が短いためパルスドップラモードでは長いパルスを送信することができず、ＦＦＴ点数を多くとれないため速度分解能が低下するためであり、距離が離れているときパルスドップラモードに切り換えるのは、送受信の時間差が長いため長いパルスを送信でき、ＦＦＴ点数を多くとり速度分解能を確保できるとともに、パルス送受信の時間差に基づいて並行して距離測定ができるためである。また、連続波ドップラモードでは超音波信号の送受信を並行して行うことから、送信信号の受信側への回り込みが問題となるが、距離が離れた対象物で反射した反射波信号は信号レベルが小さく上記回り込みによってカバーされるおそれがあるため、対象物との距離が離れた状態では連続波ドップラモードを用いることが困難であるためである。
【００５７】
上記のように、連続波ドップラモードでは、制御部３が距離測定をすることができないため、連続波ドップラモードが数十秒間継続するとパルスドップラモードの一種である距離測定モードに切り換えて距離を測定する。なお、このモード切換指示はこのＤＳＰ１６のみならず送信部１にも与えられ、送信部１は、この指示に基づいて送波器１ａから送信する超音波信号をパルス信号または連続波信号に切り換える。
【００５８】
対象物との距離が上記２０ｍ〜２５ｍ以上離れている場合には、制御部３からパルスドップラモードが指示される。この場合ｓ３〜ｓ１０の処理を実行する。このパルスドップラモードの処理動作は一般的なドップラソナーの動作とほぼ同じである。ｓ３では速度計測をするための前処理を実行する。前処理としては、Ａ／Ｄ変換器１５から入力されるサンプリングデータのレベルに基づいて反射波信号がどこに存在するかを検索し、ＦＦＴ用のデータとしてそのパルス幅に応じた３２〜１０２４点のデータを切り出す処理や後述の連続波ドップラモードで使用される処理サイクル数カウンタｃｙｃｌｅ＃を１にリセットする動作などが含まれる。上記切り出されたサンプリングデータを高速フーリエ解析（ＦＦＴ）して周波数スペクトルに展開し（ｓ４）、この周波数スペクトルのピークを検索することによって、ドップラシフト周波数を割り出す（ｓ５）。こののち過去に割り出されたドップラシフト周波数との平均化などの後処理を行って（ｓ６）、今回の処理サイクルにおけるドップラシフト周波数を確定する。そして、このドップラシフト周波数が適正な範囲の値であるかをｓ７で判断する。すなわち、このＤＳＲＶは最大６ノット程度の速度でしか移動しないものであるため、ドップラシフト周波数は船体の動揺などによるマージンを考慮したとしても±１ｋＨｚ程度である。したがって、±１ｋＨｚをしきい値とし、割り出されたドップラシフト周波数がこのしきい値を超える場合は計測が正常に行われていないとしてエラー信号を出力する（ｓ１０）。割り出されたドップラシフト周波数が正常な範囲の値であれば、上述した３系統の速度成分をベクトル合成することによってこのＤＳＲＶの速度ベクトルを算出し（ｓ８）、これを他の航行制御装置に対して出力する（ｓ９）。
【００５９】
一方、ｓ２において、制御部３から指示された動作モードが連続波ドップラモードである場合には、ｓ１２以下の動作に進む。ｓ１２ではこの連続波ドップラモードの連続処理サイクル数をカウントする処理サイクル数カウンタｃｙｃｌｅ＃の内容をチェックする。ｃｙｃｌｅ＃＝１、すなわち、今回が連続波ドップラモードに切り換わった最初の処理である場合にはｓ１２からｓ１３に進む。ｓ１３では、現在蓄積されているデータ数に基づいてデシメーションするか否かを判断する。すなわち、連続波ドップラモードへの切り換えは、制御部３がこのＤＳＰ１６および送信部１に指示するものであり（実際には制御部３が共有メモリにモード指示を書き込み、送信部１およびＤＳＰ１６はそれを参照しにゆくことで指示を受け取る）、２００ｍｓ毎に実行されるこの処理においてどの程度のデータが蓄積されているかはＡ／Ｄ変換されたサンプリングデータのメモリアドレス用のカウンタ値を参照することによってどこからが連続波ドップラモードであるかが判断される。一般的に連続波ドップラモードへの直後にＦＦＴに使用可能なサンプリングデータ数は図８に示すように増加する。ここで、切換直後一定時間（１００ｍｓ程度）のデータは無効なデータとしてオミットするようにしている。連続波ドップラモードに切り換えられた第１回目の処理においては、デシメーションするほどのデータが蓄積されていない場合が多いため、このような場合にはｓ１３からｓ１４に進んで蓄積されているデータのうち最新の１０２４点を切り出し、このデータをそのまま用いてＦＦＴを行う（ｓ１９）。一方、１回目の処理が行われるとき、既に２０４８を超える有効なサンプリングデータが蓄積されている場合には、デシメーションレート＝４（４個のデータ毎に１つのデータを用いて３個のデータ間を引くこと、以下同じ）、ＦＦＴ点数＝５１２と決定する（ｓ１５）。そしてこの処理に必要な２０４８個のデータ列を切り出してデモジュレーションにより周波数スペクトルをシフトする（ｓ１６）。このデモジュレーションは、上述したように、切り出されたサンプリングデータに離散複素指数関数列を乗算することによって行われる。
【００６０】
この処理で周波数シフトされたサンプリングデータ列に対してローパスフィルタ処理を実行する（ｓ１７）。これは、こののちデシメーションによって実質的にサンプリング周波数を低下させるため、高い周波数帯域にスペクトルがあるとエリアシングによりスペクトルが乱れることを防止するためである。そして、この周波数シフトされたデータ列からデシメーションレートのデータ数毎にＦＦＴ点数のサンプリングデータを抽出し（ｓ１８）、このデータを用いてＦＦＴを実行する（ｓ１９）。
【００６１】
ＦＦＴによりサンプル数の周波数分解能で周波数スペクトルに分解したのち、そのピークを検索する（ｓ２０）。検出されたピーク周波数が上記しきい値（１ｋＨｚ）を超える不適当なものであるかを判断し（ｓ２１）、不適当な値であればエラー信号を出力する（ｓ２６）。適当な範囲の値であれば過去の測定値の影響を残すために、平均化やＩＩＲフィルタリングなどの処理を行って（ｓ２２）、計測精度を安定化させる。たとえば、パルスドップラモードから連続波ドップラモードに移行したとき、両モードで割り出されたピーク周波数にギャップが存在した場合などに、他の航行制御装置の制御が不安定になるのを防止するためこの処理が行われる。図９に示すｃｙｃｌｅ＃≦６までの移行期には、パルスドップラモード時に検出されたピーク周波数の影響を残して出力する速度ベクトルを安定化する。このためにＩＩＲフィルタを用いる場合には、例えば、
ｙ（ｎ）＝（１−α）ｘ（ｎ）＋αｙ（ｎ−１）
の特性のものを用いればよい。ここで、ｙ（０）を連続波ドップラモードに移行する直前のパルスドップラモードでのドップラシフト周波数、ｘ（ｎ）を連続波ドップラモードでのドップラシフト周波数とする。このフィルタ関数Ｈ（ｚ）は、
Ｈ（ｚ）＝ (１−α) ／ (１−αz-1)
で表される。連続波ドップラモードに移行した直後の、ｃｙｃｌｅ＃＝１〜６までの約１秒間の処理サイクルにおいてパルスドップラモードにおける測定値の影響を残すため、計数αは０．５〜０．７の範囲で選択する。α＝０．５のときｃｙｌｃｅ＃＝６のときのｙ（０）の影響は１．５６％、α＝０．６のとき５．００パーセント、α＝０．７のとき約１１．７６％となる。また、逆に連続波ドップラモードからパルスドップラモードに移行する場合にも同様の処理を行えばよいが、αの設定値は上記の範囲に限定されるものではなく、他の値の範囲をとりうる可能性がある。
【００６２】
なお、ここではパルスドップラモードの測定値を最後の１個のみＩＩＲフィルタ処理にかけているが、どの距離の測定時においても複数回の測定値を平均化して出力される速度データを安定化するようにしてもよい。
【００６３】
上記平均化・フィルタリング処理ののち３組の送波器１ａ，受波器２ａによる３系統の計測結果をベクトル合成して速度ベクトルを算出する（ｓ２３）。算出された速度ベクトルを他の航行制御装置に対して出力する（ｓ２４）。以上の処理ののち処理サイクル数カウンタｃｙｃｌｅ＃に１を加算して（ｓ２５）、リターンする。
【００６４】
ＤＳＲＶが対象物に接近した状態であると、制御部３から継続的に連続波ドップラモードが指示され、ｓ２→ｓ１２以下の処理が繰り返し実行される。ｃｙｃｌｅ＃＝２の処理サイクルにおいては、ｓ２→ｓ１２→ｓ２８→ｓ２９に進む。図８，図９に示すように、連続波ドップラモードに移行したのち処理サイクルを繰り返すと、蓄積される連続波のサンプリングデータ数も増加するため、ｃｙｌｃ＃の値に応じてＦＦＴに使用するサンプリングデータ点数を切り換える。図８に示すようにｃｙｃｌｅ＃＝２のタイミングにおいては７２００程度のデータ点数が使用可能になっているため、デシメーションレートを４に設定し、ＦＦＴ点数を１０２４に設定する（ｓ２９）。これにより、４０９６サンプルの時間幅すなわち約１７０ｍｓの時間幅のデータに基づいて速度を割り出すことができ、約５．８６Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、約０．０６ノットの速度分解能を得ることができる。ｓ２９におけるデシメーションレートおよびＦＦＴ点数の設定ののちｓ１６に進む。
【００６５】
また、ｃｙｃｌｅ＃＝３の処理サイクルにおいては、ｓ２→ｓ１２→ｓ２８→ｓ３０→ｓ３１に進む。図８に示すようにｃｙｃｌｅ＃＝３においては約１２０００の有効データが蓄積記憶されているため、デシメーションレート＝８、ＦＦＴ点数１０２４に設定する（ｓ３１）。これにより、８１９２サンプルの時間幅すなわち約３４０ｍｓの時間幅のデータに基づいて速度を割り出すことができ、約２．９３Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、約０．０３ノットの速度分解能を得ることができる。ｓ３１におけるデシメーションレートおよびＦＦＴ点数の設定ののちｓ１６に進む。
【００６６】
さらに、ｃｙｃｌｅ＃＝４の処理サイクルにおいては、ｓ２→ｓ１２→ｓ２８→ｓ３０→ｓ３２に進む。ｓ３２では前の処理サイクルの測定結果に基づいて今回のピーク周波数を推定する。このピーク周波数の推定はＤＳＲＶが２００ｍｓの短時間に急激に加速・減速できないこともに基づき、前回測定された速度から加速・減速できる範囲のドップラシフト周波数が全てこの３５０Ｈｚ内に含まれるかで判断される。この推定ののちｓ３３からｓ３４に進み、この推定されたピーク周波数が３５０Ｈｚ以下であるか否かを判断し、ピーク周波数が３５０Ｈｚ以下であると推定される場合にはｓ３５に進み、ピーク周波数が３５０Ｈｚを超えると判断された場合にはｓ３６に進む。ｓ３５では、フィルタのカットオフ周波数を３５０Ｈｚに設定するとともにデシメーションレート＝１６、ＦＦＴ点数
１０２４に設定してｓ１６に進む。上記フィルタのカットオフ周波数はｓ１７のフィルタリング処理において適用される。デシメーションレートを１６に設定すると２４ｋＨｚでサンプリングされたデータが実質的に１．５ｋＨｚのサンプリング周波数に低下するためエリアシングを防止する必要からこのようなカットオフ周波数に設定する。デシメーションレート＝１６、ＦＦＴ点数１０２４に設定することにより１６３８４サンプルの時間幅すなわち約６７０ｍｓの時間幅のデータに基づいて速度を割り出すことができ、約１．４６Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、約０．０１５ノットの速度分解能を得ることができる。
【００６７】
一方、ｓ３４で今回のピーク周波数が３５０Ｈｚを超える、すなわち、ＤＳＲＶが３．５ノットを超える速度で移動していると判断された場合にはｓ３６に進んで、フィルタのカットオフ周波数を８００Ｈｚに設定するとともにデシメーションレート＝１２、ＦＦＴ点数１０２４に設定してｓ１６に進む。上記フィルタのカットオフ周波数はｓ１７のフィルタリング処理において適用される。デシメーションレートを１２に設定すると２４ｋＨｚでサンプリングされたデータが実質的に２ｋＨｚのサンプリング周波数に低下するためエリアシングを防止するためにこのようなカットオフ周波数に設定する。デシメーションレート＝１２、ＦＦＴ点数１０２４に設定することにより１２２８８サンプルの時間幅すなわち約５００ｍｓの時間幅のデータに基づいて速度を割り出すことができ、約２Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、約０．０２ノットの速度分解能を得ることができる。
【００６８】
また、ｃｙｃｌｅ＃＝５の処理サイクルにおいては、上記ｃｙｃｌｅ＃＝４のときと同様にｓ２→ｓ１２→ｓ２８→ｓ３０→ｓ３２に進み、前の処理サイクルの測定結果に基づいて今回のピーク周波数を推定する。そしてｓ３３→ｓ３７→ｓ３８に進み、この推定されたピーク周波数が３５０Ｈｚ以下であるか否かを判断する。ピーク周波数が３５０Ｈｚ以下であると推定される場合にはｓ３９に進み、ピーク周波数が３５０Ｈｚを超えると判断された場合には前記ｃｙｃｌｅ＃＝４のときと同様にｓ３６に進む。ｓ３９では、フィルタのカットオフ周波数を３５０Ｈｚに設定するとともにデシメーションレート＝２０、ＦＦＴ点数１０２４に設定してｓ１６に進む。デシメーションレート＝２０、ＦＦＴ点数１０２４に設定することにより２０４８０サンプルの時間幅すなわち約８５０ｍｓの時間幅のデータに基づいて速度を割り出すことができ、約１．２Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、約０．０１２ノットの速度分解能を得ることができる。
【００６９】
そして、図８および図９に示すようにピーク周波数が３５０Ｈｚ以下であれば、ｃｙｃｌｅ＃＝６以後の処理サイクルにおいては、２４０００点以上のサンプリングデータ点数を使用することができるため、最高分解能でピーク周波数を割り出す。まず、上記ｃｙｃｌｅ＃＝４のときと同様にｓ２→ｓ１２→ｓ２８→ｓ３０→ｓ３２に進み、前回の処理サイクルの測定結果に基づいて今回のピーク周波数を推定する。そしてｓ３３→ｓ３７→ｓ４０に進み、この推定されたピーク周波数が３５０Ｈｚ以下であるか否かを判断する。ピーク周波数が３５０Ｈｚ以下であると推定される場合にはｓ４１に進み、ピーク周波数が３５０Ｈｚを超えると判断された場合にはｓ４２に進む。ｓ４１では、フィルタのカットオフ周波数を３５０Ｈｚに設定するとともにデシメーションレート＝２４、ＦＦＴ点数１０２４に設定したのちｓ４３に進む。デシメーションレート＝２４、ＦＦＴ点数１０２４に設定することにより２４５７６サンプルの時間幅すなわち約１秒の時間幅のデータに基づいて速度を割り出すことができ、約１Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、目標である約０．０１ノットの速度分解能を得ることができる。
【００７０】
一方、ｓ３４で今回のピーク周波数が３５０Ｈｚを超える、すなわち、ＤＳＲＶが３．５ノットを超える速度で移動していると判断された場合にはｓ４２に進んで、フィルタのカットオフ周波数を８００Ｈｚに設定するとともにデシメーションレート＝１２、ＦＦＴ点数１０２４に設定したのちｓ４３に進む。デシメーションレート＝１２、ＦＦＴ点数１０２４に設定することにより１２２８８サンプルの時間幅すなわち約５００ｍｓの時間幅のデータに基づいて速度を割り出すことができ、約２Ｈｚの周波数分解能を得ることができる。これに基づいて速度ベクトルを算出すれば、約０．０２ノットの速度分解能を得ることができる。
【００７１】
なお、処理サイクルを繰り返すことによってｃｙｃｌｅ＃の値が限りなく増加することを防止するためｓ４１，ｓ４２においてｃｙｃｌｅ＃の値を６に固定している。
【００７２】
ｓ４３では、現在トラッキングモードであるかを判断する。トラッキングモードとは、これまで測定されたスペクトル形状からドップラシフト周波数信号の帯域幅が狭い範囲に限定されており、且つ、継続的に測定値が安定しており、今回も測定値に殆ど変化がないと考えられる場合のモードである。このような場合には、デモジュレーションを省略して直接デシメーションを行うことができる。たとえば、２４ｋＨｚのサンプリングデータをデシメーションレート２４でデシメーションすると実質的に１ｋＨｚのサンプリングデータとなり、６ｋＨｚ付近に展開しているドップラシフト周波数のスペクトルは、各所に折り返し写像スペクトル（エイリアス）を生じる。しかし、ドップラシフト周波数のスペクトルが狭い帯域幅に限定されており、他のスペクトルがない場合には、これらのエイリアスが重なることはなく、いずれかのエイリアスをデシメーションされた周波数スペクトルとして取り扱ってＦＦＴをすることが可能になる。２４ｋＨｚのサンプリングデータをデシメーションレート２４または１２でデシメーションした場合、０Ｈｚ（ＤＣ）を中心周波数とするエイリアスも生じるため、これを処理用の周波数スペクトルとして用いることにより、通常処理と同様のＦＦＴが可能になる。
【００７３】
ｓ４３で、現在トラッキングモードであると判断された場合にはｓ４４に進み、周波数スペクトルの帯域幅が十分に狭く限定されているかを判断する。帯域幅が十分に狭く限定されていると判断された場合には、そのままｓ１８に進む。周波数スペクトルの帯域幅がデシメーションによって重なり合う程度に広い場合には、ピーク周波数を求めるために不要な周波数帯域をカットするためバンドパスフィルタの処理を行ったのち（ｓ４５）、ｓ１８に進む。
【００７４】
ｓ４３でトラッキングモードでない場合と判断された場合には、ｓ１６に進み、通常どおりの処理を実行する。
【００７５】
また、連続波ドップラモードの継続中に２０秒に１回の頻度で、制御部３から距離測定モードが指示される。この場合、ＤＳＰ１６は何の処理も行わずにそのままリターンする。このモードにおいて、送信部１は連続波ドップラモードの継続中に連続超音波信号の送信を一瞬停止して短時間のパルスを送信し、制御部３が反射波の時間遅れに基づいて対象物との距離を測定する。この距離測定処理は前記制御部３が実行するため、このＤＳＰ１６は処理を行う必要がなく、また、このとき連続波ドップラモードの速度測定もできないため、この間ＤＳＰ１６はフリーズする。この距離測定モードによって測定された距離が図７のモード切換しきい値よりも短い場合には連続波ドップラモードに復帰し、距離が範囲外であれば通常のパルスドップラモードに切り換える。
【００７６】
連続波ドップラモードに復帰したとき、連続波ドップラモードを再開した時点から、新たにｃｙｃｌｅ＃＝１から処理サイクルを再開するようにしてもよく、バッファ内にストアされている以前のＡ／Ｄ変換データと再開後に収集されたデータとを連続したデータと見なして測定を行うようにしてもよい。この場合には、中断していた時間を考慮して中断前のデータと再開後のデータを滑らかに接続する。接続の方法としては、補間関数を用いて補間する方法、前後のデータから自己相関に基づいて接続する方法などがある。
【００７７】
さらに、パルス波による距離測定モード時においてもカウンタをフリーズすることなくデータ収集を継続するようにしてもよく、また、カウンタをフリーズさせずにメモリのアドレスをカウントアップしながら０などのブランクデータを書き込むようにしてもよい。この場合でも、パルス波の距離測定モードの間のデータは所定の方法で補間すればよく、また、若干精度がラフになるものの補間することなく中断区間のあるデータをそのまま測定に用いてもよい。また、大型船に用いられるドップラソナーの場合には、パルスモード時に収集したデータでドップラシフト（速度）を求めることもできる。
【００７８】
以上のような動作により、対象物と距離が離れている場合には、パルス信号を用いて速度計測を行い、対象物との距離が近い場合には、連続波信号を用いて速度測定を行うことにより、必要な速度分解能を確保しつつ、パルス信号のみを用いた場合の問題点である近距離における速度分解能の低下を解決するとともに、連続波のみを用いた場合に同時に速度と距離を測定することができないなどの問題点を解決した。
【００７９】
ここで、上記フローチャートでは、ＤＳＰ１６は、デモジュレーション、フィルタリング、デシメーションを順次行ってＦＦＴ用のデータを準備するようになっているが、実際には、上記手順を順次行うのではなく、デモジュレーション・フィルタリング・デシメーションを一気に行う簡略化された演算処理によってこれを行い、さらに、過去の処理済データを利用することによってより処理時間を短縮している。以下、この簡略化された演算処理方式について説明する。
【００８０】
サンプリング周波数ｆｓによってＡ／Ｄ変換されたデータ数列ｘ（ｎ）から得られる周波数スペクトルの注目領域（スペクトルが展開している周波数帯）を拡大するためにデシメーション処理を行う。
【００８１】
このデシメーション処理を可能にするために前記注目領域の中心周波数（６ｋＨｚ）をゼロ周波数（ＤＣ）にシフトする。すなわち、周波数軸に対してスペクトルを並行移動する。この操作は、上述したように、前記サンプリングデータ数列ｘ（ｎ）の各データに対して離散複数指数関数列ｃ（ｎ）を乗算することによって行う。
【００８２】
サンプリング周波数２４ｋＨｚでサンプリングされ、中心周波数６ｋＨｚの離散時間データ列となった信号に対して、〔数８〕の指数関数列を乗算することによって中心周波数６ｋＨｚが０（ＤＣ）になるように周波数スペクトルをシフトする。この離散複素指数関数列は、複素単位乗数データ列（＋１、−ｊ、−１、＋ｊまたは＋１、＋ｊ、−１、−ｊの任意の値から開始する数列）の４種類の値のみを取るから、実際の処理では乗算を行う必要がなく、ｃ（ｎ）がマイナス符号の場合には符号反転計算のみを行い、ｃ（ｎ）が実数の場合はｘ（ｎ）の値を全て実数部とし、ｃ（ｎ）が虚数の場合はｘ（ｎ）の値を全て虚数部とするのみである。
【００８３】
図１０は、Ａ／Ｄデータバッファｘ（ｎ）から複素数バッファＸ（ｎ）への転記方式を説明する図である。Ａ／Ｄデータバッファｘ（ｎ）は、アンダーサンプリングされたサンプリングデータ（Ａ／Ｄデータ）列を記憶するバッファであり、複素数バッファＸ（ｎ）は、中心周波数＝０に周波数スペクトルシフトされた虚数部を含むサンプリングデータ列を記憶するバッファである。
【００８４】
この図において、ｘ（０）はそのままＸ（０）の実数部に転記され、Ｘ（０）の虚数部には０が書き込まれている。ｘ（１）は正負の符号を反転されたのちＸ（１）の虚数部に転記され、Ｘ（１）の実数部には０が書き込まれている。ｘ（２）は正負の符号を反転されたのちＸ（２）の実数部に転記され、Ｘ（２）の虚数部には０が書き込まれている。ｘ（３）はそのままＸ（３）の虚数部に転記され、Ｘ（３）の実数部には０が書き込まれている。このように、離散複素指数関数の演算結果を複素単位乗数データ列（＋１、−ｊ、−１、＋ｊまたは＋１、＋ｊ、−１、−ｊの任意の値から開始する数列）の値にしたがって順次符号反転および転記を繰り返すのみでこの周波数シフトを行うことができ、指数関数を実際に乗算して演算する必要がなくなり、処理を大幅に簡略化することができる。
【００８５】
さらに、前記複素数バッファＸ（ｎ）の実数部Ｒｅａｌ（ｎ）、Ｉｍａｇｉｎａｒｙ（ｎ）のうち一方は必ず０であるため、上記規則に基づいて０になる側が分かっていれば０を記憶するバッファを省略してバッファの記憶領域を実質的に半分にすることができる。
【００８６】
このように処理が簡略化されたとはいえ、連続波ドップラモード時にＦＦＴ処理のたびにデシメーション前のＡ／Ｄ変換データ全点数Ｎの周波数スペクトルシフト計算を行うことは、そのデータ点数が多いことから処理に時間が掛かる。たとえば、ＦＦＴ点数１０２４、デシメーションレート＝２４とするとＮは少なくとも２４５７６となる。また、連続波ドップラモード時には、速度計測処理が２００ｍｓ毎に実行されるのに対し、この処理に約１秒間のサンプリングデータ列を用いるため、図１１（Ａ）に示すように、この１秒間のサンプリングデータ列のうち８００ｍｓ分は過去の速度計測処理において用いたものとオーバーラップしている。そこで、このように過去において既に周波数スペクトルシフトされたオーバーラップデータについてはそのままそのデータを用い、新たに収集されたデータに対してのみ、上記周波数シフト処理を実行して処理時間を短縮する。ここで、前回の周波数スペクトルシフト処理に用いた離散複素指数関数ｃ（ｎ）の最後の引数ｎと今回の処理に用いる離散複素指数関数ｃ（ｎ）の先頭の引数ｎとが連続するようにすれば周波数スペクトルシフトされたデータ列Ｘ（ｎ）の位相スペクトルも連続するが、ｎを無制限に大きくすることができないため、サーキュラバッファ構造のメモリに記憶する。このときＦＦＴに用いるデータ列間で位相のシフトが発生するが、このドップラソナーにおけるＦＦＴ処理は周波数のパワースペクトルのピークに基づいてドップラシフト周波数を求めるためのものであり、ｎが途中でリセットされても〔数３〕から明らかなようにパワースペクトルは保存されているため以後の処理に支障はない。
【００８７】
また、スペクトル帯域を限定するためのフィルタ（ｓ１７の処理）としてＦＩＲフィルタが一般的に用いられるが、サンプリングデータｘ（ｎ）の全てにＦＩＲフィルタリング処理をしても、そのうちデシメーションレートＤのデシメーションによって選択される１／Ｄのデータしか使用されないため無駄である（なお、この説明におけるｘ（ｎ）は、上記周波数シフトされたＸ（ｎ）を表すものとする。）。このため、各データ毎にフィルタリング処理をせず、デシメーションによって破棄されるデータをスキップし、Ｄ番目のデータ毎にフィルタ処理をするようにする。この破棄されるデータをスキップするＦＩＲフィルタ処理をブロック図で示すと図１２のようになる。この図において左端の入力端から１データずつ連続して入力されるサンプリングデータｘ（ｎ）のうち、デシメーションによって選択されたデータｘ（Ｄｎ）が入力されたときのみ、ＦＩＲフィルタが機能し、各タップの演算部はフィルタ係数を乗算したデータを出力する。これらのデータを加算すればフィルタリングされたｘ（Ｄｎ）のデータを得ることができる。デシメーションによって破棄されるデータが入力端から入力された場合には上段の遅延回路（シフトレジスタ）のみ機能し、各タップの演算部の動作を休止させていればよい。これによって、フィルタリングとデシメーションを同時に行うことができる。
【００８８】
ここで、ＦＩＲフィルタは、ｘ（ｎ）の実数部および虚数部に対応して２系統が必要であるが、ｘ（ｎ）の各項はそれぞれ実数部または虚数部のみ有意な値をもち他方は０である（図１０参照）。したがって、Ｄが２の倍数であればＦＩＲフィルタから値を出力するときに、有意な実数部と有意な虚数部が与えられるフィルタ係数、および、０である実数部と０である虚数部が与えられるフィルタ係数は決まっている。したがって、Ｄを２の倍数になるように設定すれば、必ず０が与えられるフィルタ係数およびその演算処理を省略することができる。
【００８９】
さらに、上述したように周波数シフトは、入力されたサンプリングデータを実数部または虚数部に転記するとともにその符号を制御する処理であり、４データ毎に、（＋１，−ｊ，−１，＋ｊ）または（＋１、＋ｊ、−１、−ｊ）の処理を繰り返し行うものである。そこで、この実数部または虚数部として取り出す処理および正負符号をフィルタ係数として内蔵することにより、周波数シフト、フィルタリング、デシメーションを同時に処理することができる。
【００９０】
図１３に周波数シフト、フィルタリング、デシメーションの一括処理であるＦＦＴ前処理プロセスのブロック図を示す。この図は、フィルタ長が奇数であり、且つ、（Ｌ＋１）／２が偶数の場合を示している。この処理の条件としてデシメーションレートＤが周波数シフト処理の繰り返しステップである４の倍数であることが要求される。デシメーションによってＤ個に１個の割合で選択されるデータｘ（Ｄｎ）が入力されたとき、このｘ（Ｄｎ）からフィルタ長だけ逆上ったデータｘ（Ｄｎ−（Ｌ−１））までのデータに対して、フィルタ係数ｈ（０），ｈ（１），−ｈ（２），−ｈ（３），……，−ｈ（Ｌ−１）を乗算し、ｘ（Ｄｎ）・ｈ（０）＋ｘ（Ｄｎ−２）・（−ｈ（２））＋……＋ｘ（Ｄｎ（Ｌ−１））・（−ｈ（Ｌ−１））をフィルタ出力の実数部として出力する。且つ、ｘ（Ｄｎ−１）・ｈ（１）＋ｘ（Ｄｎ−３）・（−ｈ（３））＋……＋ｘ（Ｄｎ（Ｌ−１））・ｈ（Ｌ−１）をフィルタ出力の虚数部として出力する。これにより、周波数シフトおよびフィルタリングを同時に行うことができる。そして、Ａ／ＤデータがＤだけ進み、次の選択データｘ（Ｄ（ｎ＋１））が入力されたとき同様の処理を行う。このＤ毎の処理によりデシメーションが実行される。このように、Ａ／Ｄデータを１データずつ進め、デシメーションにより選択されるデータが入力されたとき、フィルタリングおよび周波数シフトを一気に行うようにしたことにより、処理が簡略化されるとともに、無駄な演算処理を全く行うことがないため、演算所要時間を大きく短縮することができる。
【００９１】
なお、上述したようにこの例では、フィルタ長が奇数であり、且つ、（Ｌ＋１）／２が偶数の場合を示しているが、（Ｌ＋１）／２が奇数の場合でも、また、フィルタ長が偶数でＬ／２が奇数・偶数の場合でも同様に処理することが可能である。
【００９２】
なお、図３に示した受信部はアナログ部で一旦中間周波にダウンコンバートしたのちＡ／Ｄ変換する構成になっているが、図１４に示すように受波器が受信した信号をそのままＡ／Ｄ変換するようにしてもよい。この場合にはサンプルホールド回路を内蔵した広帯域高速Ａ／Ｄ変換器を用いることにこれを実現することができる。この場合でも、サンプリング周波数を適当に選択することにより、実数系統のみでＡ／Ｄ変換でき、且つ、ＤＳＰ内における周波数スペクトルシフト演算を簡略化することができる。
【００９３】
なお、この実施形態はドップラソナーについてしたが、この発明は、ドップラソナーのみならず、信号を周波数スペクトルに展開し、そのピークを求める処理であればどのような分野にも適用することができる。
【図面の簡単な説明】
【００９４】
【図１】この発明における信号処理方式を説明する図である。
【図２】この発明の実施形態であるドップラソナーの概略構成図である。
【図３】同ドップラソナーの受信部の構成を示す図である。
【図４】同ドップラソナーにおける反射波信号の処理方式を説明する図である。
【図５】同ドップラソナーのＤＳＰの動作を示すフローチャートである。
【図６】同ドップラソナーのＤＳＰの動作を示すフローチャートである。
【図７】同ドップラソナーにおけるパルスドップラモードと連続波ドップラモードの切換方式を説明する図である。
【図８】連続波ドップラモードに切り換わった直後に利用できるデータ点数を説明する図である。
【図９】連続波ドップラモードに切り換わった直後の処理サイクルにおけるデシメーションレート，ＦＦＴ点数の設定値を示す図である。
【図１０】前記ＤＳＰにおける周波数シフト処理を示すブロック図である。
【図１１】前記ＤＳＰにおけるサンプリングデータのオーバーラップ状態を示す図である。
【図１２】前記ＤＳＰにおいて周波数シフト、ＦＩＲフィルタ、デシメーションを同時に行うＦＦＴ前処理を示すブロック図である。
【図１３】同ＦＦＴ前処理における入力信号に対する処理方式を説明するブロック図である。
【図１４】前記ドップラソナーの受信部の他の構成例を示す図である。
【図１５】窓関数の乗算と周波数シフト処理を同時に行う場合の処理ブロックを示す図である。
【符号の説明】
【００９５】
１−送信部、２−受信部、３−制御部、２ａ−受波器、１５−Ａ／Ｄ変換器、１６−ＤＳＰ
【図１】
2006119148.tif 000010
【図２】
2006119148.tif 000011
【図３】
2006119148.tif 000012
【図４】
2006119148.tif 000013
【図５】
2006119148.tif 000014
【図６】
2006119148.tif 000015
【図７】
2006119148.tif 000016
【図８】
2006119148.tif 000017
【図９】
2006119148.tif 000018
【図１０】
2006119148.tif 000019
【図１１】
2006119148.tif 000020
【図１２】
2006119148.tif 000021
【図１３】
2006119148.tif 000022
【図１４】
2006119148.tif 000023
【図１５】
2006119148.tif 000024