以下に、本願明の実施の形態にかかる受信装置を図面に基づいて詳細に説明する。なお、以下の実施の形態により本発明が限定されるものではない。
実施の形態1.
図1は、複数の無線信号が混合し合う態様を例示する図である。図1に示すように、Nr本の受信アンテナ1〜Nrが、無線信号を送信するNt本の送信アンテナ1〜Ntの内の複数からの無線信号を受信しうる場所に位置する場合を具体例とする(Nr,Ntは2以上の整数)。この場合には、Nr本の受信アンテナ1〜Nrは、送信アンテナ1〜Ntの内の複数からの無線信号が混合し合って混信を起こした信号を受信することとなる。以下、実施の形態1を説明する。
図1に示す具体例においては、時刻kにおける送信信号もしくは送信データをs(k)、時刻kにおける受信信号もしくは受信データをr(k)と表記する。このとき、時刻kにおける送信信号s(k)は、列の数が送信信号に含まれるシンボル数Nsymb(Nsymb>>1)で、行の数が送信アンテナの数Ntの下式1に示す行列sの形式で定義できる。同様に、時刻kにおける受信信号r(k)は、行の数が受信信号に含まれるシンボル数Nsymb(>>1)で、列の数が受信アンテナの数Nrの下式2に示す行列rの形式で定義できる。
時刻kにおける送信信号s(k)と受信信号r(k)との関係は、Nr行×Nt列であって、(i,j)番目の要素がhi,j(k)と示される信号の混信の程度を示す混合行列H(k)を用いて下式3により示される。なお、以下の説明においては、混合行列H(k)においては、説明の明確化および具体化のために、受信装置内部で生じる熱雑音の成分は省略される。
図2は、実施の形態1にかかる信号分離を行う機能を有する受信装置1のハードウェア構成を例示する図である。図2に示すように、受信装置1は、受信部10および信号分離装置12を含む。信号分離装置12は、バスを介して相互にデータの入出力が可能に接続されたCPU120、受信部インターフェース122、表示装置、キーボードおよびマウスを含む入出力装置124、インターネットまたはLANのようなネットワークに接続された図示を省略したサーバとの間でデータを入出力するネットワークインターフェース126、RAM128、ROM130、DSP132、記録媒体136に対してデータの読み書きを行う記憶装置134および信号分離部20を含む。つまり、受信装置1は、上述のように目的の信号の他に複数の信号を含む無線信号を受信して処理し、目的の信号を分離して出力することができるコンピュータの構成部分を含む。記録媒体136は、CD,DVDおよびHDが例示される。複数の信号には混信も含まれる。なお、以下、実質的に同じ機能を有する構成部分および処理には同じ符号が付される。なお、信号分離部20と同様の処理を、ソフトウェアによって実現することもできる。このことは、以下の各信号分離部について同様である。
図3は、実施の形態1にかかる第1の信号分離部の構成を示す図である。図4は、受信信号から得られた受信データrを分割して得られるMmax個のスーパーフレームとフレームとの関係を示す図である。フレーム処理部202は、図2に示す受信装置1が受信の目的とする1つの受信データrに含まれる1からM番目の各スーパーフレームを、Nmax個のフレームに分割する。さらに、フレーム処理部202は、分割の結果得られたフレームにバッチ処理型ICA(適宜「バッチ型ICA」とも称する)に用いられるフレーム番号(1からNmax)を付して、各時刻k(1≦k≦Nmax)において、k番目の1つのフレームを、ICA処理部204に対して順次、出力し、さらに、バッファメモリ206に記憶する。
第1の設定部である初期値設定部200は、第1の信号分離部である信号分離部20が処理を開始すると、フレーム処理部202が、時刻1における最初のフレーム#1をICA処理部204に対して出力する前に、各要素をランダムな値とした混合行列の初期値Hinitを生成し、ICA処理部204に対して設定する。これ以降、初期値設定部200は、各時刻kにおいてフレーム処理部202が出力するフレーム#kから得られ、補整部214から出力される混合行列H^init,outを、その次の時刻k+1のフレーム#k+1を処理するための混合行列の初期値HinitとしてICA処理部204に対して設定する。
ICA処理部204は、各時刻kに入力されるフレーム#kに対して、初期値設定部200により設定された混合行列の初期値Hinitを用いてバッチ型ICA処理を行う。ICA処理部204は、k番目のフレームでのICA処理より得られた混合行列の推定値(以下「推定混合行列」と称する)H^(k)を、時間追尾処理部208に対して出力し、さらに、バッファメモリ206に記憶する。このようにバッファメモリ206に推定混合行列H^(k)を記憶することにより、ICA処理部204は、時刻kに入力されたフレームkに対してバッチ型ICA処理を行う際に、フレーム処理部202から入力される混合行列の初期値Hinitの代わりに、例えば、バッファメモリ206に記憶された推定混合行列H^(k−1)を用いることもできるようになる。
時間追尾処理部208は、ICA処理部204から入力された時刻kにおいて生成された推定混合行列H^(k)、あるいは、バッファメモリ206に記憶された推定混合行列H^(1)からH^(k−1)の内のいずれかを用いて時間追尾処理を行い、推定混合行列H^(k)の経時的な変化を補整した行列(以下「推定補整混合行列」と称する)H^'(k)を生成する。以下、時間追尾処理部208の時間追尾処理について、さらに説明する。
なお、以下の説明においては、説明の具体化および明確化のために、Nt=2,Nr=2であって、推定混合行列H^(k)が時間的に線形に変化する場合を具体例とする。また、ICA処理部204が、Ni番目のフレームNiとNj番目のフレームNj(1≦Ni<Nj≦Nmax)とに対してバッチ型ICA処理を行って得られた混合行列をH^(i),H^(j)と記し、推定混合行列H^(i)の(m,n)番目の推定要素をh^i m,nと記す。
推定混合行列H^(k)の経時的変化が線形である場合、ICA処理部204により生成される推定混合行列H^(k)の要素の値は、フレーム番号kに正比例して変化する。この性質を利用して、時間追尾処理部208は、実際に求められた推定混合行列H^(i),H^(j)の間の推定混合行列H^(k)(ここでは、i<k<j)の各要素(m,n)番目の推定要素h^k mnを、例えば、h^k m,n=h^i m,n+(h^j m,n−h^i m,n)×(k−i)/(j−i)のように補間することにより、各時刻における推定補整混合行列H^'(k)を推定する。
第1の分離部であるデータ分離部210は、時間追尾処理部208から入力される推定補整混合行列H^'(k)を用いて、受信データから、図1に示した複数の送信アンテナのいずれかから送信された送信信号に含まれ、受信装置1が受信の目的としたデータを分離することにより、分離データを生成する。問題検出部212は、ICA処理部204のバッチ型ICA処理に、バッチ型ICA処理の任意性に起因する組み合わせ問題(Permutation Problem)を発生させているフレームを検出する。
補整部214は、組み合わせ問題の発生が検出されたフレームm+1の推定補整混合行列H^(m+1)の推定要素h^m+1 a,bを、上述したように、線形な経時的変化をする推定混合行列H^(k)に適用可能な補間方法によって得られる値とするか、この値にほぼ等しい値の推定要素h^m+1 c,d(a≠b,b≠d)と入れ替えることにより並び替えを行うことにより、組み合わせ問題を解消する。
さらに、補整部214は、並び替えなどを行った推定補整混合行列H^'(m+1)をバッファメモリ206に記憶し、さらに、補整部214は、得られた推定補整混合行列H^'(m+1)を、混合行列の初期値Hinit,outとして出力する。上述したように、混合行列の初期値Hinit,outは、ICA処理部204に設定される混合行列の初期値Hinitとして用いられる。
さらに、補整部214は、補整された推定補整混合行列H^'(m+1)を、問題検出部212を介して時間追尾処理部208に対して出力する。この場合には、時間追尾処理部208は、問題検出部212から入力された補整された推定補整混合行列H^'(m+1)を、データ分離部210に対して出力してもよい。
信号分離部20の動作.
図5は、図2に示した信号分離装置12、より具体的には信号分離部20の詳細な処理S14を示すフローチャートである。S140において、受信装置1の受信部10が受信信号を受信し、受信部インターフェース122に対して出力し、受信部インターフェース122は、入力された受信信号を、信号分離装置12の受信部インターフェース122に対して出力する。受信部インターフェース122は、受信信号から図4に示した受信データrを受信処理(例えば、フィルタ処理、タイミング補正)して、図3に示される信号分離部20のフレーム処理部202に対して出力する。なお、フィルタ処理、タイミング補正が不要であれば、これらの処理を行わずに、フレーム処理部202に出力する。
S142において、フレーム処理部202は、受信部インターフェース122から入力された受信データを図4に示されるスーパーフレームSframeに分解し、ICA処理部204に対して出力する。S144において、フレーム処理部202は、処理変数Mを初期化(1)とする。S146において、初期値設定部200は、バッチ型ICA処理の初期値HinitをICA処理部204に設定する。
S148において、フレーム処理部202は、入力されたM(1≦M≦Mmax)番目のスーパーフレームを処理対象とする。S150において、フレーム処理部202は、入力されたM番目のスーパーフレームの分割数Nmaxを設定する。分割数Nmaxは図4に示される。S152において、フレーム処理部202は、M番目のスーパーフレームを分割数Nmaxのフレームに分割する。
S154において、ICA処理部204は、処理変数Nを初期化する。初期化は、Nを1にする処理である。S156において、ICA処理部204は、N番目のフレームを処理の対象としてフレーム処理部202から取り出す。S158において、ICA処理部204は、バッチ型ICA処理を行い、時刻kにおける推定混合行列H^(k)を生成する。
S160において、時間追尾処理部208は、ICA処理部204が生成した混合行列H^(k)に対して時間追尾処理を行い、推定補整混合行列H^'(k)を生成し、データ分離部210に対して出力する。
S162において、ICA処理部204は、Nmax=Nであるか否かを判断する。信号分離部20は、Nmax=Nである場合にはS168の処理に進み、これ以外の場合にはS164の処理に進む。S164において、時間追尾処理部208は、混合行列の初期値Hinitを、最新、すなわちN番目の推定補整混合行列H^'(N)とする(Hinit←H^'(N))。S166において、時間追尾処理部208は、処理変数Nを1増やし、すなわちインクリメントし、S156の処理に戻る。
S168において、時間追尾処理部208、問題検出部212および補整部214は、上述したように補整混合行列を時間的変化に追尾させるための処理を行う。S170において、データ分離部210は、後記する式12に示した計算を行い、N番目のフレーム内の時刻kの送信データs(k)に対し、推定補整混合行列H^'(k)−1を用いて受信データr(N)を分離する。さらに、S172において、データ分離部210は、分離の結果得られた分離データに対して連結処理を行い、バッファメモリ206に記憶する。
S174において、ICA処理部204は、Mmax=Mであるか否かを判断する。信号分離部20は、Mmax=Mである場合には処理を終了し、これ以外の場合にはS176の処理に進む。S176において、ICA処理部204は、混合行列の初期値Hinitを、最新の推定補整混合行列H^'(k)とする(Hinit←H^'(k))。S178において、ICA処理部204は、処理変数Mを1増やす(M←M+1)。以下、S148の処理に戻り、前述した処理を繰り返す。
図6は、図5に示したS168の処理において、図3に示した補整部214が、補整混合行列の組み合わせ問題を先に解いた場合の処理S10を示すフローチャートであり、図7は、補整部214が補整混合行列の組み合わせ問題を事前に解かなかった場合の処理S12を示すフローチャートである。処理S10,S12は、図5に示したS168において行われる第1の処理である。補整混合行列の組み合わせ問題を事前に解いた場合において、補整部214は、補整混合行列の推定値の各成分間の時間変化による差分と、補整混合行列の推定値の時間変化モデルとに基づいて各時刻の補整混合行列の推定値を求めるために組み合わせ問題を解く必要がある。
S100において、補整部214は、組み合わせ問題を解決するために、各時刻におけるフレームより求められた推定補整混合行列H^'(k)に対し、各行または各列の相関性を判断し、相関値の高い組み合わせになるよう推定補整混合行列H^’(k)の成分の入れ替えを行う。S102において、補整部214が、例えば、i番目とj番目とのフレームから求めた推定補整混合行列H^'(i),H^'(j)から、混合行列の組み合わせ問題を解いた混合行列の推定値は、下式4,5のように表わされる。
上記場合において、i番目のフレームとj番目のフレームとの間で混合行列の推定値が線形に変化していると仮定すると、補整部214は、推定補整混合行列H^'(i),H^'(j)の間の時間変化量Δは、下式6により計算される。
なお、上式において、Lは各フレーム内のシンボル数である。
S104において、補整部214は、上述のように求められた時間変化量Δと、各フレームより求められ、補整混合行列の推定値であり、バッファメモリ206に記憶された推定補整混合行列H^'(k)を用いて、各時刻kにおける推定補整混合行列H^'(k)を求める。データ分離部210は、フレーム処理部202から入力された受信データを、上述のように求められた時刻kにおける推定補整混合行列H^'(k)を用いて処理し、受信データに含まれる分離データd(k)を分離する。
補整部214が補整混合行列の組み合わせ問題を事前に解かなかった場合には、図7に示すように、S120において、問題検出部212は、推定補整混合行列H^'(i),H^'(j)の時間変化量Δを計算する。S122において、問題検出部212は、図7を参照して後述する各時刻における補整混合行列の時間変動モデルを求め、求められた時間変動モデルと、フレームiより求められた推定補整混合行列H^'(i)とを用いて、下式7により各時刻kにおける推定補整混合行列H^'(k)を求める。
S124において、問題検出部212は、時刻kにおける推定補整混合行列H^'(k)と、バッチ型ICA処理により得られた推定混合行列H^(i)とに、大きく異なる要素が含まれるか否かを判断する。信号分離部20は、推定補整混合行列H^'(k)と推定補整混合行列H^'(i)とに、大きく異なる要素が含まれる場合にはS126の処理に進み、これ以外の場合には処理を終了する。なお、推定補整混合行列H^'(j)と推定補整混合行列H^'(i)とに含まれる要素が大きく異なるということは、フレームiから得られた推定混合列行列H^'(i)と、フレームjから得られた推定混合列行列H^'(j)(i≠j)との間に組み合わせ問題が生じていることを意味する。
図8は、フレームiに対するバッチ型ICA処理により得られた推定混合列行列H^'(i)と、他のフレームjに対するバッチ型ICA処理により得られた推定補整混合行列H^'(j),(i≠j)との間に組み合わせ問題が生じている場合の具体例を示す図である。なお、記載の明確化および具体化のために、図8には、4つのフレームm−1,m,m+1,m+2の補整混合行列H^'(k)の推定要素h^k a,bのみが図示されている。図8に示される点線は、過去または未来の推定補整混合行列H^'(k)の推定要素h^k a,bによって予測される推定要素h^k a,bの変化モデルを示す。
S126において、図8に例示したように、問題検出部212は、フレームm+1に対応する推定補整混合行列H^'(m+1)の推定要素h^m+1 a,bが変化モデルより大きく外れている場合には、フレームm+1において組み合わせ問題が起きた可能性が大きいと判断し、補整部214に対して通知し、フレームm+1の推定補整混合行列H^'(m+1)を補整部214に対して出力する。補整部214は、組み合わせ問題が発生していると推定されるフレームm+1の推定補整混合行列H^'(m+1)の推定要素h^m+1 a,bを、変化モデルに等しいか、ほぼ等しい推定要素h^m+1 c,d(a≠b,b≠d)と入れ替えることにより並び替えを行い、組み合わせ問題を解消し、処理結果をバッファメモリ206に記憶する。
あるいは、推定要素h^m+1 c,dの候補に対し、推定補整混合行列H^'(m+1)の位相を反転させ、且つ、並び替えを行ってもよい。なお、位相補整のみを行う場合は(a,b)を含む全ての推定要素h^m+1 c,dを候補点として検索結果に入れてもよい。以下、推定補整混合行列H^'(m+1)が、下式8に示す2×2の行列である場合を具体例として、推定補整混合行列H^'(m+1)との並び替えをさらに説明する。
式8に例示した推定補整混合行列H^'(m+1)に対して並び替えによる補整を行った場合、下式に示す推定補整混合行列H^'(m+1)が得られる。
推定補整混合行列H^'(m+1)に対して位相反転による補整を行った場合、式10に示す推定補整混合行列H^'(m+1)が得られる。
また、推定補整混合行列H^'(m+1)に対して位相反転および並び替えによる補整を行った場合、式11に示す推定補整混合行列H^'(m+1)が得られる。
なお、上記した式9〜式11は、並び替えによる補整を行った場合の一例を表現したに過ぎず、他の数式になる場合もあることは言うまでもない。
図9は、推定補整混合行列H^'(k)の隣接する推定要素h^m−1 a,bと推定要素h^m a,bの差分値Δmを用いて組み合わせ問題が発生したフレームを探知する方法を例示する図である。以上、事前に予測された変化モデルから大きく異なる推定補整混合行列H^'(k)の要素を検知し、組み合わせ問題が発生したフレームの探知および推定補整混合行列H^'(k)の補整の行う手法を説明したが、以下に示すように、変化モデルを用いずに、推定補整混合行列H^'(k)に隣接する推定要素h^m−1 a,bと推定要素h^m a,bの差分値Δmを用いて組み合わせ問題が発生したフレームの探知も考えられる。
図9に示すように、推定補整混合行列H^'(k)の隣接する推定要素h^k a,bのk=m−2からm,m+2,m+3の間それぞれの差分値Δm-1,Δm,Δm+3がほぼ等しい正の値であるのに対して、k=m+1,m+2の間の推定要素h^k a,bの差分値Δm+2は負の値である。このように、隣接するフレーム間で差分値の正負が変わった場合、その差分値を与えるフレーム間で組み合わせ問題の発生を検出できる。あるいは、フレーム間の差分値Δ(2) k=Δk−Δk−1に対して閾値を設け、差分値Δ(2) kが閾値を超えたフレームを検出し、組み合わせ問題が発生した推定補整混合行列H^'(k)の要素の並び替えを行ってもよい。
図10は、推定補整混合行列H^'(k)の隣接するフレームの同じ要素を用いて組み合わせ問題が発生したフレームを探知し、補整する処理S13を示すフローチャートである。S13は、図5に示したS168において行われる第2の処理である。図10に示すように、S130において、問題検出部212は、各フレームにおいて求められた推定補整混合行列H^'(k)の隣接するフレームの対応する推定要素h^k a,bと推定要素h^k+1 a,bの差分Δk+1を、順次、計算する。
S132において、問題検出部212は、直前に計算された差分Δkと、最新の差分Δk+1とを比較し、差分Δk,Δk+1の値の間で閾値を超える変化が生じたか否かを判断する。信号分離部20は、差分Δk,Δk+1の値の間で正負の閾値を超える変化が生じた場合にはS134の処理に進み、これ以外の場合には処理を終了する。S134において、補整部214は、図8,図9を参照して説明したように、組み合わせ問題が発生したフレームおよび組み合わせ問題の解消のための補整を行う。
データ分離部210は、上述のように時間追尾処理部208により求められ、補整部214により補整された推定補整混合行列H^'(k)の逆行列H^'(k)−1を求め、式12に示すように、分離データd(0),d(1),d(2)・・・を生成して出力する。なお、この処理は、図5に示した信号分離部20の処理においては、S170において実行される。
図11は、混合行列の推定値に対し時間追尾処理を行なわなかった場合に信号分離部20により得られる分離後の信号のコンスタレーションを示す図であり、図12は、混合行列の推定値に対し時間追尾処理部208による上記時間追尾処理を行なった場合に信号分離部20により得られる分離後の信号のコンスタレーションを示す図である。なお、図11,図12においては、送信信号の変調方式としてQPSK(Quadrature Phase Shift Keying)が用いられる場合の具体例が示されている。
図11と図12とを比較すると理解できるように、時間追尾処理部208および補整部214による混合行列の推定値の時間追尾処理を行うと、図11に示す分離後の信号のコンスタレーション(Constellation)の乱れが、図12に示すように抑えられる。以上説明したように、図3に示されるICA処理部204により処理されたデータを、時間追尾処理部208によりさらに処理することにより、バッチのICA処理部204を用いた信号分離部20に、混合行列の推定値の時間追尾処理機能を付加することができる。
以上説明したように、実施の形態1によれば、受信データに対して独立成分分析を行い、分離されるべきデータを含む複数の無線信号の混合の程度を示す混合行列の推定値を生成し、受信データと生成された混合行列の推定値とに基づいて、混合行列の推定値の経時的変化を補整する時間追尾処理を行って補整混合行列の推定値を生成し、生成された補整混合行列の推定値に基づいて、受信データから、分離されるべきデータを分離することとしたので、推定精度および収束性が高いバッチ処理型ICAに対し、時間変動に対する追従性を向上させることが可能となる。
実施の形態2.
以下、第2の実施の形態を説明する。すでに説明した信号分離部20は、バッチ処理型ICAを用いた受信装置1に混合行列の推定値の時間追尾処理機能を付加した構成を採る。以下、ICAより求まる混合行列の推定値の推定精度が信号分離部20よりも向上させるように改良された第2の信号分離部を説明する。
図13は、実施の形態2にかかる第2の信号分離部の構成を示す図である。第2の信号分離部である信号分離部22は、受信装置1において、図3に示される第1の信号分離部である信号分離部20と置換されて用いられる。信号分離部22は、第1の信号分離部20に、さらに初期値選定部220を加え、初期値設定部200を第2の設定部である初期値設定部268で置換した構成を採る。初期値選定部220は、時間追尾処理部208が生成し、バッファメモリ206に記憶した推定補整混合行列H^'(k)の内、任意の時刻k=Tにおける推定補整混合行列H^'(T)を初期値Hinit,inとして選定して読み出し、新たな初期値Hinitとして初期値設定部268にフィードバックする。初期値設定部268は、初期値選定部220によりフィードバックされた推定補整混合行列H^'(T)を、混合行列の初期値HinitとしてICA処理部204に対して設定し、バッファメモリ206に記憶する。つまり、第2の信号分離部22は、初期値選定部220により選定された任意の時点K=Tの推定混合行列H^'(T)を用いてICA処理部204がバッチ型ICA処理を行うように構成されている。
初期値選定部220による処理がない場合には、一般的に、上述のように最初にICA処理部204に対して設定される混合行列の初期値Hinitの要素は乱数などによりランダムに決められるので、ICA処理部204によって求められる推定混合行列H^(k)の精度が短時間の内には向上しない可能性がある。しかしながら、上述のように第2の信号分離部22を構成することにより、すでに時間追尾処理部208により処理された推定補整混合行列H^'(T)を、ICA処理部204が繰り返して用いることにより、時間追尾処理部208により生成される推定補整混合行列H^'(k)の精度がさらに向上し、得られる時間追尾処理に要する計算の収束性もさらに向上する。以下、図13に示した第2の信号分離部22の処理を説明する。図14は、図13に示した第2の信号分離部の処理S20を示すフローチャートである。信号分離部22の処理においては、図5に示した信号分離部20の処理S14に含まれるS140からS178の処理に、S200からS206の処理がさらに加えられている。信号分離部22が行うS140からS152の処理は、実施の形態1において信号分離部20が行うS140からS152の処理と同一なので、説明を省略する。
図14に示すように、S152の処理が終わると、ICA処理部204は、S200の処理において、繰り返しカウンタ変数Cを初期化し(C←1)し、さらに、繰り返し回数Cmaxを設定し、S154の処理に進む。このように、初期値設定部200にフィードバックされた推定補整混合行列H^'(T)に対して回数Cmaxだけ繰り返してICA処理部204および時間追尾処理部208による処理を行うことにより、初期値選定部220によりフレーム処理部202に設定される推定補整混合行列H^'(T)の精度が向上し、時間追尾処理に要する計算の収束性も向上する。信号分離部22が行うS156からS166の処理は、実施の形態1において信号分離部20が行うS156からS166の処理と同一なので、説明を省略する。S168の処理が終わると、S202において、ICA処理部204は、繰り返しカウンタ変数Cの値が繰り返し回数Cmaxと等しいか否かを判断する。信号分離部22は、繰り返しカウンタ変数Cの値が繰り返し回数Cmaxと等しい場合にはS170の処理に進み、これ以外の場合にはS204の処理に進む。信号分離部22が行うS170からS178の処理は、実施の形態1において信号分離部20が行うS170からS178の処理と同一なので、説明を省略する。
S204において、ICA処理部204は、繰り返しカウンタ変数Cをインクリメントする。S206において、初期値選定部220は、時間追尾処理部208が任意の時刻k=Tにおける処理により求めた推定補整混合行列H^'(T)をバッファメモリ206から読み出して初期値設定部268に対して出力し、初期値設定部268は、バッファメモリ206から読み出した推定混合行列H^(T)を初期値Hinit,inとして混合行列の初期値Hinitを置換して、S154の処理に戻る。
以上説明したように、実施の形態2によれば、時間処理部によって求められた混合行列を初期値として利用するようにしているので、次時刻のバッチ処理を行う際の演算の収束性の向上を図ることが可能となる。
実施の形態3.
以下、実施の形態3を説明する。図15は、実施の形態3にかかる第3の信号分離部の構成を示す図である。図15に示す第3の信号分離部である信号分離部24は、図3に示した信号分離部20に置換して用いられる。信号分離部24は、図13に示した第2の信号分離部である信号分離部22に第2の分離部としてのデータ分離部240を加え、信号分離部22における時間追尾処理部208を、これとは異なる動作を行う時間追尾処理部242で置換した構成を採る。信号分離部24において、データ分離部240は、ICA処理部204から入力される推定混合行列H^(k)を用いて受信データr(0),r(1),r(2)・・・に対して、ICA処理部204から入力される推定混合行列H^(k)を用いてデータ分離部210と同様な分離処理を行い、分離処理の結果得られた分離データ尾処理を時間追尾処理部242に対して出力する。時間追尾処理部242は、ICA処理部204により生成された推定混合行列H^(k)と、データ分離部240から入力される推定分離データd^(0),d^(1),d^(2)・・・と、推定受信データr^(0),r^(1),r^(2)・・・とを受け入れて、時間追尾処理を行い、処理の結果得られた推定補整混合行列H^'(k)を、データ分離部210および初期値選定部220に対して出力する。なお、推定補整混合行列H^'(k)は、初期値選定部220を介してバッファメモリ206に記憶される。信号分離部24は、2回目以降の時間追尾処理のために、ICA処理部204から入力される推定混合行列H^(k)のみでなく、データ分離部240が、この推定混合行列H^(k)を用いて受信データr(0),r(1),r(2)・・・から分離した推定分離データd^(0),d^(1),d^(2)・・・、および、受信データr(0),r(1),r(2)・・・を用いて時間追尾処理を行う。
以下、信号分離部24の処理S24を説明する。図16は、図15に示した第3の信号分離部24の処理S24を示す図である。図16に示すように、信号分離部24の処理は、図14に示した第2の信号分離部である信号分離部22が行う処理S20に含まれるS168の処理を削除し、処理S20に含まれるS158の処理の次に、データ分離部240により推定分離データd^(i)を得るS240の処理、すなわち混合信号の推定値分離処理と、時間追尾処理部242による処理を行うS242の処理とを追加し、処理S20に含まれるS164の処理をS241の処理で置換した構成を採る。
信号分離部24が行うS140からS158の処理は、実施の形態2において信号分離部22が行うS140からS158の処理と同一なので、説明を省略する。図16に示すように、S240において、信号分離部24のデータ分離部240は、ICA処理部204から入力される推定混合行列H^(k)と、受信データr(k)とから推定分離データd^(k)を得て時間追尾処理部242に対して出力し、バッファメモリ206に記憶する。S242において、時間追尾処理部242は、バッファメモリ206から読み出した推定補整混合行列H^'(k−1)、受信データr(k),r(k−1)、および、データ分離部240により得られた推定分離データd^(k),d^(k−1)を受け入れ、時間追尾処理を行い、処理の結果得られる推定混合行列H^(k)を、バッファメモリ206に記憶する。
S162において、信号分離部24は、Nmax=Nであるか否かを判断する。Nmax=Nではない、すなわちNmaxがNに等しくない場合にはS241の処理に進む。S241において、時刻kにおける推定補整混合行列H^'(k)が、推定混合行列の初期値H^initに設定される(H^init←H^(k))。S166において、時間追尾処理部242はNをインクリメント、すなわち現在のNに1を加算した値を新たなNにして、S156の処理に戻る。信号分離部24が行うS140からS152の処理は、実施の形態1において信号分離部20が行うS140からS152の処理と同一なので、説明を省略する。
S162において、Nmax=Nであると判定された場合には、S202の処理に進む。S202において、信号分離部24は、Cmax=Cであるか否かを判断する。ここで、Cmax=Cではない、すなわちCmaxがCに等しくない場合にはS204の処理に進み、S204およびS206の処理を実行してS154の処理に戻る処理を行う。なお、信号分離部24が行うS204およびS206の処理は、実施の形態2において信号分離部22が行うS204およびS206の処理と同一なので、説明を省略する。一方、S202において、Cmax=Cであると判定された場合には、S170の処理に進む。信号分離部24が行うS170からS178の処理は、実施の形態2において信号分離部22が行うS170からS178の処理と同一なので、説明を省略する。
以上の説明のように、信号分離部24のICA処理部204は、フィードバックされた推定補整混合行列H^'(k)を混合行列の初期値Hinitにしてバッチ型ICA処理を行うこととなる。また、S170の処理では、上述の処理により最終的に得られた混合行列の初期値Hinitを用いて、受信データr(k)から最終的な分離データd(k)を得ることになる。さらに、推定混合行列H^(k)に加えて、受信データr(k),r(k−1)、推定分離データd^(k),d^(k−1)および推定補整混合行列H^'(k−1)を用いて時間追尾処理を行うことにより、つまり、混合行列の推定値だけでなく分離データも用いることにより、各時刻の混合行列の推定値の推定精度をより向上させ、時間追尾処理に要する計算の収束性をより向上させることができる。
次に、S242における時間追尾処理部242の時間追尾処理を説明する。時間追尾処理部242は、LMS(Least Mean Square)アルゴリズムおよびRLS(Recursive Least Square)アルゴリズムに代表される適応処理を用いて時間追尾処理部を行う。図17は、伝送路の状態を示す値である推定混合行列H^(i)の値をフレームの中央から未来に向けて更新する処理を例示するフローチャートである。図18は、伝送路の状態を示す値である推定混合行列H^(i)の値をフレームの中央から過去に向けて更新する処理を例示するフローチャートである。以下、図17および図18の処理を説明する。
図17に示すように、S260において、時間追尾処理部242は、kの値をN/2とし、初期値設定部220は、推定混合行列H^(i)をバッファメモリ206から読み出して、混合行列の初期値Hinitとする。S262において、図15に示される時間追尾処理部242は、受信データr(k)およびデータ分離部240により分離された推定分離データd^(k)ならびに、バッファメモリ206から読み出した1つ前のフレームに実行された処理により得られた推定分離データd^(k―1)、分離データd(k−1)および推定補整混合行列H^'(k−1)を用いて、適応処理により推定補整混合行列H^'(k)を更新する。S264において、時間追尾処理部242は、kをインクリメントする。つまり、現在のkに1を加算した値を新たなkとする。S266において、時間追尾処理部242は、kがNより大きいか否かを判断する。信号分離部24は、kがNより大きい場合には処理を終了し、これ以外の場合にはS262の処理に戻り、以後、S262、S264およびS266の処理を繰り返す。
また、図18に示すように、S280において、時間追尾処理部242は、kの値を(N/2)−1とし、初期値設定部220は、推定混合行列H^(i)をバッファメモリ206から読み出して、混合行列の初期値Hinitとする。S262の処理は、図17と同じである。すなわち、図15に示される時間追尾処理部242は、受信データr(k)およびデータ分離部240により分離された推定分離データd^(k)ならびに、バッファメモリ206から読み出した1つ前のフレームに実行された処理により得られた推定分離データd^(k―1)、分離データd(k−1)および推定補整混合行列H^'(k−1)を用いて、適応処理により推定補整混合行列H^'(k)を更新する。S284では、時間追尾処理部242によって、現在のkから1を減算するデクリメント処理が行われる。S286において、時間追尾処理部242は、kが1より小さいか否かを判断する。信号分離部24は、kがNより小さい場合には処理を終了し、これ以外の場合にはS262の処理に戻り、以後、S262、S284およびS286の処理を繰り返す。
図19は、図17および図18に示した時間追尾処理部の処理を説明するための説明図である。図19においては、初期値として設定する推定混合行列H^(i)が、時間軸方向の中央にある場合を想定している。このような推定混合行列H^(i)は、ICA処理部204が出力する推定混合行列H^(N/2)に近い値を採るので、図17に示すフローチャートによる処理手順および図18に示すフローチャートによる処理手順の何れを用いてもよい。すなわち、推定混合行列H^(i)の値をフレームの中央から未来に向けて更新してもよいし、推定混合行列H^(i)の値をフレームの中央から過去に向けて更新してもよい。
なお、伝送路が線形に変化する場合は、図3および図5に示されるICA処理部204から出力される推定混合行列H^(k)および図15に示される時間追尾処理部242から出力される推定補整混合行列H^'(k)は、フレーム中央の伝送路における推定補整混合行列H^'(N/2)に近い値となることを、ここに付言しておく。
以上説明したように、実施の形態3によれば、時間処理部を行う際に、混合行列だけでなく、分離信号を用いるようにしているので、各時刻における混合行列の推定精度をより高く行うことが可能となる。
実施の形態4.
以下、実施の形態4を説明する。実施の形態4においては、NG個のフレームにより構成されるグループをグループフレームとし、i番目のグループフレームを構成する一部のフレームが、その次のi+1番目のグループフレームと重複(オーバーラップ)するようにこれらのフレームを構成し、複数のグループフレーム間で重複しているフレームに対してバッチ型ICA処理を行うことにより、各フレームにおける混合行列の推定精度向上と、バッチ型ICA処理における組み合わせ問題の解決を図る。図20は、実施4の形態の手法と対比するための具体例であって、バッチ型ICA処理のためにグループフレームをオーバーラップさせないフレーム構成を示す図である。一方、図21は、実施4の形態の具体例であって、バッチ型ICA処理のためにグループフレームをオーバーラップさせるフレーム構成を示す図である。なお、図21には、具体例として、各フレームを構成する#1〜#4の4つの受信データの内、受信データ#2,#3をオーバーラップさせた、3つずつの受信データからなる2つのグループフレーム(グループフレームA,B)を示している。受信データ#2,#3がオーバーラップしているので、オーバーラップするフレーム数を表すNoverは、Nover=2である。
図20に示すように、オーバーラップさせずにグループフレームに含まれるフレームをバッチ型ICA処理する場合には、直前のフレームで推定した推定混合行列H^init,outを初期値Hinitとすることにより、混合行列の推定値の要素を計算する時間を短縮することができる。しかしながら、上述した方法を採ったとしても、実施の形態1において述べたように、バッチ型ICA処理の組み合わせ問題が生じてしまうことがある。
次に、図21に示す場合の処理の流れを説明する。なお、ここでは、グループフレームAを“GF_A”、グループフレームBを“GF_B”で表す。
(フロー1):GF_Aの#1に対してバッチ処理型ICAを行い、推定混合行列H^1 init,outを求める。
(フロー2):GF_Aの#2に対してバッチ処理型ICAを行い、推定混合行列H^2 init,outを求める。このとき、バッチ処理型ICAの初期値は、H^1 init,outを用いる。
(フロー3):GF_Aの#3に対してバッチ処理型ICAを行い、推定混合行列H^3 init,outを求める。このとき、バッチ処理型ICAの初期値は、H^2 init,outを用いる。
(フロー4):オーバーラップ数Nover個(図21の例では、Nover=2)だけフレームをずらしたGF_B(図21の例では、#2〜#4)を形成する。
(フロー5):GF_Bの#2に対してバッチ処理型ICAを行い、推定混合行列H^2(2) init,outを求める。このとき、バッチ処理型ICAの初期値は、H^3 init,outを用いる。
(フロー6):GF_Bの#3に対してバッチ処理型ICAを行い、推定混合行列H^3(2) init,outを求める。このとき、バッチ処理型ICAの初期値は、H^2(2) init,outを用いる。
(フロー7):GF_Bの#4に対してバッチ処理型ICAを行い、推定混合行列H^4(2) init,out(=H^4init,out)を求める。このとき、バッチ処理型ICAの初期値は、H^3(2) init,outを用いる。
図21に示したように、グループフレームA,B間で一部のフレームがオーバーラップしているので、バッチ型ICA処理により得られる推定混合行列の値は、直前のグループフレームで得られた推定混合行列の値と近くなり、バッチ型ICA処理における推定精度が向上し、時間追尾処理に要する計算の収束性も向上する。また、図21に示したようにグループフレームA,B間で一部のフレームをオーバーラップさせることにより、組み合わせ問題の発生を探知することができ、また、組み合わせ問題を解決することもできる。
次に、上述したフレームオーバーラップの概念を実現するための具体的な構成について説明する。
図22は、第4の信号分離部の構成を示す図である。図22に示すように、第4の信号分離部である信号分離部26は、図3に示した実施の形態1にかかる信号分離部20に置換して用いられる。信号分離部26は、図3に示した信号分離部20におけるICA処理部204の直前にオーバーラップ処理部260を加えた構成を採る。
図3に示す信号分離部20では、ICA処理部204に渡すフレームはフレーム処理部202が行い、ICA処理部204に渡す初期値は初期値設定部200が行っていた。一方、図22に示す信号分離部26では、これらの処理はオーバーラップ処理部260が行う。オーバーラップ処理部260は、ICA処理部204に渡すフレームが、どのグループフレームにおける何番目の受信データであるのかを確認し、ICA処理部204に渡すフレームに対応する初期値を選択する。オーバーラップ処理部260が選択したフレームおよび初期値は、ICA処理部204に伝送され、ICA処理部204は、上述した実施の形態1にかかる処理を実行する。なお、図22では、オーバーラップ処理部260が処理データを内部に保持する実施形態であるが、バッファメモリ206に記憶されているデータを読み出すようにしてもよい。
次に、オーバーラップ処理を用いて組み合わせ問題を探知し、併せて補整処理する手法について、図22〜図24の図面を参照して説明する。
図23は、オーバーラップされたグループフレームにおける混合行列推定値の定義を示す図である。図23では、図21に示したグループフレームA,Bの例を、フレーム番号Kおよびフレーム時刻mを用いて一般化する表記で示している。
図24は、グループフレームがオーバーラップしたフレームにおいて、組み合わせ問題が発生した場合を例示する図であり、縦軸はグループフレームA,Bにおける推定混合行列H^(m)の要素h^k a,bの値を示し、横軸はフレーム番号kを示している。ここで、図中の黒丸は、グループフレームAにおけるフレーム間の推定誤差を表しており、ΔA m=h^m,A a,b−h^m−1,A a,bと定義される。グループフレームBにおけるフレーム間推定誤差も同様に定義され、ΔB m=h^m,B a,b−h^m−1,B a,bである。図24に示す例では、フレームmにおいて、グループフレームAの推定混合行列における推定要素h^k a,b(=h^k,A a,b)とグループフレームBの推定混合行列における推定要素h^k a,b(=h^k,B a,b)との間に差が生じていて、組み合わせ問題が発生していることが示されている)。
図22の構成において、時間追尾処理部208は、時間追尾処理を行った結果を問題検出部266に通知する。問題検出部266では、フレームmにおいて、バッチ型ICA処理による組み合わせ問題が発生した可能性が高いことが検出される。バッチ型ICA処理の組み合わせ問題が発生したフレームが発見された場合には、補整部214によって組み合わせ問題を解決するための補整処理が行われる。
なお、図24の例では、グループフレームAの推定混合行列における推定値とグループフレームBの推定混合行列における推定値との差分値に基づいて組み合わせ問題の発生を検出したが、この手法に限定されるものではない。各グループフレームにおける推定値の変化量に基づいて組み合わせ問題の発生を検出してもよい。また、同一グループフレーム内において、あるフレーム間の要素の変化が他のフレーム間の要素の変化の傾向に一致するか否かを判定することによって、組み合わせ問題の発生を検出してもよい。
図25は、図21などに示した2つのグループフレームが、フレーム単位でなく幾つかのシンボルを集めたシンボル群単位でオーバーラップする場合を例示する図であり、フレーム同士がNsoverシンボル分オーバーラップする場合を示している。図23と図25とを対比すれば理解できるように、処理の単位をフレーム単位ではなく、シンボル群単位とすれば、フレーム単位で処理を行う図22に示すオーバーラップ処理部260の機能を、シンボル群単位で処理を行う構成部に変更することが可能である。
次に、実施の形態4を実現するための具体的な処理フローを説明する。図26および図27は図22に示した信号分離部26の処理S26を示す第1および第2のフローチャートである。図26,図27に示すように、S26の処理においては、図5に示したS14の処理におけるS154からS168の処理に代えて、S300からS322の処理を付加している。
以下、処理S26を説明する。まず、信号分離部26が行うS140からS152の処理は、実施の形態1において信号分離部20が行うS140からS152の処理と同一なので、説明を省略する。S152の処理が終わるとS300に移行する。S300では、グループフレームを構成するフレーム数を示すフレーム数NGが定義される。S302では、グループフレーム間でオーバーラップさせるフレーム数を示すオーバーラップフレーム数Noverが定義される。S304では、処理対象のグループフレームにおける先頭のフレーム番号である処理先頭フレーム番号NHeadが1に設定される(NHead←1)。図27に進み、S306では、処理フレーム番号Aに、処理先頭フレーム番号NHeadが設定される(A←NHead)。
S308において、ICA処理部204は、入力されたフレームおよび初期値に基づいて、上述したバッチ型ICA処理を行う。S310において、S308の処理の結果得られた推定混合行列H^(A)は時間追尾処理部264に対して出力され、また、バッファメモリ206に記憶される。S312では、A=NHead+NG−1であるか否かが判定される。A=NHead+NG−1であると判定された場合には、S318の処理に進む。図21において、受信データ#1から受信データ#2に進む場合、受信データ#2から受信データ#3に進む場合が、これに該当する。一方、A=NHead+NG−1ではないと判定された場合には、S314の処理に進む。図21において、グループフレームAにおける受信データ#3からグループフレームBにおける受信データ#2に進む場合が、これに該当する。
S314において、オーバーラップ処理部260は、図21を参照して説明した処理フローに従って初期値を逐次更新して行く(初期値Hinit←H^(A))。S316において、オーバーラップ処理部260は、処理フレーム番号Aの値に1を加算して、S308の処理に戻り、以後、S308、S310およびS312の処理を繰り返す。
上述の通り、S312において、A=NHead+NG−1であると判定された場合には、S318の処理に進む。S318では、Nmax=NHead+NG−1であるか否かがされる。ここで、Nmax=NHead+NG−1ではないと判定された場合にはS320の処理に進む。図21において、例えば処理を終えたフレームがグループフレームAにおける受信データ#3の場合が、これに該当する。一方、Nmax=NHead+NG−1であると判定された場合には、S168の処理に進む。図21において、例えば処理を終えたフレームがグループフレームBにおける受信データ#4の場合が、これに該当する。
S320において、オーバーラップ処理部260は、時刻kにおいて求められた推定補整混合行列H^'(k)を、次の処理の初期値とする(Hinit←H^'(k))。S322において、オーバーラップ処理部260は、NHeadの値をNHead+(NG−Hover)の値で更新する。図21において、グループフレームAにおける処理先頭フレーム番号NHead=1(受信データ#1)から、グループフレームBにおける処理先頭フレーム番号NHead=2(受信データ#2)に移行する場合が、この処理に該当する。以後、S306からS318の処理が行われ、S318において、Nmax=NHead+NG−1であると判定された場合、すなわちNmaxまでのフレームに関する処理を終えた場合には、S168の処理に進む。なお、S168からS178の処理は、実施の形態1の信号分離部20が行うS168からS178の処理と同一なので、ここでの説明は省略する。
上述した処理を行う信号分離部26によれば、実施の形態1の効果を奏することに加え、組み合わせ問題にも的確に対応することが可能となる。
図28は、実施の形態4にかかる第5の信号分離部の構成を示す図であり、第4の信号分離部である信号分離部26とは異なる構成を示すものである。図28に示すように、第5の信号分離部である信号分離部28は、図3に示した信号分離部20に置換されて用いられる。信号分離部28は、図3に示した信号分離部20における初期値設定部200を図13に示した初期値設定部268で置換し、同じく図13に示した初期値選定部220を追加した構成を採る。つまり、信号分離部28には、信号分離部26の処理に、図13に示した信号分離部22と同様なフィードバック処理が加えられている。
以下、図28に示した信号分離部28の処理を説明する。図29および図30は、図28に示した信号分離部28の処理S28を示す第1および第2のフローチャートである。図29,図30に示すように、S28の処理においては、図26に示したS26のS152とS300との間に、図14に示したS200の処理が追加され、図27に示したS168とS170との間に、S324,S326およびS328の処理を付加している。
以下、信号分離部28の処理S28を説明する。まず、信号分離部28が行うS140からS152の処理は、実施の形態1において信号分離部20が行うS140からS152の処理と同一なので、説明を省略する。S152の処理が終わるとS200に移行する。S200では、ICA処理部204によって、繰り返しカウンタ変数Cを初期化する処理(C←1)と、繰り返し回数Cmaxを設定する処理とが行われる。S200の処理が終わるとS300に移行するが、信号分離部28が行うS300からS322の処理は、信号分離部20が行う、図26および図27に示されるS300から322の処理と同一なので、説明を省略する。
図30のS318において、Nmax=NHead+NG−1であると判定された場合にはS168の処理に進み、上述したS168の処理を実行してS324の処理に移行する。S324において、繰り返しカウンタ変数Cの値が繰り返し回数Cmaxと等しいか否かが判定される。信号分離部28は、繰り返しカウンタ変数Cの値が繰り返し回数Cmaxと等しい場合にはS170の処理に進み、これ以外の場合にはS326の処理に進む。S326において、ICA処理部204は、繰り返しカウンタ変数Cをインクリメントする。S328において、時間追尾処理部264が求めた推定補整混合行列H^'(k)が初期混合行列の初期値Hinitとして置換されてからS304の処理に戻る。以後、S304の処理が実行されるが、その後の動作は上述の通りであり、説明を省略する。
上述した処理を行う信号分離部28によれば、実施の形態2の効果を奏することに加え、組み合わせ問題にも的確に対応することが可能となる。
図31は、実施の形態4にかかる第6の信号分離部の構成を示す図であり、第4の信号分離部である信号分離部26および第5の信号分離部である信号分離部28とは異なる構成を示すものである。図31に示すように、第6の信号分離部である信号分離部30は、図22に示した信号分離部26に置換されて用いられる。信号分離部30は、図22に示した信号分離部26の構成において、図15のときと同様に第2の分離部であるデータ分離部240を追加した構成である。つまり、信号分離部30には、データ分離部240による推定混合行列H^(k)を用いたデータ分離処理と、時間追尾処理部242による推定混合行列H^(k)、データ分離部240から入力される推定分離データd^(0),d^(1),d^(2)・・・、および、受信データr(0),r(1),r(2)・・・を用いた時間追尾処理とが加えられている。
以下、図31に示した信号分離部30の処理を説明する。図32および図33は、図31に示した信号分離部30の処理S30を示す第1および第2のフローチャートである。図32,図33に示すように、S30の処理では、時間追尾処理であるS168の処理の位置が、図30に示したS28の処理と異なる。具体的に説明すると、図30では、S318とS324との間でS168の処理を行っていたが、図33に示すS30では、S308とS312との間で処理するフローになっている。加えて、信号分離部30によるS30の処理は、第2の分離部であるデータ分離部240を備える構成であるため、S284の処理の直前にデータ分離を行うS330の処理が加わっている。
以下、信号分離部30の処理S30を説明する。まず、信号分離部30が行うS140からS308の処理は、信号分離部28が行うS140からS308の処理と同一なので、説明を省略する。S308の処理が終わるとS330に移行する。S330において、データ分離部240によって推定分離データd^(k)が生成される。S284では、S330で生成された推定分離データd^(k)を用いて、上述した時間追尾処理が実行される。S284の処理が終わるとS312に移行するが、信号分離部30が行うS312以降の処理は、信号分離部28が行う、図30に示されるS312以降の処理と同一なので、説明を省略する。
上述した処理を行う信号分離部30によれば、実施の形態3の効果を奏することに加え、組み合わせ問題にも的確に対応することが可能となる。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略又は変更することも可能である。