音源定位(補足) update 20181014
前回の「音源定位」の説明の中に、虚像を消す方法を述べましたが、証明で使用した係数と、音源定位計算のために使用した係数のあいだの関係が不明確でしたので、かえってわかりずらくなっていました。
そこで、そのわかりにくさを解消するために、計算が重複することをいとわずに再説明にチャレンジします。
■前提として
1個の共通の根χ=β/αを持つ2つの2次方程式を考える。
他の異なる2根を、χ=δ/γ及びχ=ζ/εとする。
【α:アルファ、β:ベータ、γ:ガンマ、δ:デルタ、ε:イプシロン、ζ:ゼータ】
このとき
α≠0・・・(1)
であり、また他の2つの根同士は異なるので
ε*δ≠γ*ζ・・・(2)
である。
(α*χ-β)*(γ*χ-δ)=0・・・(3)
(α*χ-β)*(ε*χ-ζ)=0・・・(4)
これを展開すると、
α*γ*χ^2-α*δ*χ-β*γ*χ+β*δ=0・・・(5)
α*ε*χ^2-α*ζ*χ-β*ε*χ+β*ζ=0・・・(6)
α≠0、γ≠0、ε≠0のとき、χ^2の項を消去する。
α*γ*ε*χ^2-α*δ*ε*χ-β*γ*ε*χ+β*δ*ε=0・・・(7)
α*γ*ε*χ^2-α*γ*ζ*χ-β*γ*ε*χ+β*γ*ζ=0・・・(8)
D-Eは以下のとおり
α*(γ*ζ-δ*ε)*χ-β*(γ*ζ-δ*ε)=0
(α*χ-β)*(γ*ζ-δ*ε)=0
A(→γ*ζ≠δ*ε)から
α*χ-β=0
@(→α≠0)から
∴ χ=β/α
→したがって、共通の根だけ抽出できた。
■今
マイクロホンM1、M2、M3で構成される基線を基線1とする。
基線1の各マイクホンM1、M2、M3の位置を(x1, y1), (x2, y2), (x3, y3)、音源位置を(x0, y0)、
音の発生時刻をt0(未知)、各マイクに音が到達する時刻を t1, t2, t3 とする。
音源から各マイクまでの距離と音の到達時間より次式が成り立つ。
sqrt【(x1-x0)^2+(y1-y0)^2】 = v*(t1-t0) …(9)
sqrt【(x2-x0)^2+(y2-y0)^2】 = v*(t2-t0) …(10)
sqrt【(x3-x0)^2+(y3-y0)^2】 = v*(t3-t0) …(11)
・(9)〜(11)を2乗すると、
(x1-x0)^2 + (y1-y0)^2 = [v*(t1-t0)]^2 …(12)
(x2-x0)^2 + (y2-y0)^2 = [v*(t2-t0)]^2 …(13)
(x3-x0)^2 + (y3-y0)^2 = [v*(t3-t0)]^2 …(14)
・(12)から(13)を引くと、
(x1-x0)^2 + (y1-y0)^2 - (x2-x0)^2 - (y2-y0)^2 = [v*(t1-t0)]^2 - [v*(t2-t0)]^2
展開整理して、
(x1^2+y1^2-x2^2-y2^2)-2*x0*(x1-x2) -2*y0*(y1-y2) = (v^2)*(t1^2-t2^2)-2*(v^2)*t0*(t1-t2) …(15)
・同様に、(12)から(14)を引き、展開整理すると、
(x1^2+y1^2-x3^2-y3^2)-2*x0*(x1-x3) -2*y0*(y1-y3) = (v^2)*(t1^2-t3^2)-2*(v^2)*t0*(t1-t3) …(16)
・(15)、(16)を変形して、
-2*(y1-y2)*y0+2*(v^2)*(t1-t2)*t0 = (v^2)*(t1^2-t2^2)-(x1^2+y1^2-x2^2-y2^2)+2*(x1-x2)*x0 …(17)
-2*(y1-y3)*y0+2*(v^2)*(t1-t3)*t0 = (v^2)*(t1^2-t3^2)-(x1^2+y1^2-x3^2-y3^2)+2*(x1-x3)*x0 …(18)
・ここで、
a1=-2*(y1-y2),
b1= 2*(v^2)*(t1-t2),
c1= (v^2)*(t1^2-t2^2)-(x1^2+y1^2-x2^2-y2^2),
d1= 2*(x1-x2)
a2= -2*(y1-y3),
b2= 2*(v^2)*(t1-t3),
c2= (v^2)*(t1^2-t3^2)-(x1^2+y1^2-x3^2-y3^2),
d2= 2*(x1-x3)
とおくと、(17)、(18)は
a1*y0 + b1*t0 = c1 + d1*x0 …(19)
a2*y0 + b2*t0 = c2 + d2*x0 …(20) となる。
・これをy0, t0に関する連立方程式と考えて解くと、
y0 = A1*x0 + B1 …(21)
t0 = C1*x0 + D1 …(22)
ここで、
A1 = (b2*d1-b1*d2)/(a1*b2-a2*b1)
B1 = (b2*c1-b1*c2)/(a1*b2-a2*b1)
C1 = (a1*d2-a2*d1)/(a1*b2-a2*b1)
D1 = (a1*c2-a2*c1)/(a1*b2-a2*b1)
・この y0、t0を(12)に代入すると、x0に関する次の2次方程式を得る。
[x1-x0]^2 + [y1-(A1*x0+B1)]^2 - 【v*[t1-(C1*x0+D1)]】^2 = 0
x0について整理すると、
E1*x0^2 + F1*x0 + G1 = 0 ・・・(23)
ここで、
E1 = x1-x0
F1 = y1-(A1*x0+B1)
G1 = -【v*[t1-(C1*x0+D1)]】^2
さらに
マイクロホンM4、M5、M6で構成される基線を基線2とする。
基線2の各マイクホンM4、M5、M6の位置を(x4, y4), (x5, y5), (x6, y6)、音源位置を(x0, y0)、
音の発生時刻をt0(未知)、各マイクに音が到達する時刻を t4, t5, t6 とする。
ここで基線1での計算結果のx、y、tに関する添え字を1→4、2→5、3→6に変換する。
またa、bに関する添え字を1→3、2→4に変換する。
そしてA、B、C、D、E、F、Gに関する添え字を1→2に変換する。
したがって基線2から導かれる式の係数は
a3=-2*(y4-y5),
b3= 2*(v^2)*(t4-t5),
c3= (v^2)*(t4^2-t5^2)-(x4^2+y4^2-x5^2-y5^2),
d3= 2*(x4-x5)
a4= -2*(y4-y6),
b4= 2*(v^2)*(t4-t6),
c4= (v^2)*(t4^2-t6^2)-(x4^2+y4^2-x6^2-y6^2),
d4= 2*(x4-x6)
A2 = (b4*d3-b3*d4)/(a3*b4-a4*b3),
B2 = (b4*c3-b3*c4)/(a3*b4-a4*b3)
C2 = (a3*d4-a4*d3)/(a3*b4-a4*b3),
D2 = (a3*c4-a4*c3)/(a3*b4-a4*b3)
E2*x0^2 + F2*x0 + G2 = 0 ・・・(24)
ここで、
E2 = x4-x0
F2 = y4-(A2*x0+B2)
G2 = -【v*[t4-(C2*x0+D2)]】^2
さて
α*γ*χ^2-(α*δ+β*γ)*χ+β*δ=0・・・(5)
α*ε*χ^2-(α*ζ+β*ε)*χ+β*ζ=0・・・(6)
と
E1*x0^2 + F1*x0 + G1 = 0 ・・・(23)
E2*x0^2 + F2*x0 + G2 = 0 ・・・(24)
を比較する。
E1=α*γ
F1=-(α*δ+β*γ)
G1=β*δ
E2=α*ε
F2=-(α*ζ+β*ε)
G2=β*ζ
未知数が6個に対し、式が6個あるので、α及びβが求まる。
γ=E1/α
-(α*δ+β*γ)=F1
δ=G1/β
→ -(α*(G1/β)+β*(E1/α))=F1
-((α^2)*(G1)+(β^2)*(E1))=α*β*F1
両辺をα^2で割ると
-(G1+((β/α)^2)*E1)=(β/α)*F1・・・(25)
また
ε=E2/α
-(α*ζ+β*ε)=F2
ζ=G2/β
→ -(α*(G2/β)+β*(E2/α))=F2
-((α^2)*G2+(β^2)*E2)=α*β*F2
両辺をα^2で割ると
-(G2+((β/α)^2)*E2=(β/α)*F2・・・(26)
(25)(26)式から(β/α)^2の項を消去
-(G1*E2+((β/α)^2)*E1*E2)=(β/α)*F1*E2
-(G2*E1+((β/α)^2)*E1*E2)=(β/α)*F2*E1
上式から下式を引くと
G2*E1-G1*E2=(β/α)*(F1*E2-F2*E1)
因って、
x0=(β/α)=(G2*E1-G1*E2)/(F1*E2-F2*E1)
である。
ゆえに、2本の基線から音源のx座標のx0が求まる。
このx0を用いて
y01 = A1*x0 + B1、
もしくは
y02 = A2*x0 + B2
から、音源座標y0を求める。
音源座標(x0、y01)=((G2*E1-G1*E2)/(F1*E2-F2*E1)、A1*x0 + B1)
もしくは
音源座標(x0、y02)=((G2*E1-G1*E2)/(F1*E2-F2*E1)、A2*x0 + B2)
もしくは
音源座標(x0、(y02+y01)/2)
=((G2*E1-G1*E2)/(F1*E2-F2*E1)、((A2+A1)/2)*x0 + (B2+B1)/2)
【いずれを使うかは好みによる。誤差は、音源座標と基線1と基線2との関係によって変わるのでどれを使うのが最適かは一概にいえない】