(57)【要約】      （修正有）【課題】通信路の伝搬状況が時間変動する場合にも環境雑音や他のユーザからの干渉を抑制する適応的な線形フィルタを算出する信号処理装置等を提供する。【解決手段】信号処理装置において、Nチップのシグネチャを正逆に反転させて1ビットを伝送する送信局の信号を得るための適応線形フィルタを得るため、所望局のシグネチャs[1]および振幅初期値A[1]と、干渉局のシグネチャ推定値s[2],…,s[J]および振幅推定値A[2],…,A[J]と、から、２次計量行列Qを求めて、線形フィルタh[1]を求める。計量行列Qは、s[・]，A[・]から求められる線形フィルタ推定値h*と、現在の線形フィルタの値h[1]と、の差に直交行列Uを乗じて微少量δを加算したものを対角成分とする行列であり、必要に応じて更新される。【選択図】図２
2009027548.tif 000002
【特許請求の範囲】
【請求項１】
±1により表現される１ビットの情報を、要素±1/N1/2のNチップからなるシグネチャを正逆に反転させて送信するJ個の送信局から送信された信号を、分散σ2の雑音環境下で受信した受信値を処理する信号処理装置であって、
当該J個の送信局のそれぞれの振幅の推定値A[1]，A[2]，…，A[J]と、当該J個の送信局のうち、所望の送信局のシグネチャを表すN次元縦ベクトルs[1]と、当該所望の送信局以外の送信局のシグネチャの推定値を表すN次元縦ベクトルs[2]，…，s[J]と、J個の送信局のうち、当該所望の送信局に対する線形フィルタの推定値ベクトルh[1]と、が記憶される記憶部、
所望の送信局から送信されたi番目のビットのそれぞれのチップに対応する時刻に観測されるN個の受信値からなるN次元縦ベクトルr[i]を取得する受信部、
N次元縦ベクトルA[1]s[1]，A[2]s[2]，…，A[J]s[J]を順に列として並べたN行J列の行列
V = 〔A[1]s[1]，A[2]s[2]，…，A[J]s[J]〕
を計算するV計算部、
N行N列の単位行列I、および、行列の転置(・)†により、最適線形フィルタの推定値ベクトル
h* = s[1] - V(σ2I + V†V)-1V†s[1]
を計算するh*計算部、
行列Vを正規直交化して得られる互いに線形独立なK (1≦K≦J)個の単位ベクトルを1列目からK列目までの列とするN行N列の直交行列Uを計算するU計算部、
ベクトルU†(h* - h[1])の各要素に正定数δを加算したものを対角成分とする対角行列
Λ = diag(U†(h* - h[1])) + δI
を計算するΛ計算部、
N行N列の計量行列
Q = UΛ-1U†
を計算するQ計算部、
射影行列
P = I - (s[1]†Q-1s[1])-1Q-1s[1]s[1]†；
を計算するP計算部、
N行N列の行列
Π = PQ-1
を計算するΠ計算部、
前記記憶部に記憶されるA[1]を0に、h[1]をs[1]に、それぞれ初期化してから、前記受信部により、N個の受信値が観測されるごとに、現在までに取得された縦ベクトルr[1]，r[2]，…，r[n]の一部または全部を参照して、処理を繰り返す制御を行う繰り返し制御部、
現在の取得済個数nから、所定のq[n] (1≦q[n]≦n)個の所定の1以上n以下の整数ι[1,n]<ι[2,n]< … <ι[q[n],n]からなる所定の集合
I[n] = ｛ι[1,n]，ι[2,n]，…，ι[q[n],n]｝⊂｛1，2，…，n｝
からなる制御数列を取得する制御数列取得部、
現在の取得済個数nと、整数ι∈I[n]と、のそれぞれに対する所定の正の重みw[ι,n]であって、
Σι∈I[n] w[ι,n] = 1
を満たす重みを取得する重み取得部、
現在の取得済個数nから、0以上2以下の所定の更新ステップ幅λ[n]を取得するステップ幅取得部、
0以上1未満の忘却係数γにより、前記記憶部に記憶される振幅A[1]を、
A[1] + γ(|h[1]†r[n]| - A[1])
に更新する振幅更新部、
関数
sgn(x) = 1，   (x≧0)；
sgn(x) = -1，   (x<0)
により、当該所望の送信局から送信されたι∈I[n]番目のビットの情報の推定値
b[1,ι] = sgn(h[1]†r[ι])
を計算するビット情報推定部、
整数ι∈I[n]のそれぞれに対するパラメータ
τ[ι] = h[1]†r[ι] - A[1]b[1,ι]
を計算するτ計算部、
整数ι∈I[n]のそれぞれに対するパラメータ
η[ι] = r[ι]†Πr[ι]
を計算するη計算部、
現在の取得済個数nに対応付けられる所定の正定数ρ[n]により、整数ι∈I[n]のそれぞれに対するベクトルパラメータ
p[ι] = h[1] - (τ[ι] - ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]>ρ[n]1/2)；
p[ι] = h[1] - (τ[ι] + ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]<-ρ[n]1/2)；
p[ι] = h[1]，   (上記以外)
を計算するvp計算部、
ベクトルa，bに対して行列Qに誘導される内積
〈a,b〉Q = a†Qb
およびノルム
‖a‖Q = 〈a,a〉Q1/2
により、パラメータ
α = Σι∈I[n] w[ι,n]‖p[ι] - h[1]‖Q2
を計算するα計算部、
パラメータ
β = ‖Σι∈I[n] w[ι,n]p[ι] - h[1]‖Q2
を計算するβ計算部、
パラメータ
M = α/β   (β≠0)；
M = 1   (β=0)
を計算するM計算部、
前記記憶部に記憶される線形フィルタの推定値ベクトルh[1]を、
h[1] + λ[n]M(Σι∈I[n] w[ι,n]p[ι] - h[1])
に更新するフィルタ更新部、
当該h[1]が更新されると、
b[1,n] = sgn(h[1]†r[n])
を当該所望の送信局からn番目に送信されたビットの情報として出力する出力部
を備え、
前記繰り返し制御部により繰り返される処理は、前記制御数列取得部から前記出力部までによる処理である
ことを特徴とする信号処理装置。
【請求項２】
請求項１に記載の信号処理装置であって、
前記出力部は、当該b[1,n]を出力するのにかえて、もしくは、当該b[1,n]を出力するのに加えて、
前記記憶部に記憶されるA[1]を、当該所望の送信局からn番目のビットが送信された時点の振幅として出力し、および／または、前記記憶部に記憶されるh[1]を、当該所望の送信局からn番目のビットが送信された時点の線形フィルタとして出力する
ことを特徴とする信号処理装置。
【請求項３】
請求項１または２に記載の信号処理装置であって、
所望の送信局が1番目の送信局からj番目の送信局に替わると、前記記憶部に記憶されるA[1]とA[j]、s[1]とs[j]、h[1]とh[j]を交換する相手先交換部
をさらに備えることを特徴とする信号処理装置。
【請求項４】
請求項１から３のいずれか１項に記載の信号処理装置であって、所定の正の整定数Cと、２つの数x,yのいずれか小さい方を返す関数min(x,y)により、
q[n] = min(n,C)；
I[n] = ｛n-q[n]+1，n-q[n]+2，…，n-1，n｝；
w[ι,n] = 1/q[n]
と定め、
ρ[n] = 0,
ρ[n] = σ2，もしくは，
ρ[n] = (1+21/2)σ2
と定める
ことを特徴とする信号処理装置。
【請求項５】
±1により表現される１ビットの情報を、要素±1/N1/2のNチップからなるシグネチャを正逆に反転させて送信するJ個の送信局から送信された信号を、分散σ2の雑音環境下で受信した受信値を処理する信号処理装置にて実行される信号処理方法であって、当該信号処理装置は、記憶部、受信部、V計算部、h*計算部、U計算部、Λ計算部、Q計算部、P計算部、Π計算部、繰り返し制御部、制御数列取得部、重み取得部、ステップ幅取得部、振幅更新部、ビット情報推定部、τ計算部、η計算部、vp計算部、α計算部、β計算部、M計算部、フィルタ更新部、出力部を有し、前記記憶部には、当該J個の送信局のそれぞれの振幅の推定値A[1]，A[2]，…，A[J]と、当該J個の送信局のうち、所望の送信局のシグネチャを表すN次元縦ベクトルs[1]と、当該所望の送信局以外の送信局のシグネチャの推定値を表すN次元縦ベクトルs[2]，…，s[J]と、J個の送信局のうち、当該所望の送信局に対する線形フィルタの推定値ベクトルh[1]と、が記憶され、
前記受信部が、所望の送信局から送信されたi番目のビットのそれぞれのチップに対応する時刻に観測されるN個の受信値からなるN次元縦ベクトルr[i]を取得する受信工程、
前記V計算部が、N次元縦ベクトルA[1]s[1]，A[2]s[2]，…，A[J]s[J]を順に列として並べたＶN行J列の行列
V = 〔A[1]s[1]，A[2]s[2]，…，A[J]s[J]〕
を計算するV計算工程、
前記h*計算部が、N行N列の単位行列I、および、行列の転置(・)†により、最適線形フィルタの推定値ベクトル
h* = s[1] - V(σ2I + V†V)-1V†s[1]
を計算するh*計算工程、
前記U計算部が、行列Vを正規直交化して得られる互いに線形独立なK (1≦K≦J)個の単位ベクトルを1列目からK列目までの列とするN行N列の直交行列Uを計算するU計算工程、
前記Λ計算部が、ベクトルU†(h* - h[1])の各要素に正定数δを加算したものを対角成分とする対角行列
Λ = diag(U†(h* - h[1])) + δI
を計算するΛ計算工程、
前記Q計算部が、N行N列の計量行列
Q = UΛ-1U†
を計算するQ計算工程、
前記P計算部が、射影行列
P = I - (s[1]†Q-1s[1])-1Q-1s[1]s[1]†；
を計算するP計算工程、
前記Π計算部が、N行N列の行列
Π = PQ-1
を計算するΠ計算部工程、
前記繰り返し制御部が、前記記憶部に記憶されるA[1]を0に、h[1]をs[1]に、それぞれ初期化してから、前記受信部により、N個の受信値が観測されるごとに、現在までに取得された縦ベクトルr[1]，r[2]，…，r[n]の一部または全部を参照して、処理を繰り返す制御を行う繰り返し制御工程、
前記制御数列取得部が、現在の取得済個数nから、所定のq[n] (1≦q[n]≦n)個の所定の1以上n以下の整数ι[1,n]<ι[2,n]< … <ι[q[n],n]からなる所定の集合
I[n] = ｛ι[1,n]，ι[2,n]，…，ι[q[n],n]｝⊂｛1，2，…，n｝
からなる制御数列を取得する制御数列取得工程、
前記重み取得部が、現在の取得済個数nと、整数ι∈I[n]と、のそれぞれに対する所定の正の重みw[ι,n]であって、
Σι∈I[n] w[ι,n] = 1
を満たす重みを取得する重み取得工程、
前記ステップ幅取得部が、現在の取得済個数nから、0以上2以下の所定の更新ステップ幅λ[n]を取得するステップ幅取得工程、
前記振幅更新部が、0以上1未満の忘却係数γにより、前記記憶部に記憶される振幅A[1]を、
A[1] + γ(|h[1]†r[n]| - A[1])
に更新する振幅更新工程、
前記ビット情報推定部が、関数
sgn(x) = 1，   (x≧0)；
sgn(x) = -1，   (x<0)
により、当該所望の送信局から送信されたι∈I[n]番目のビットの情報の推定値
b[1,ι] = sgn(h[1]†r[ι])
を計算するビット情報推定工程、
前記τ計算部が、整数ι∈I[n]のそれぞれに対するパラメータ
τ[ι] = h[1]†r[ι] - A[1]b[1,ι]
を計算するτ計算工程、
前記η計算部が、整数ι∈I[n]のそれぞれに対するパラメータ
η[ι] = r[ι]†Πr[ι]
を計算するη計算工程、
前記vp計算部が、現在の取得済個数nに対応付けられる所定の正定数ρ[n]により、整数ι∈I[n]のそれぞれに対するベクトルパラメータ
p[ι] = h[1] - (τ[ι] - ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]>ρ[n]1/2)；
p[ι] = h[1] - (τ[ι] + ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]<-ρ[n]1/2)；
p[ι] = h[1]，   (上記以外)
を計算するvp計算工程、
前記α計算部が、ベクトルa，bに対して行列Qに誘導される内積
〈a,b〉Q = a†Qb
およびノルム
‖a‖Q = 〈a,a〉Q1/2
により、パラメータ
α = Σι∈I[n] w[ι,n]‖p[ι] - h[1]‖Q2
を計算するα計算工程、
前記β計算部が、パラメータ
β = ‖Σι∈I[n] w[ι,n]p[ι] - h[1]‖Q2
を計算するβ計算工程、
前記M計算部が、パラメータ
M = α/β   (β≠0)；
M = 1   (β=0)
を計算するM計算工程、
前記フィルタ更新部が、前記記憶部に記憶される線形フィルタの推定値ベクトルh[1]を、
h[1] + λ[n]M(Σι∈I[n] w[ι,n]p[ι] - h[1])
に更新するフィルタ更新工程、
当該h[1]が更新されると、前記出力部が、
b[1,n] = sgn(h[1]†r[n])
を当該所望の送信局からn番目に送信されたビットの情報として出力する出力工程
を備え、
前記繰り返し制御工程にて繰り返される処理は、前記制御数列取得工程から前記出力工程までによる処理である
ことを特徴とする信号処理方法。
【請求項６】
請求項５に記載の信号処理方法であって、
前記出力工程では、当該b[1,n]を出力するのにかえて、もしくは、当該b[1,n]を出力するのに加えて、
前記記憶部に記憶されるA[1]を、当該所望の送信局からn番目のビットが送信された時点の振幅として出力し、および／または、前記記憶部に記憶されるh[1]を、当該所望の送信局からn番目のビットが送信された時点の線形フィルタとして出力する
ことを特徴とする信号処理方法。
【請求項７】
請求項５または６に記載の信号処理方法であって、前記信号処理装置は、相手先交換部をさらに有し、
所望の送信局が1番目の送信局からj番目の送信局に替わると、前記相手先交換部が、前記記憶部に記憶されるA[1]とA[j]、s[1]とs[j]、h[1]とh[j]を交換する相手先交換工程
をさらに備えることを特徴とする信号処理方法。
【請求項８】
請求項５から７のいずれか１項に記載の信号処理方法であって、所定の正の整定数Cと、２つの数x,yのいずれか小さい方を返す関数min(x,y)により、
q[n] = min(n,C)；
I[n] = ｛n-q[n]+1，n-q[n]+2，…，n-1，n｝；
w[ι,n] = 1/q[n]；
と定め、
ρ[n] = 0,
ρ[n] = σ2，もしくは，
ρ[n] = (1+21/2)σ2
と定める
ことを特徴とする信号処理方法。
【請求項９】
コンピュータを、請求項１から４のいずれか１項に記載の信号処理装置の各部として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信路の伝搬状況が時間変動する場合にも環境雑音や他のユーザからの干渉を抑制する適応的な線形フィルタを算出するのに好適な信号処理装置、信号処理方法、ならびに、これをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、ＣＤＭＡ（Code Division Multiple Access）無線通信方式が広く利用されている。直接符号拡散を利用する場合には、送信局を区別するための拡散符号をその送信局のシグネチャとして用いる。送信局から１ビットを送信する場合、当該１ビットは、−１と＋１のいずれかにより表現し、これに対して、長さNのシグネチャ（各要素が−1/N1/2もしくは1/N1/2のN次元ベクトル）を乗じることで、拡散符号の位相を正逆に反転させて、情報を伝送するのが典型的であり、また、このように仮定しても、一般性を失わない。以下、理解を容易にするため、上記の前提にて説明する。
【０００３】
１ビットの情報を伝送するのに要する時間をN分割したものをチップと呼ぶ。ビット値にシグネチャを乗じたN次元ベクトルは、Nチップ時間で送信され、1，2，…，N番目のチップでは、当該N次元ベクトルの1，2，…，N番目の要素の値が送信される。
【０００４】
受信側では、チップ時間間隔でアンテナで観測される受信値を取得し、ウィンドウスライド法等によりシグネチャとの相関が最大となる場所を探すことで同期をとると、当該送信局と１ビット（Nチップ）単位の同期をとることが可能である。このとき、同じ通信システムによる複数の送信局がある場合には、各送信局の処理は、１ビット単位（Nチップ単位）では非同期であるが、１チップ単位では同期することとなる。
【０００５】
そして、ある送信局が送信したi番目のビットに対して受信されたNチップの受信観測値からなるN次元縦ベクトルr[i]から、関数
sgn(x) = 1,   (x≧0)；
sgn(x) = -1,   (x<0)
と、行列やベクトルの転置演算(・)†を用いて、伝送されたビット情報の推定値b[i]を、
b[i] = sgn(h†r[i])
のように推定する。このN次元縦ベクトルhを「線形フィルタ」と呼ぶ。
【０００６】
本願発明者らは、線形フィルタのうち、平均自乗誤差を最小にする最適線形フィルタについて研究を進め、その成果を以下の文献に開示している。
【特許文献１】特開２００２−３３００６０号公報
【非特許文献１】M.Yukawa，R.L.G.Cavalcante and I.Yamada, Efficient blind MAI suppression in DS/CDMA systems by embedded constraint parallel projection techniques, IEICE Transactions on Fundamentals，vol.E88-A，no.8，pp.2062-2071, ２００５年８月
【非特許文献２】M.Yukawa and I.Yamada, Pairwise optimal weight realization ― Acceleration technique for set-theoretic adaptive parallel subgradient projection algorithm, IEEE Transactions on Signal Processing, vol.54，no.12，pp.4557-4571, ２００６年１２月
【非特許文献３】M.Yukawa，K.Slavakis and I.Yamada, Adaptive parallel quadratic-metric projection algorithms, IEEE Transaction on Audio，Speech and Language Processing, vol.15，no.5，pp.1665-1680, ２００７年７月
【０００７】
ここで、[特許文献１][非特許文献１]では、最適線形フィルタを求める基本技術が開示されている。
【０００８】
[非特許文献２]では、[特許文献１]に開示される技術に対して、戦略的に重みを決定して最適線形フィルタの係数の収束を高速化する技術が開示されている。
【０００９】
[非特許文献３]では、[特許文献１]に開示される技術に対して、エコーキャンセラに対して適当な２次計量を用いることで、最適線形フィルタの算出に必要な繰り返し回数を低減する技術が開示されている。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＣＤＭＡ通信において、収束速度を改善する適切な２次計量を利用して、高速な計算を行って線形フィルタを求めたい、との要望は大きい。
【００１１】
また、通信路の伝搬状況が時刻によって変化する場合には、この線形フィルタを時刻に応じて適応的に変化させて、適切に受信ができるようにしたい、との要望もある。
【００１２】
さらに、訓練信号を用いずに、現在までに受信された信号（現在までに観測された受信値）によって線形フィルタを求めるブラインド方式で算出したいとの要望も強い。
【００１３】
本発明は、以上のような課題を解決するためのもので、通信路の伝搬状況が時間変動する場合にも環境雑音や他のユーザからの干渉を抑制する適応的な線形フィルタを算出するのに好適な信号処理装置、信号処理方法、ならびに、これをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明の第１の観点に係る信号処理装置は、±1により表現される１ビットの情報を、要素±1/N1/2のNチップからなるシグネチャを正逆に反転させて送信するJ個の送信局から送信された信号を、分散σ2の雑音環境下で受信した受信値を処理する信号処理装置であって、記憶部、受信部、V計算部、h*計算部、U計算部、Λ計算部、Q計算部、P計算部、Π計算部、繰り返し制御部、制御数列取得部、重み取得部、ステップ幅取得部、振幅更新部、ビット情報推定部、τ計算部、η計算部、vp計算部、α計算部、β計算部、M計算部、フィルタ更新部、出力部を備え、以下のように構成する。
【００１５】
すなわち、記憶部には、当該J個の送信局のそれぞれの振幅の推定値A[1]，A[2]，…，A[J]と、当該J個の送信局のうち、所望の送信局のシグネチャを表すN次元縦ベクトルs[1]と、当該所望の送信局以外の送信局のシグネチャの推定値を表すN次元縦ベクトルs[2]，…，s[J]と、J個の送信局のうち、当該所望の送信局に対する線形フィルタの推定値ベクトルh[1]と、が記憶される。
【００１６】
一方、受信部は、所望の送信局から送信されたi番目のビットのそれぞれのチップに対応する時刻に観測されるN個の受信値からなるN次元縦ベクトルr[i]を取得する。
【００１７】
さらに、V計算部は、N次元縦ベクトルA[1]s[1]，A[2]s[2]，…，A[J]s[J]を順に列として並べたＶN行J列の行列
V = 〔A[1]s[1]，A[2]s[2]，…，A[J]s[J]〕
を計算する。
【００１８】
そして、h*計算部は、N行N列の単位行列I、および、行列の転置(・)†により、最適線形フィルタの推定値ベクトル
h* = s[1] - V(σ2I + V†V)-1V†s[1]
を計算する。
【００１９】
一方、U計算部は、行列Vを正規直交化して得られる互いに線形独立なK (1≦K≦J)個の単位ベクトルを1列目からK列目までの列とするN行N列の直交行列Uを計算する。
【００２０】
さらに、Λ計算部は、ベクトルU†(h* - h[1])の各要素に正定数δを加算したものを対角成分とする対角行列
Λ = diag(U†(h* - h[1])) + δI
を計算する。
【００２１】
そして、Q計算部は、N行N列の計量行列
Q = UΛ-1U†
を計算する。
【００２２】
一方、P計算部は、射影行列
P = I - (s[1]†Q-1s[1])-1Q-1s[1]s[1]†；
を計算する。
【００２３】
さらに、Π計算部は、N行N列の行列
Π = PQ-1
を計算する。
【００２４】
そして、繰り返し制御部は、記憶部に記憶されるA[1]を0に、h[1]をs[1]に、それぞれ初期化してから、受信部により、N個の受信値が観測されるごとに、現在までに取得された縦ベクトルr[1]，r[2]，…，r[n]の一部または全部を参照して、処理を繰り返す制御を行う。
【００２５】
一方、制御数列取得部は、現在の取得済個数nから、所定のq[n] (1≦q[n]≦n)個の所定の1以上n以下の整数ι[1,n]<ι[2,n]< … <ι[q[n],n]からなる所定の集合
I[n] = ｛ι[1,n]，ι[2,n]，…，ι[q[n],n]｝⊂｛1，2，…，n｝
からなる制御数列を取得する。
【００２６】
さらに、重み取得部は、現在の取得済個数nと、整数ι∈I[n]と、のそれぞれに対する所定の正の重みw[ι,n]であって、
Σι∈I[n] w[ι,n] = 1
を満たす重みを取得する。
【００２７】
一方、ステップ幅取得部は、現在の取得済個数nから、0以上2以下の所定の更新ステップ幅λ[n]を取得する。
【００２８】
さらに、振幅更新部は、0以上1未満の忘却係数γにより、記憶部に記憶される振幅A[1]を、
A[1] + γ(|h[1]†r[n]| - A[1])
に更新する。
【００２９】
そして、ビット情報推定部は、関数
sgn(x) = 1，   (x≧0)；
sgn(x) = -1，   (x<0)
により、当該所望の送信局から送信されたι∈I[n]番目のビットの情報の推定値
b[1,ι] = sgn(h[1]†r[ι])
を計算する。
【００３０】
一方、τ計算部は、整数ι∈I[n]のそれぞれに対するパラメータ
τ[ι] = h[1]†r[ι] - A[1]b[1,ι]
を計算する。
【００３１】
さらに、η計算部は、整数ι∈I[n]のそれぞれに対するパラメータ
η[ι] = r[ι]†Πr[ι]
を計算する。
【００３２】
そして、vp計算部は、現在の取得済個数nに対応付けられる所定の正定数ρ[n]により、整数ι∈I[n]のそれぞれに対するベクトルパラメータ
p[ι] = h[1] - (τ[ι] - ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]>ρ[n]1/2)；
p[ι] = h[1] - (τ[ι] + ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]<-ρ[n]1/2)；
p[ι] = h[1]，   (上記以外)
を計算する。
【００３３】
一方、α計算部は、ベクトルa，bに対して行列Qに誘導される内積
〈a,b〉Q = a†Qb
およびノルム
‖a‖Q = 〈a,a〉Q1/2
により、パラメータ
α = Σι∈I[n] w[ι,n]‖p[ι] - h[1]‖Q2
を計算する。
【００３４】
さらに、β計算部は、パラメータ
β = ‖Σι∈I[n] w[ι,n]p[ι] - h[1]‖Q2
を計算する。
【００３５】
そして、M計算部は、パラメータ
M = α/β   (β≠0)；
M = 1   (β=0)
を計算する。
【００３６】
一方、フィルタ更新部は、記憶部に記憶される線形フィルタの推定値ベクトルh[1]を、
h[1] + λ[n]M(Σι∈I[n] w[ι,n]p[ι] - h[1])
に更新する。
【００３７】
そして、出力部は、当該h[1]が更新されると、
b[1,n] = sgn(h[1]†r[n])
を当該所望の送信局からn番目に送信されたビットの情報として出力する。
【００３８】
さらに、繰り返し制御部により繰り返される処理は、制御数列取得部から出力部までによる処理である。
【００３９】
また、本発明の信号処理装置において、出力部は、当該b[1,n]を出力するのにかえて、もしくは、当該b[1,n]を出力するのに加えて、記憶部に記憶されるA[1]を、当該所望の送信局からn番目のビットが送信された時点の振幅として出力し、および／または、記憶部に記憶されるh[1]を、当該所望の送信局からn番目のビットが送信された時点の線形フィルタとして出力する。
【００４０】
また、本発明の信号処理装置は、相手先交換部をさらに備え、相手先交換部は、所望の送信局が1番目の送信局からj番目の送信局に替わると、記憶部に記憶されるA[1]とA[j]、s[1]とs[j]、h[1]とh[j]を交換するように構成することができる。
【００４１】
また、本発明の信号処理装置において、所定の正の整定数Cと、２つの数x,yのいずれか小さい方を返す関数min(x,y)により、
q[n] = min(n,C)；
I[n] = ｛n-q[n]+1，n-q[n]+2，…，n-1，n｝；
w[ι,n] = 1/q[n]；
と定め、
ρ[n] = 0,
ρ[n] = σ2，もしくは，
ρ[n] = (1+21/2)σ2
と定めるように構成することができる。
【００４２】
本発明のその他の観点に係る信号処理方法は、±1により表現される１ビットの情報を、要素±1/N1/2のNチップからなるシグネチャを正逆に反転させて送信するJ個の送信局から送信された信号を、分散σ2の雑音環境下で受信した受信値を処理する信号処理装置にて実行される。
【００４３】
ここで、当該信号処理装置は、記憶部、受信部、V計算部、h*計算部、U計算部、Λ計算部、Q計算部、P計算部、Π計算部、繰り返し制御部、制御数列取得部、重み取得部、ステップ幅取得部、振幅更新部、ビット情報推定部、τ計算部、η計算部、vp計算部、α計算部、β計算部、M計算部、フィルタ更新部、出力部を有する。
【００４４】
そして、信号処理方法は、受信工程、V計算工程、h*計算工程、U計算工程、Λ計算工程、Q計算工程、P計算工程、Π計算工程、繰り返し制御工程、制御数列取得工程、重み取得工程、ステップ幅取得工程、振幅更新工程、ビット情報推定工程、τ計算工程、η計算工程、vp計算工程、α計算工程、β計算工程、M計算工程、フィルタ更新工程、出力工程を備え、以下のように構成する。
【００４５】
ここで、記憶部には、当該J個の送信局のそれぞれの振幅の推定値A[1]，A[2]，…，A[J]と、当該J個の送信局のうち、所望の送信局のシグネチャを表すN次元縦ベクトルs[1]と、当該所望の送信局以外の送信局のシグネチャの推定値を表すN次元縦ベクトルs[2]，…，s[J]と、J個の送信局のうち、当該所望の送信局に対する線形フィルタの推定値ベクトルh[1]と、が記憶される。
【００４６】
一方、受信工程では、受信部が、所望の送信局から送信されたi番目のビットのそれぞれのチップに対応する時刻に観測されるN個の受信値からなるN次元縦ベクトルr[i]を取得する。
【００４７】
さらに、V計算工程では、V計算部が、N次元縦ベクトルA[1]s[1]，A[2]s[2]，…，A[J]s[J]を順に列として並べたＶN行J列の行列
V = 〔A[1]s[1]，A[2]s[2]，…，A[J]s[J]〕
を計算する。
【００４８】
そして、h*計算工程では、h*計算部が、N行N列の単位行列I、および、行列の転置(・)†により、最適線形フィルタの推定値ベクトル
h* = s[1] - V(σ2I + V†V)-1V†s[1]
を計算する。
【００４９】
一方、U計算工程では、U計算部が、行列Vを正規直交化して得られる互いに線形独立なK (1≦K≦J)個の単位ベクトルを1列目からK列目までの列とするN行N列の直交行列Uを計算する。
【００５０】
さらに、Λ計算工程では、Λ計算部が、ベクトルU†(h* - h[1])の各要素に正定数δを加算したものを対角成分とする対角行列
Λ = diag(U†(h* - h[1])) + δI
を計算する。
【００５１】
そして、Q計算工程では、Q計算部が、N行N列の計量行列
Q = UΛ-1U†
を計算する。
【００５２】
一方、P計算工程では、P計算部が、射影行列
P = I - (s[1]†Q-1s[1])-1Q-1s[1]s[1]†；
を計算する。
【００５３】
さらに、Π計算工程では、Π計算部が、N行N列の行列
Π = PQ-1
を計算する。
【００５４】
そして、繰り返し制御工程では、繰り返し制御部が、記憶部に記憶されるA[1]を0に、h[1]をs[1]に、それぞれ初期化してから、受信部により、N個の受信値が観測されるごとに、現在までに取得された縦ベクトルr[1]，r[2]，…，r[n]の一部または全部を参照して、処理を繰り返す制御を行う。
【００５５】
さらに、制御数列取得工程では、制御数列取得部が、現在の取得済個数nから、所定のq[n] (1≦q[n]≦n)個の所定の1以上n以下の整数ι[1,n]<ι[2,n]< … <ι[q[n],n]からなる所定の集合
I[n] = ｛ι[1,n]，ι[2,n]，…，ι[q[n],n]｝⊂｛1，2，…，n｝
からなる制御数列を取得する。
【００５６】
一方、重み取得工程では、重み取得部が、現在の取得済個数nと、整数ι∈I[n]と、のそれぞれに対する所定の正の重みw[ι,n]であって、
Σι∈I[n] w[ι,n] = 1
を満たす重みを取得する。
【００５７】
さらに、ステップ幅取得工程では、ステップ幅取得部が、現在の取得済個数nから、0以上2以下の所定の更新ステップ幅λ[n]を取得する。
【００５８】
そして、振幅更新工程では、振幅更新部が、0以上1未満の忘却係数γにより、記憶部に記憶される振幅A[1]を、
A[1] + γ(|h[1]†r[n]| - A[1])
に更新する。
【００５９】
一方、ビット情報推定工程では、ビット情報推定部が、関数
sgn(x) = 1，   (x≧0)；
sgn(x) = -1，   (x<0)
により、当該所望の送信局から送信されたι∈I[n]番目のビットの情報の推定値
b[1,ι] = sgn(h[1]†r[ι])
を計算する。
【００６０】
さらに、τ計算工程では、τ計算部が、整数ι∈I[n]のそれぞれに対するパラメータ
τ[ι] = h[1]†r[ι] - A[1]b[1,ι]
を計算する。
【００６１】
そして、η計算工程では、η計算部が、整数ι∈I[n]のそれぞれに対するパラメータ
η[ι] = r[ι]†Πr[ι]
を計算する。
【００６２】
一方、vp計算工程では、vp計算部が、現在の取得済個数nに対応付けられる所定の正定数ρ[n]により、整数ι∈I[n]のそれぞれに対するベクトルパラメータ
p[ι] = h[1] - (τ[ι] - ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]>ρ[n]1/2)；
p[ι] = h[1] - (τ[ι] + ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]<-ρ[n]1/2)；
p[ι] = h[1]，   (上記以外)
を計算する。
【００６３】
さらに、α計算工程では、α計算部が、ベクトルa，bに対して行列Qに誘導される内積
〈a,b〉Q = a†Qb
およびノルム
‖a‖Q = 〈a,a〉Q1/2
により、パラメータ
α = Σι∈I[n] w[ι,n]‖p[ι] - h[1]‖Q2
を計算する。
【００６４】
そして、β計算工程では、β計算部が、パラメータ
β = ‖Σι∈I[n] w[ι,n]p[ι] - h[1]‖Q2
を計算する。
【００６５】
一方、M計算工程では、M計算部が、パラメータ
M = α/β   (β≠0)；
M = 1   (β=0)
を計算する。
【００６６】
さらに、フィルタ更新工程では、フィルタ更新部が、記憶部に記憶される線形フィルタの推定値ベクトルh[1]を、
h[1] + λ[n]M(Σι∈I[n] w[ι,n]p[ι] - h[1])
に更新する。
【００６７】
一方、出力工程では、当該h[1]が更新されると、出力部が、
b[1,n] = sgn(h[1]†r[n])
を当該所望の送信局からn番目に送信されたビットの情報として出力する。
【００６８】
そして、繰り返し制御工程にて繰り返される処理は、制御数列取得工程から出力工程までによる処理である。
【００６９】
また、本発明の信号処理方法において、出力工程では、当該b[1,n]を出力するのにかえて、もしくは、当該b[1,n]を出力するのに加えて、記憶部に記憶されるA[1]を、当該所望の送信局からn番目のビットが送信された時点の振幅として出力し、および／または、記憶部に記憶されるh[1]を、当該所望の送信局からn番目のビットが送信された時点の線形フィルタとして出力するように構成することができる。
【００７０】
また、本発明の信号処理方法であって、信号処理装置は、相手先交換部をさらに有し、相手先交換工程では、所望の送信局が1番目の送信局からj番目の送信局に替わると、相手先交換部が、記憶部に記憶されるA[1]とA[j]、s[1]とs[j]、h[1]とh[j]を交換するように構成することができる。
【００７１】
また、本発明の信号処理方法は、所定の正の整定数Cと、２つの数x,yのいずれか小さい方を返す関数min(x,y)により、
q[n] = min(n,C)；
I[n] = ｛n-q[n]+1，n-q[n]+2，…，n-1，n｝；
w[ι,n] = 1/q[n]；
と定め、
ρ[n] = 0,
ρ[n] = σ2，もしくは，
ρ[n] = (1+21/2)σ2
と定めるように構成することができる。
【００７２】
本発明のその他の観点に係るプログラムは、コンピュータを上記の信号処理装置の各部として機能させるように構成する。
【００７３】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００７４】
上記プログラムは、プログラムが実行されるコンピュータやディジタル信号プロセッサとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータやディジタル信号プロセッサとは独立して配布・販売することができる。
【発明の効果】
【００７５】
本発明によれば、通信路の伝搬状況が時間変動する場合にも環境雑音や他のユーザからの干渉を抑制する適応的な線形フィルタを算出するのに好適な信号処理装置、信号処理方法、ならびに、これをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００７６】
以下に本発明の実施形態を説明する。なお、以下に説明する実施形態は説明のためのものであり、本発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００７７】
図１は、本実施形態に係る信号処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００７８】
本図に示すように、本実施形態に係る信号処理装置１０１は、記憶部１０２、受信部１０３、V計算部１０４、h*計算部１０５、U計算部１０６、Λ計算部１０７、Q計算部１０８、P計算部１０９、Π計算部１１０、繰り返し制御部１１１、制御数列取得部１１２、重み取得部１１３、ステップ幅取得部１１４、振幅更新部１１５、ビット情報推定部１１６、τ計算部１１７、η計算部１１８、vp計算部１１９、α計算部１２０、β計算部１２１、M計算部１２３、フィルタ更新部１２４、出力部１２５、相手先交換部１２６を備える。
【００７９】
本信号処理装置１０１は、J個の送信局から信号が送信された信号が分散σ2の雑音環境下で伝搬してくることを想定している。
【００８０】
そして、各送信局では、±1により表現される１ビットの情報を、要素±1/N1/2のNチップからなるシグネチャを正逆に反転させて送信する。本実施形態では、このシグネチャは、拡散符号に相当するものであり、位相を１８０度変化させる直接拡散を行うこととしている。
【００８１】
したがって、信号処理装置１０１が通信する送信局が複数ある場合には、そのそれぞれに対応付けられたシグネチャを、信号処理装置１０１で知っていることとなる。
【００８２】
また、雑音の分散σ2は、適当な推測値を利用することもできるのが典型的であるが、実測しても良い。すなわち、各送信局に対して本実施形態を適用することで、各送信局からの振幅と伝送されたビットが判明するから、受信値における各送信局の成分が判明する。そこで、これを除去した残りが雑音成分となるから、この雑音成分から、σ2を求めることができる。
【００８３】
以下の説明では、理解を容易にするため、信号処理装置１０１は、所望の送信局を1番目、それ以外の送信局を2番目〜J番目として区別して取り扱うものとする。（なお、これらの順序に特段の制約はないから、所望の送信局が変われば、当該順序を変更して、同じ処理を行えば良いこととなる。この変更処理を行うのが、後述する相手先交換部１２６である。）
【００８４】
また、以下の説明では、一般的なコンピュータ（ＣＰＵ（Central Processing Unit）の制御下で、ＲＡＭ（Random Access Memory）を一時記憶とし、ハードディスクを不揮発記憶とし、入出力ポートで外部機器とのやりとりを行うのが典型的である。）等の情報処理装置にてプログラムを動作させることで信号処理装置１０１を実現する典型例を説明するが、ＤＳＰ（Digital Signal Processor）、ＦＰＧＡ（Field Programmable Gate Array）、ＡＳＩＣ（Application Specific Integrated Circuit）、その他の電子回路によって実現することも可能である。
【００８５】
記憶部１０２は、ＲＡＭによって実現され、以下の情報を記憶する。
J個の送信局のそれぞれの振幅の推定値A[1]，A[2]，…，A[J]。
J個の送信局のうち、所望の送信局のシグネチャを表すN次元縦ベクトルs[1]。
J個の送信局のうち、所望の送信局以外の送信局のシグネチャの推定値を表すN次元縦ベクトルs[2]，…，s[J]。
J個の送信局のうち、所望の送信局に対する線形フィルタの推定値ベクトルh[1]。
【００８６】
このほか、以下の情報を記憶することとするのが典型的である。
J個の送信局のうち、所望の送信局以外の送信局に対する線形フィルタの推定値ベクトルh[2]，…，s[J]。
雑音の分散の推定値σ2。
所望の送信局が送信した各ビットに対して観測されたNチップの受信値を要素とするN次元ベクトルの列r[1]，r[2]，…。カウンタ変数nを用いて、現在までに、r[1]，r[2]，…，r[n]が取得されたものとする。
そのほか、後述する各計算処理の途中結果。
【００８７】
ベクトルや行列、集合等の数学的実体の情報は、配列の形式で実装するのが典型的であるが、スタックやキュー、ハッシュ、ビット集合などで実装することとしても良い。また、過去すべての値ではなく、直近何個かの値で十分な場合には、リングバッファ等を組み合わせても良い。
【００８８】
また、下記の制御では、ある推定値を最新の値に上書きすることが行われているが、配列に履歴を記録することとして、ある時点での推定値が後の各種の処理で利用できるようにしても良い。
【００８９】
図２は、当該信号処理装置にて実行される信号処理方法の制御の流れを示すフローチャートである。以下、本図を参照して説明する。
【００９０】
まず、繰り返し制御部１１１は、記憶部１０２に記憶される情報を初期化する（ステップＳ２０１）。具体的には、以下のような処理を行う。
【００９１】
すなわち、
A[1]←0；
h[1]←s[1]；
n←0
のように代入を行う。
【００９２】
なお、A[1]について、過去の処理等によりすでに推定値が得られていれば、0のかわりにそれを利用することが望ましい。このほか、A[2]，…，A[J]は、過去の処理等によって推定値が得られていると想定して、これを初期値とする。また、推定値が得られていない場合には、適当な乱数を与えるものとする。
【００９３】
また、s[2]，…，s[J]については、同じチップ長の拡散符号として採用されうるものをランダムに代入することとしても良いし、過去の処理等によって拡散符号が判明しているものについては、それをそのまま利用しても良い。また、単なる乱数を代入する、という手法もありうる。このとき、s[1]，s[2]，…，s[J]は、互いに異なる値とする。
【００９４】
h[2]，…，h[J]は、所望の送信局以外の送信局の線形フィルタであり、所望の送信局が交換されない限り、初期化の必要はない。また、所望の送信局の交換が起きる場合には、以前の値をそのまま採用するか、上記のs[2]，…，s[J]を代入するなどの手法が考えられる。
【００９５】
ついで、V計算部１０４は、N次元縦ベクトルA[1]s[1]，A[2]s[2]，…，A[J]s[J]を順に列として並べたＶN行J列の行列
V = 〔A[1]s[1]，A[2]s[2]，…，A[J]s[J]〕
を計算し（ステップＳ２０２）、h*計算部１０５は、N行N列の単位行列I、および、行列の転置(・)†により、最適線形フィルタの推定値ベクトル
h* = s[1] - V(σ2I + V†V)-1V†s[1]
を計算する（ステップＳ２０３）。これらの計算は、通常の行列計算を行うことで可能となる。なお、正則でないために逆行列が求められない場合には、A[1]，…，A[J]の値をそれぞれランダムに増減させるなどして、再試行を行う。
【００９６】
ついで、U計算部１０６は、行列Vを正規直交化して得られる互いに線形独立なK (1≦K≦J)個の単位ベクトルを1列目からK列目までの列とするN行N列の直交行列Uを計算する（ステップＳ２０４）。直交行列Uを得る計算法としては、グラム・シュミットの直交化など、公知の技術を適用することができる。
【００９７】
具体的には、以下のような処理である。すなわち、
（１）行列Uの１列目には、行列Vの１列目を、単位ベクトルにしたものを設定し、
（２）行列Vの(k+1) (k≧1)列目は、
（２ａ）行列Vの(k+1)列目から、行列Uの1列目成分，…，k列目成分を減算したものが零ベクトルでなければ、これを単位ベクトル化したものを設定し、
（２ｂ）零ベクトルであれば、行列Uの1列目成分，…，k列目と直交する単位ベクトルを適当に選択して設定し、
（３）一旦減算結果が０となって以降は、行列Uのすでに定まった列と直交するもので残りの列を補充する。
【００９８】
さらに、Λ計算部１０７は、ベクトルU†(h* - h[1])の各要素に正定数δを加算したものを対角成分とする対角行列
Λ = diag(U†(h* - h[1])) + δI
を計算する（ステップＳ２０５）。
【００９９】
そして、Q計算部１０８は、N行N列の計量行列
Q = UΛ-1U†
を計算する（ステップＳ２０６）。
【０１００】
ここで計算される計量行列Qが、本願の特徴の一つである。すなわち、[非特許文献１]においては、Q = IとするＢＰＣＰ（Blind Parallel Constrained Projection）技術が開示されている。本願では、上記のような計量行列Qを採用することで、収束の高速化を図るのである。
【０１０１】
さらに、P計算部１０９は、射影行列
P = I - (s[1]†Q-1s[1])-1Q-1s[1]s[1]†；
を計算し（ステップＳ２０７）、Π計算部１１０は、N行N列の行列
Π = PQ-1
を計算する（ステップＳ２０８）。
【０１０２】
ステップＳ２０２〜ステップＳ２０８の処理は、信号受信前に行うことが可能な処理であるが、信号受信を開始した後に適宜適当なタイミングで実行しても良い。特に、ある程度受信が行われ、各送信局からの振幅A[1]，…，A[J]やシグネチャs[1]，…，s[J]が判明した後に実行すると、より良い計量行列Qを得ることができる。
【０１０３】
さて、以下では、信号受信を開始してからの繰り返し処理を説明する。すなわち、受信部１０３は、所望の送信局から送信されたNチップ分の受信値を取得する（ステップＳ２１１）。ここでは、通常のＣＤＭＡの技術が利用される。すなわち、１チップ時間長単位でアンテナの電位を取得し、アナログ・ディジタル変換して数列とした後、これに対してシグネチャs[1]をスライドさせて相関をとり、１ビット単位での同期をとる。一旦同期がとれたら、Nチップ単位で受信値を取得するのである。
【０１０４】
受信部１０３は、上記のようなＣＭＤＡのアンテナから同期機構までの処理を行う機器をコンピュータの入出力ポートに接続することによって実現しても良いし、得られた受信情報がハードディスク等に記録されることとしても良い。
【０１０５】
そして、カウンタ変数nを１増やして（ステップＳ２１２）、取得されたN個の受信値をベクトル変数r[n]に代入する（ステップＳ２１３）。すなわち、カウンタ変数nは、処理を開始してからの「経過時間」に相当する値を格納するものであり、記憶部１０２に、r[1]，…，r[n]が記憶されていることになる。
【０１０６】
一方、制御数列取得部１１２は、現在の取得済個数nから、所定のq[n] (1≦q[n]≦n)個の所定の1以上n以下の整数ι[1,n]<ι[2,n]< … <ι[q[n],n]からなる所定の集合
I[n] = ｛ι[1,n]，ι[2,n]，…，ι[q[n],n]｝⊂｛1，2，…，n｝
からなる制御数列を取得する（ステップＳ２１４）。
【０１０７】
ここで、制御数列I[n]に含まれる整数の個数q[n]は、適当な正の整定数C、および、値x，yのいずれか小さい方を返す関数min(x,y)を用いて、
q[n] = min(n,C)
とするのが典型的である。Cの値としては、1，8，16，32，128等、種々の値を利用することができる。
【０１０８】
また、制御数列I[n]は、
I[n] = ｛n-q[n]+1，n-q[n]+2，…，n-1，n｝
とするのが典型的である。制御数列I[n]は、r[1]，…，r[n]のうち、いずれを参照して計算を行うかを決めるものである。すなわち、I[n]に含まれる整数ιから、r[ι]を参照することが定められるのである。
【０１０９】
上記の例では、直近の（多くとも）C個の受信値ベクトル
r[n-q[n]+1]，r[n-q[n]+2]，…，r[n-1]，r[n]
を参照して、以降の掲載を行うのである。したがって、r[]の記憶には、長さCのリングバッファを利用することとしても良い。
【０１１０】
さらに、重み取得部１１３は、現在の取得済個数nと、整数ι∈I[n]と、のそれぞれに対する所定の正の重みw[ι,n]であって、
Σι∈I[n] w[ι,n] = 1
を満たす重みを取得する（ステップＳ２１５）。
【０１１１】
具体的には、直近の値が重要視されるようにするため、
w[ι[1,n]]≦w[ι[2,n]]≦…≦w[ι[q[n],n]]
が成立するようにすることが望ましいが、単純かつ典型的には、
w[ι,n] = 1/q[n]
とする。
【０１１２】
一方、ステップ幅取得部１１４は、現在の取得済個数nから、0以上2以下の所定の更新ステップ幅λ[n]を取得する（ステップＳ２１６）。更新ステップ幅λ[n]としては、上記の条件を満たす適当な定数を採用するのが典型的である。
【０１１３】
さらに、振幅更新部１１５は、0以上1未満の忘却係数γにより、記憶部１０２に記憶される振幅A[1]を、
A[1] + γ(|h[1]†r[n]| - A[1])
に更新する（ステップＳ２１７）。忘却係数は、上記の条件を満たす適当な定数である。
【０１１４】
この更新値は、所望の送信局（1番目の送信局）の最新の（時点nの）振幅の推定値であるので、記憶部１０２に記憶されるA[1]の値は、常に最新の値で上書きされることになる。
【０１１５】
そして、ビット情報推定部１１６は、関数
sgn(x) = 1，   (x≧0)；
sgn(x) = -1，   (x<0)
により、当該所望の送信局から送信されたι∈I[n]番目のビットの情報の推定値
b[1,ι] = sgn(h[1]†r[ι])
を計算する（ステップＳ２１８）。これは、ιについてのループ計算によって実現することができる。図中では、このループ計算を、「∀ι∈Ｉ[ｎ]」のように表記している。
【０１１６】
b[1,・]をＲＡＭ内の配列に記憶する場合には、過去に推定したビット値が、ステップＳ２１８における処理で上書きされることになる。また、I[n]がnの直近のもののみを利用する場合には、b[1,・]もリングバッファとすることができる。これは、以下の、ιを添字とする各種のパラメータも同様である。
【０１１７】
一方、τ計算部１１７は、整数ι∈I[n]のそれぞれに対するパラメータ
τ[ι] = h[1]†r[ι] - A[1]b[1,ι]
を計算し（ステップＳ２１９）、η計算部１１８は、整数ι∈I[n]のそれぞれに対するパラメータ
η[ι] = r[ι]†Πr[ι]
を計算する（ステップＳ２２０）。
【０１１８】
そして、vp計算部１１９は、現在の取得済個数nに対応付けられる所定の正定数ρ[n]により、整数ι∈I[n]のそれぞれに対するベクトルパラメータ
p[ι] = h[1] - (τ[ι] - ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]>ρ[n]1/2)；
p[ι] = h[1] - (τ[ι] + ρ[n]1/2）Πr[ι]/η[ι]，   (τ[ι]<-ρ[n]1/2)；
p[ι] = h[1]，   (上記以外)
を計算する（ステップＳ２２１）。
【０１１９】
ここで、ρ[n]は、典型的には、
ρ[n] = 0,
ρ[n] = σ2，もしくは，
ρ[n] = (1+21/2)σ2
のような値を用いる。最終的なビットエラーレートや信号雑音比など、伝搬状況が悪い場合には大きくし、良い場合には小さくするなど、種々の態様を採用することができる。また、nが大きくなっていくと次第に一定値に収束するように設定しても良い。
【０１２０】
一方、α計算部１２０は、ベクトルa，bに対して行列Qに誘導される内積
〈a,b〉Q = a†Qb
および行列Qに誘導されるノルム
‖a‖Q = 〈a,a〉Q1/2
により、パラメータ
α = Σι∈I[n] w[ι,n]‖p[ι] - h[1]‖Q2
を計算し（ステップＳ２２２）、β計算部１２１は、パラメータ
β = ‖Σι∈I[n] w[ι,n]p[ι] - h[1]‖Q2
を計算する（ステップＳ２２３）。
【０１２１】
そして、M計算部１２３は、パラメータ
M = α/β   (β≠0)；
M = 1   (β=0)
を計算する（ステップＳ２２４）。
【０１２２】
τ[・]，η[・]，p[・]，α，β，Mは、一時的な変数であるので、ＲＡＭ内に確保された配列領域、変数領域に記憶するのが典型的である。
【０１２３】
一方、フィルタ更新部１２４は、記憶部１０２に記憶される線形フィルタの推定値ベクトルh[1]を、
h[1] + λ[n]M(Σι∈I[n] w[ι,n]p[ι] - h[1])
に更新する（ステップＳ２２５）。これによって、線形フィルタの推定値ベクトルが、n-1番目のビットを受信した直後の時点での推定値からn番目のビットを受信した直後の時点での推定値に更新されることになる。
【０１２４】
したがって、出力部１２５は、当該h[1]が更新されると、
b[1,n] = sgn(h[1]†r[n])
を当該所望の送信局からn番目に送信されたビットの情報として出力する（ステップＳ２２６）。
【０１２５】
また、この出力の際に、記憶部１０２に記憶されるA[1]を、当該所望の送信局からn番目のビットが送信された時点の振幅として出力し、および／または、記憶部１０２に記憶されるh[1]を、当該所望の送信局からn番目のビットが送信された時点の線形フィルタとして出力することとしても良い。
【０１２６】
そして、b[1,h]が出力されると、繰り返し制御部１１１は、ステップＳ２１１に制御を戻す。なお、ステップＳ２１１〜ステップＳ２２６の処理の途中で、振幅A[1]が更新されるから、適当なタイミングで（たとえば、繰り返しが所定回数起きるごと、A[1]の変化量（各要素の変化量の自乗の総和等）が一定値を超えるごと、あるいは、毎回等）、ステップＳ２１１に戻るのにかえてステップＳ２０２に戻ることとしても良い（図中破線矢印）。
【０１２７】
上記の説明では、所望の送信局を１番目の送信局であると考えて、s[1]を既知とし、A[1]，h[1]が次第に更新されていくこととしているが、所望の送信局を適宜替えたい場合には、相手先交換部１２６が機能する。
【０１２８】
すなわち、相手先交換部１２６は、所望の送信局が1番目の送信局からj番目の送信局に替わると、記憶部１０２に記憶されるA[1]とA[j]、s[1]とs[j]、h[1]とh[j]を交換する。
【０１２９】
その上で、上記の処理を適当な回数行うことにより、複数の送信局についても、振幅A[・]、線形フィルタh[・]、シグネチャs[・]が次第に収束していくこととなる。
【０１３０】
また、各送信局iについて、振幅A[i]、線形フィルタh[i]、シグネチャs[i]、および、送信されたビットb[i,n]が得られれば、受信値r[n]における全送信局の有効な信号成分が判明する。したがって、それ以外の成分が雑音成分ということとなる。そこで、その雑音成分の分散の時間経過を求めて、σ2を適宜更新することとしても良い。
【０１３１】
上記各部の計算処理は、ＣＰＵがＲＡＭと共働して行う。また、出力部１２５の出力先は、入出力ポートを介して他の機器（たとえば、通信機器における音声出力機構）に接続することとしても良いし、ＲＡＭやハードディスク内に蓄積することとしても良い。
【０１３２】
さて、上記のように、本発明と[非特許文献２]との差異の一つは、計量行列Qの定め方にあり、このような定め方を採用することで、収束が速くなる。以下では、これをシミュレーション実験によって確認する。シミュレーションは、以下の諸元で行った。
信号雑音比（ＳＮＲ；Signal (or bit energy to) Noise Ratio）は、１５ｄＢで一定。これは、10 log10A[1]2/σ2に等しい。
干渉局の数S = 7。本発明では上り回線を想定しており、送信局が一斉に同期をとって電波を送信することは一般にない非同期システムである。一つの干渉波のシグネチャが所望波のシグネチャと時間的にずれるため、仮想的に２つの干渉波として効いてくることになり、受信側で効いてくる干渉波の数J-1は、最大で2Sとなる。
所望の信号の振幅A[1] = 1であるが、干渉局の振幅A[2]，…，A[J]は、その１０倍以上。
シグネチャとして、３１チップ長のゴールド符号を各送信局にランダムに割り当てる。したがって、N = 31。
忘却係数γ = 0.01。
微小な正定数δ = 0.02。
【０１３３】
また、[非特許文献２]による手法（ＢＰＣＰ）と、本手法（Ｐｒｏｐｏｓｅｄ）では、以下の２通りを実験した。
（１）q[n] = 1，λ[n] = 0.6，ρ[n] = 0。（図中の「ｑ＝１」）。
（２）q[n] = 16，λ[n] = 0.15，ρ[n] = 0.01。（図中の「ｑ＝１６」）。
【０１３４】
シミュレーションのために、それぞれ３００回の独立試行を行った。
【０１３５】
図３は、本実施形態と、既存技術との実験結果を対比して示すグラフである。以下、本図を参照して説明する。
【０１３６】
本図横軸（Iteration number）は、nに相当する数である。本図縦軸（Output SINR）は、その段階での適応フィルタの性能を表す。
【０１３７】
いずれの手法も、nが増えると、理想状態（Optimal）に近付きつつ、１０ｄＢ前後で収束しているが、本手法（Proposed）は、q=16の場合には、500回の繰り返しで略収束し、q=1の場合でも、1000回の繰り返しで略収束している。一方、従来手法（ＢＰＣＰ）では、q=16の場合には、収束までに1500回の繰り返しを要し、q=1の場合でも、収束までに2000回の繰り返しを要している。
【０１３８】
すなわち、本手法の収束が格段に高速であることがわかる。
【産業上の利用可能性】
【０１３９】
上記のように、本発明によれば、通信路の伝搬状況が時間変動する場合にも環境雑音や他のユーザからの干渉を抑制する適応的な線形フィルタを算出するのに好適な信号処理装置、信号処理方法、ならびに、これをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１４０】
【図１】本実施形態に係る信号処理装置の概要構成を示す模式図である。
【図２】本実施形態に係る信号処理装置にて実行される信号処理方法の制御の流れを示すフローチャートである。
【図３】実験結果を示すグラフである。
【符号の説明】
【０１４１】
１０１  信号処理装置
１０２  記憶部
１０３  受信部
１０４  V計算部
１０５  h*計算部
１０６  U計算部
１０７  Λ計算部
１０８  Q計算部
１０９  P計算部
１１０  Π計算部
１１１  繰り返し制御部
１１２  制御数列取得部
１１３  重み取得部
１１４  ステップ幅取得部
１１５  振幅更新部
１１６  ビット情報推定部
１１７  τ計算部
１１８  η計算部
１１９  vp計算部
１２０  α計算部
１２１  β計算部
１２３  M計算部
１２４  フィルタ更新部
１２５  出力部
１２６  相手先交換部
【図１】
2009027548.tif 000003
【図２】
2009027548.tif 000004
【図３】
2009027548.tif 000005