声源定位matlab程序_matlab阵列天线

声源定位matlab程序_matlab阵列天线麦克风阵列声源定位(一)0a”N0Q”tt2l$t)F利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival(DOA)estimation),DOA估计的其中一种方法是计算到达不同阵元间的时间差,另外一种可以看这里,这篇主要介绍经典的GCC-PHAT方法-p$?:Tc-\’~#t3h)U,A7t!B4a&u&am…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

麦克风阵列声源定位(一)

0 a” N0 Q” t  t2 l$ t) F利用麦克风阵列可以实现声源到达方向估计(direction-of-arrival (DOA) estimation),DOA估计的其中一种方法是计算到达不同阵元间的时间差,另外一种可以看这里,这篇主要介绍经典的GCC-PHAT方法

– p$ ?: T  c- \’ ~# t3 h

) U, A7 t! B4 a& u& p5 h: k背景d. u/ u9 \7 ~0 d7 D’ z: r

简单说明问题背景,信号模型如下图,远场平面波,二元阵列! b” m& L  [; |$ d; F

声源定位matlab程序_matlab阵列天线

) b2 H0 [; e6 Q5 V! ]9 a

, p+ }# R’ O: s2 M% m要计算得到θ \thetaθ,其实就是要求两个阵元接收到的信号时间差,现在问题变成到达时间差估计(Time-Difference-of-Arrival Estimation),因此,基于延时估计的DOA方法,其实也可以看做是分两步进行的,第一步是估计延时,第二步是计算角度,与之相对应的基于空间谱估计的DOA方法就是一步完成的。下面就分两步进行介绍

9 q$ \3 r; L* n( F$ D

) ^2 u/ t” t. N; k2 o: z+ Y* D+ _  z##1.延时估计

* S3 f1 |  _4 b! ?, r+ Q# Q###1.1.互相关函数(cross-correlation function$ {- X& S1 K7 g, i  w, ~  `

计算y1(k) y_1(k)y

: s” u7 Y# A1 K6 e+ u1

9 ?- k; G) I+ v​        % ~% y& }% k” z” Q+ W9 R

(k)与y2(k) y_2(k)y 9 l) c* @% V- B# }: h8 }2 x

2

6 A7 M0 d! }5 R  x; R5 q9 s​        , p’ |% q’ q+ K( K2 b2 u; z

(k)的时间差,可以计算两个信号的互相关函数,找到使互相关函数最大的值即是这两个信号的时间差’ O: x” U: ?4 M7 C! f

离散信号的互相关函数” \/ k/ F- P& |8 @

; @3 q$ v  W6 MR(τ)=E[x1(m)x2(m+τ)] R(\tau)=E[x_1(m)x_2(m+\tau)]

$ R0 T) f& j# k6 R3 fR(τ)=E[x 3 E; @& B( J6 d

1- D2 }  K) G’ x; M

​        4 f  y* Q! `3 _4 x6 c

(m)x

1 J. n) \2 b  o2 J+ U, j2

* b( k& v. ~” F/ t1 C​        $ t/ ]* A2 x( P% f

(m+τ)]8 K: ~6 H; w; ~8 ~  ]’ L

) f6 U8 S2 T5 v) z$ f& X: b( |求时间差就是找到互相关函数最大时的点

. \3 [! y% M$ l# O- h0 X; p: B3 r/ J$ I

D=argmaxR(n) D=argmaxR(n)( U0 {” }7 U7 b  J5 E3 k7 Y, j

D=argmaxR(n)- R/ ^8 V$ y1 w8 F0 `: s& ^

% k8 M2 d& X- _说的那么简单,那就用代码验证下; R7 e! A5 p1 K) t

%%

, k: w6 Q. k# m! h7 M8 S% Load the chirp signal.

) i+ Q. p/ g+ `. e’ Fload chirp;

” H6 s; ^; k+ c9 o$ q  g6 mc = 340.0;5 z9 T* k0 D7 g7 K; J2 A

Fs = 44100;, i/ V( E% _& C5 J$ u& g8 v7 w! m

%%, U’ j4 V8 V- V5 T

4 [9 P3 B* f: J& I7 g& Zd = 0.25;

( d, {$ Z0 V; h3 P5 \” _% P, xN = 2;) e” @; L& V! u6 ~$ W2 v

mic = phased.OmnidirectionalMicrophoneElement;

1 p8 w’ C8 C7 ?2 `3 n$ v) z% array = phased.URA([N,N],[0.0724,0.0418],’Element’,mic);’ u- Q/ g* z4 Y( M6 ~4 ]

array = phased.ULA(N,d,’Element’,mic);

$ }% v0 F: y4 l, T0 d

– }8 [4 |3 A1 q5 `%%5 V7 F8 U5 ^5 K5 R& S” v/ J

% Simulate the incoming signal using the |WidebandCollector| System

$ \- }0 A9 C$ x# y+ F” O* s8 D% object(TM).1 N; N& j: s2 b) O& b# {

arrivalAng = 42;: {( r0 @6 ^3 N; d6 K$ \1 s

collector = phased.WidebandCollector(‘Sensor’,array,’PropagationSpeed’,c,…( m0 ]/ T) m0 v6 _4 `$ f” t

‘SampleRate’,Fs,’ModulatedInput’,false);” |2 d/ A/ J  C; Z, S

signal = collector(y,arrivalAng);. Z( H# E5 A1 ^( [) X7 _

3 {0 H3 P0 n” W. D! q. Cx1 = signal(:,1);) E3 O( v7 A+ A9 ?* r6 ~+ _3 g

x2 = signal(:,2);; A! @3 J- m1 `0 m# D

, g  `% J9 g& `$ z

N =length(x2);0 g0 s+ z# b3 t+ F” f

xc = xcorr(x1,x2,’biased’);

‘ G/ l4 v; I) W+ s[k,ind] = max(xc);

# O” B* J  z# L$ T& Qan = acos((ind-N)/Fs*340/d)*180/pi

. b, y/ N” k5 p: O$ o0 T3 P- g” y6 m’ e, A9 {

xc12 = zeros(2*N-1,1);( Z+ w5 G1 R9 ?3 X; |& S” k

m = 0;

” [, N’ z- t+ o$ ofor i = -(N-1):N-1

* n) _. f/ `1 k6 \3 R) b    m = m+1;- y0 j  C” c) Z

for t = 1:N/ {3 N  Q- c% V+ v8 D

if 0

4 B” K7 [  m. Z$ \$ J& _* ?            xc12(m) = xc12(m) + x2(t)*x1(t+i);, B$ k) m0 }: p* b$ |2 z

end ‘ b2 ^5 g1 Q8 W! E

end& Y8 @7 t9 Z5 V# n% X/ O; I( P

end# ?( V% r, m- r

xc12 = xc12/N;* m4 t# k2 H7 ?+ O: Z’ e# j& ^

” P( D1 W$ ^3 J8 z9 v” ]8 G) X/ x4 W: k% p+ m

# I4 k8 u& f  ~$ s* P1 Q6 N+ R8 N

以上程序中的循环就是上面的定义公式,运行程序可以看到循环部分计算的互相关与直接调用matlab的xcorr结果相同(注意matlab中互相关默认没做归一化),找到互相关函数的最大值就可以得到时间差

– C3 {. a) s; Y6 H! c” ^8 K/ s’ o

( N1 P8 x% l  J6 Y4 f6 _  o9 M. ?

声源定位matlab程序_matlab阵列天线

‘ f4 f, d; P# l) l7 m) w1.2.广义互相关(generalized cross-correlation)8 x6 e  N+ S” P# y

理论上使用上面个介绍的CCF方法就可以得到时间差,但是实际的信号会有噪声,低信噪比会导致互相关函数的峰值不够明显,这会在找极值的时候造成误差。. Q* Q2 R, P8 @: [/ o+ Q0 ]. ?- Y

为了得到具有更陡峭极值的互相关函数,一般在频域使用一个加权函数来白化输入信号,这就是经典的广义互相关方法。# n1 `3 l; r; ?4 t/ r% Z0 I6 T7 i8 z7 N

由维纳-辛钦定理可知,随机信号的自相关函数和功率谱密度函数服从一对傅里叶变换的关系,即x1、x2 x_1、x_2x

6 `; ^. X& e( }8 g7 }1

$ a( W% H6 f’ e( ~+ k& d​        0 t) ?! m9 i1 E” W8 }6 S! d! H

、x

! B2 L9 t. F. L# t. v2″ A8 E0 }  [& ~/ P1 \+ v4 y

– m. f: ~+ B; l3 G. a$ x 的互功率谱可由下式计算

, Y” C3 `5 Q0 ^0 `; b% B{( f/ g6 m% Z5 q, l” @

P(ω)=∫+∞−∞R(τ)e−jωτdτ P(\omega)=\int_{-\infty }^{+\infty }R(\tau)e^{-j\omega\tau}d\tau

” D+ H/ `) P” t5 OP(ω)=∫

, Y+ U. C0 H# D5 j” q+ d−∞5 q  n6 Z1 @7 t7 F8 N

+∞

/ `4 y. m0 i! f9 `* P- s’ h* S​        7 p# z3 L( {( ]& \9 ]* h

R(τ)e ) A3 L2 {$ ^; G* M5 Z) x

−jωτ

7 S) W* n2 M4 f$ o# H dτ/ G5 U4 }( Q7 C5 i3 U6 K. b  d

5 O1 d- a2 x: w( Y! d

R(τ)=∫+∞−∞P(ω)ejωτdω R(\tau)=\int_{-\infty }^{+\infty }P(\omega)e^{j\omega\tau}d\omega

2 e1 @- B” e/ V1 P; B: P2 tR(τ)=∫ 4 \( H1 L5 P0 d3 l/ X

−∞* Q9 E3 ?+ o& d3 p1 Q

+∞6 x9 r” H, T, [: c/ e( _’ b

​        6 F1 F7 ^2 h3 L  w  E

P(ω)e

+ g) s5 c; N4 j& w5 Ajωτ- C% c! S1 L  N’ P9 u$ Y

dω% c’ O  ^+ S9 o% v& l8 U

, b5 M1 C8 B# B7 V2 B7 q& ?  n5 Q

这一步是把互相关函数变换到了频域,哦对,上面说到是想白化互相关函数,那就把上面第二式添加一个系数; Q8 U4 D9 O$ N0 W; V& g

) G9 D/ y) t. ~7 _( _

R˜(τ)=∫+∞−∞A(ω)P(ω)ejωτdω \tilde{R}(\tau)=\int_{-\infty }^{+\infty }A(\omega)P(\omega)e^{j\omega\tau}d\omega’ _, u3 T/ A( K7 S

R* i. N( N* v- K$ g/ I; E

~9 K9 |9 @. \  R% T, X  z

(τ)=∫ 1 [8 _2 O- o0 Q) ~3 I4 q! z

−∞

: x9 h: S0 X2 ?8 C1 j* f+∞

‘ Z& s1 Q” U( N. r, C% {​

2 ^/ `9 o3 D* c: E A(ω)P(ω)e 3 a* [) p6 Z& c9 [” u3 H

jωτ/ G’ U0 x  v& \; n& i0 u7 l

dωJ3 k3 k% j. B8 @& b

. m, x1 t0 @8 z& l6 e; r

设计不同的频域系数A(ω) A(\omega)A(ω)对应着不同方法,这里只介绍 PHAT(phase transform)方法,即取系数如下:

‘ B  D, w/ \  `  X: G

L, e( F0 Q! uA(ω)=1∣P(ω)∣ A(\omega) = \frac{1}{\left | P(\omega) \right |}

! T) W  E+ @, u2 l2 j; ?’ CA(ω)=

8 _( N- L& S/ O7 Y/ [$ ]5 ^∣P(ω)∣

– G0 @’ Y4 g) ?” L, Y7 {- V- p1. d% m0 G’ k’ A+ ]3 x3 I& x- U

​        1 I3 t; t* A4 C0 t6 ]” q

5 X5 F; G4 y. U” g

+ a” q, y: U4 t2 A+ c1 u; G% |/ h基本思想就是求时间差只需要相位信息,舍弃不相关的幅度信息以提高健壮性,可以看到当A(ω)=1 A(\omega)=1A(ω)=1的情况下就是经典互相关

” _- D/ C+ x’ d, wP(ω) P(\omega)P(ω)为复数,可以表示为∣P(ω)∣∗e−jωp \left |P(\omega)\right |*e^{-j\omega p}∣P(ω)∣∗e ) M) U; E; Y( Z% k% r

−jωp

; z2 y6 F9 b- \. n: a( b- u’ T ,去掉幅度信息后,就只剩相位信息e−jωp e^{-j\omega p}e 0 k4 y+ G! x1 p/ L% H7 Y2 y

−jωp: w. I3 e- K” V) e# ?! T, Q

了,要得到相位信息,可以用 P(ω)abs(P(ω)) \frac{P(\omega)}{abs(P(\omega))} ! d: R+ q* j7 X( j

abs(P(ω))A* Y$ H$ L% U; z

P(ω)`/ P( V7 o, G; w0 L+ o3 t

9 _( x+ t. T  I+ @# c” |! \/ Q# f 计算,也可以直接用matlab中的angle函数计算,即angle(P(ω)) angle(P(\omega))angle(P(ω)),# Z) |+ d5 O. V# I

& G/ u/ I% E3 {( n. y

具体得到更陡峭的峰值的理论解释如下,详情参见《麦克风阵列信号处理》P198

” ]: s! v/ K0 P, c0 i( }. b” \0 B0 m  u4 m( n( P( D

4 V3 O8 M7 _1 e2 _3 z/ a! a3 Y0 O

& O/ c! |! s0 x: f” U: L! b

$ U; b. n0 t2 j# ]* |& M

几行代码验证下:

/ K3 e’ F( i6 F’ j# l! {; x- T) G) W: x5 k, a1 ~

x1 = [1,2,3,7,9,8,3,7]’;7 ~1 s3 T  p6 d+ H’ y

x2 = [4,5,6,5,4,3,8,2]’;

5 O1 H* b/ o$ Y7 V

* K# a” P. }- v. @1 w2 H[tau,R,lag] = gccphat(x1,x2)

2 R: i, x3 C7 b6 q3 b7 P1 Y! j’ r1 G2 y” L: p

N = length(x1)+length(x2)-1;

$ e: |* z( _! e4 J. O: v) yNFFT = 32;” Z’ n8 B5 H: F5 W” Q

P = (fft(x1,NFFT).*conj(fft(x2,NFFT)));

+ a6 m6 F; q1 C# Z3 b6 @A = 1./abs(P);

% E& H* g% T: x- y7 `R_est1 = fftshift(ifft(A.*P));

$ U% V* `; g% Rrange = NFFT/2+1-(N-1)/2:NFFT/2+1+(N-1)/2;

6 ?, E3 e3 P1 V% A) R- UR_est1 = R_est1(range);: I! a  `0 Q# d6 E5 z

7 m  r/ S) q6 n! g8 Q

R_est2 = fftshift(ifft(exp(1i*angle(P))));3 q# S6 l# U& q

R_est2 = R_est2(range);6 j: a6 x1 |/ \  F

2 T, c2 @; n0 V

可以看到,三种不同写法得到的R_est1 、R_est2 与matlab自带函数gccphat计算得到的R相等。2 V* R2 ^0 v# s! h

* P- P3 R’ `# h7 u

那上面例子中的宽带语音信号,用GCC-PHAT方法得到具有陡峭峰值互相关函数,找到互相关最大时的点,结合采样频率Fs与与麦克风间距d Fs与与麦克风间距dFs与与麦克风间距d,就可以得到方向信息。频域计算互相关参考另一篇博客9 |6 f) @0 B( _3 p0 S

7 k’ G) L! g( V& |0 G##2.角度计算

* _: L/ l: r5 X  q4 f) I4 d上面的内容计算了两个麦克风的延时,实际中假设阵列中麦克风个数为N NN,则所有麦克风间两两组合共有N(N−1)/2 N(N-1)/2N(N−1)/2对,记第k kk个麦克风坐标为(xk,yk,zk) (x_k,y_k,z_k)(x

. g% R: c5 f  B9 o- yk7 @1 t! [7 x5 f’ ?; F

+ `0 q9 }9 R# z ,y ” e+ X7 D/ Q* U& t- u  L7 D’ m$ R

k% Q; p3 @# q’ l: j3 Q# y& [

​        ‘ x0 q+ r8 h” {6 X

,z ! B9 H/ J0 D9 H+ l  O

k

$ |1 {8 \$ a” W- z8 ~​        9 f( c8 `7 N! I$ I4 g

),声源单位平面波传播向量u⃗ =(u,v,w) \vec{u}=(u,v,w)

% i2 T2 ~! m) a. }% ]: F; \u

+ h( {: C2 z4 ^$ w* j: O  f =(u,v,w),如果麦克风k,j k,jk,j之间的延时为τkj \tau_{kj}τ

‘ A1 u0 C* _2 L$ _kj

2 Q4 J, i+ H! ~  j# z4 x  l9 p​        ) q! T. Y. n6 q# {, n. ]

,则根据向量关系有下式,其中c为声速,

6 j’ p- F. b3 u” b0 ?, c2 T! [9 r, A. K, f

c∗τkj=−(xk⃗ −xj⃗ )∗u⃗  c*\tau_{kj} = -(\vec{x_k}-\vec{x_j})*\vec{u}6 w7 G7 |) E0 j! C: b

c∗τ

2 {/ I- F5 ]” f/ okj

9 C! t2 M5 S- x9 F; \/ j2 |% K​        $ z+ f/ P3 |% l” M( P: X

=−(

$ X) y” Q’ Q0 _9 T2 I, zx

$ l! I$ _% F  {: A0 _( I/ hk

. j: B8 ^# ~5 w1 p- j​        ‘ {‘ e2 R. P3 [3 y# u’ [1 f* A$ R

& T  u& r) U* z4 N+ f3 x: h( W​        ) k7 h( J! |  w9 Y. B! `6 s0 w8 I

− ; F* ], d’ T1 C2 l, r

x , t0 R2 p) C* H& H

j* a# @$ j. ]’ c9 Q0 c* b

A/ q) M. U8 U4 T3 A

6 @; C4 f+ Q5 m6 P. C$ B) v​        $ f5 P/ J’ x) T* m6 ]- y

)∗

5 J7 o/ j! Z) V& e3 }; uu

* }& \) L/ Y, ]6 R0 a

2 }) g$ Z7 ^8 o% Z+ W/ k

^$ B# h1 e# k这样看起来不够直观,那就代入坐标写成标量形式如下:

3 \5 y4 m+ L0 D’ x’ E+ h0 m’ ^7 G( i. H( C  d& u” t0 j

c∗τkj=u∗(xk−xj)+v∗(yk−yj)+w∗(zk−zj) c*\tau_{kj}=u*(x_k-x_j)+v*(y_k-y_j)+w*(z_k-z_j)

6 q+ i! W- j) o’ t5 ec∗τ

W* Q* t( Y6 X7 t2 Wkj

8 [4 s! q5 J% Q+ y” o: z​

+ S% ?1 @) A& K! b& S6 p, G7 h2 E =u∗(x 5 }6 K$ @( p0 S- @0 k

k” ~2 t1 ]4 y0 n! `7 {! U

9 p( G* t$ L: p) E −x 2 h) Q$ l* i& I6 D. \- c

j

& x6 c, s! I# w! D​

) z- s% T6 G! I  R2 o) y$ {9 [ )+v∗(y – ^; e. |% S# [9 d4 i7 c0 V; ?) P* D

k

% A4 |8 k& H6 \’ N5 V​        5 _: |, k4 D’ q4 N

−y

& M: @# N8 {3 L% [j

s3 y- z, ]- H4 R6 Y+ o  u​

e( ?’ g# g” ?8 c4 V )+w∗(z , {* {, P” a’ _* n; ?. N

k

F$ e  _# t) h: t( U​

* J( Z5 {7 d) ~- O! L −z

/ ?4 p” o8 M/ W) r; t. R% K* d” Tj4 w$ v# P/ A. C: w+ S( o

​        ) m! p7 o% K9 Q3 N  u! F4 s

)

$ K$ H% }$ O; q) c* R2 T5 m0 [‘ ]

5 z5 T  S9 y1 Q& q; f0 N’ F当有多个麦克风时,每两个麦克风就可以得到一组上式,N个麦克风就会有N∗(N−1)/2个等式 N个麦克风就会有N*(N-1)/2个等式N个麦克风就会有N∗(N−1)/2个等式,声源单位传播向量u⃗ =(u,v,w) \vec{u}=(u,v,w) ) I# s0 z5 |, R7 P3 ^9 `

u

– a9 i” i0 X5 L) h. L; C5 W =(u,v,w) 有三个未知数,因此最少只需要三组等式,也就是三个麦克风就可以计算出声源方向,这里就先假定N=3 N=3N=3,可以得到方程组如下:9 t. O# Q8 L$ M2 ?

, }2 L4 z- H; X3 `3 b2 U0 z% j; e

c∗τ21=u∗(x2−x1)+v∗(y2−y1)+w∗(z2−z1) c*\tau_{21}=u*(x_2-x_1)+v*(y_2-y_1)+w*(z_2-z_1)c∗τ

+ l1 N; E2 |) e’ B” @211 V’ z5 |) W( ]! Y” m

n; P! j# `6 Y =u∗(x

% w: {% y5 C/ t’ V7 G3 ]/ G+ S1 V2. R3 C$ `1 b# a) h# U  E

​        3 u5 k% d5 P# M7 e

−x . s6 [( C’ K: [3 n) `” |/ w6 ~

1: C1 r5 g& P  H

3 g$ N6 }* G5 @9 L& Q )+v∗(y 3 E% f7 @’ R  O9 w+ t’ O$ a

2/ G$ k! o/ n. ?2 a4 F. h

‘ t, q/ \1 P( |0 ?2 Q −y : [# c) x  Q7 z. P3 Q* I’ e  Q

1

2 t9 [+ h: N9 v  [! k( Q) P4 g​

; c1 z) a2 S! O9 {+ z7 S8 ~/ A )+w∗(z & G6 N0 [& w+ i, I% w

2

E3 n0 }) l( \, {3 O​

9 f; }’ P* J8 Q$ S. X+ ]1 A  K −z 1 I( [! w+ A. A3 q5 I6 Q( y# ]’ A5 o6 o

1

. G+ F  ^+ f* X” K​        + \- N( N+ y/ X% x

)

% [9 B” E; V0 h3 L: c& Gc∗τ31=u∗(x3−x1)+v∗(y3−y1)+w∗(z3−z1) c*\tau_{31}=u*(x_3-x_1)+v*(y_3-y_1)+w*(z_3-z_1)c∗τ

0 `/ e* T7 z- H4 g31

$ Q5 K* H2 K$ Y% \8 m​

% n. x* j2 T; Z& j0 B5 h* r =u∗(x ( \6 z9 q. S6 C( F6 c0 e  ]

3/ S! O+ f- V/ m6 N9 @+ e

& N$ G! ]  f: t −x

$ k( C, |( l6 @, G# l- [* j6 [1) s- ?/ p% |7 d7 t” {” x3 c. f  G* G( i; ~

– G3 R6 u2 b7 N- a* R. M )+v∗(y

4 Q( {3 N9 `, `& L: j34 l- k* g% o: o  k

: ^1 c- y” Q: z: C −y + N% H3 s, H* j) |! w

18 J9 q/ K  c’ U0 u0 L- T/ n

+ C$ n4 B  Q. y# \4 N; F )+w∗(z

; T9 x6 ]; g+ c( F+ }* c3

7 d0 {” z2 V; d. I  v( w/ Q, d( q0 j* Y” q​

! Z  @# G5 i4 g6 W- v3 r −z

% L9 M0 [5 J: Z& s. ]1

2 U, o. e% A2 r’ J$ x​

. V4 V% x” A/ T! W )% Y- r( j9 N% P

c∗τ23=u∗(x2−x3)+v∗(y2−y3)+w∗(z2−z3) c*\tau_{23}=u*(x_2-x_3)+v*(y_2-y_3)+w*(z_2-z_3)c∗τ

4 ~; k! U. D9 ~* o) J8 B23

E. X+ J* S) ?6 ?1 \. ~: ]​        1 t- B- o& ~6 s+ ?4 U

=u∗(x , d/ U’ F4 }: D) O) \0 s

2

1 A- T( {  i’ v2 a/ w+ `​

* ~. K8 E* N1 P  S −x 5 D& _& [0 t3 t8 ~+ G

3

: O& P, L: u  k​        0 A/ T3 a1 p: w, `- q

)+v∗(y

, H, \& F9 _4 Z8 A2) _- e) R3 v: E$ w6 q4 t, m& W. l

. r$ F’ D; V! n, U$ C# u −y

* i) U: e5 b7 Q; [3

( ~) z( q8 R5 k$ R* S/ s​

9 U. h! O5 p( g9 d; Q( A% e )+w∗(z ” \’ Z- D# p5 C0 P! `  X

2

. k% V4 N, e5 L* d3 R1 u+ V​        1 E” J! P* e8 h- M6 A, P6 I) ^# f

−z 1 \8 v* `* Y* [2 f1 m

3

2 |3 r’ l) m/ g” W  K7 ~​        . [+ C7 Q+ b  R6 J( y) _

)! K8 R’ k0 m+ u+ u* ^. {* N

” |3 |$ B  A) u1 Q% ^% s: q# S写成矩阵形式

‘ z8 f6 L8 j- b( x2 I! K

% A- \5 e9 R# d/ C6 X; g( |2 R4 K8 @- y3 g6 j

/ \# y7 W+ M- A6 m4 v; K求出u⃗ =(u,v,w) \vec{u}=(u,v,w)

: j5 O% f. a7 }3 A( p& o! huU+ P7 @’ F% u6 f- X/ B5 y8 U; \& b

=(u,v,w) 后,由正余弦关系就有了角度值了

4 u8 l2 k# Q, F+ C( I+ ^” @3 q/ Q9 ]$ U( X* ~% m

θ=acos(1w) \theta=acos(\frac{1}{w})θ=acos( 3 ~, I  z’ h0 H/ Q3 \9 q

w- C( {  T0 x4 n3 U0 N5 {% m+ b

1- g0 L6 D  w! n4 ]; s$ H

$ Z7 Q8 I0 O2 R6 q( M )

5 y$ S” g) p: E& f4 n6 h” c1 u/ A” e; o/ Y1 D2 d- G; f3 j

α=acos(usin(acos(1w))) \alpha=acos(\frac{u}{sin(acos(\frac{1}{w}))})α=acos( , L8 v# L! @+ Q

sin(acos(

1 y) g6 k1 Q1 ^+ v5 Jw

6 q% \# l2 W/ h12 y$ Y1 b6 W! \3 I  H

/ `+ T$ |9 c0 a/ [/ g& D’ P ))

! d0 k  a; v( d5 C’ n3 [8 G: Nu

) ?’ Z9 ]1 o8 b# }: N​

‘ d) h& p  d+ K8 f% ]8 P’ ?0 D )

4 V’ p! v8 q, f9 I, L

% |” z3 N+ b, j8 p$ T当麦克风数量N>3 N>3N>3时,其实所有组合信息对于角度值的计算是有冗余的,这个时候可以求出所有组合的角度值,然后利用最小二乘求出最优解,这样可以利用到所有的麦克风的信息来提高角度估计的稳定性

1 L6 G; @5 r& H3 \5 V9 c# |# t; s% x) C* Z

References:

& C# B’ @. G- l6 k0 X  u. q6 y3 v9 z% x4 W- r, n

J. Benesty, J. Chen, and Y. Huang, Microphone Array Signal Processing. Berlin, Germany: Springer-Verlag, 2008.

‘ Q/ q7 z. `/ j7 S) U; F! DJ. Dibiase. A High-Accuracy, Low-Latency Technique for Talker Localization in Reverberent Environments using Microphone Arrays. PhD thesis, Brown University, Providence, RI, May 2000.

( C- i( ?, m” D7 @: ~J.-M. Valin, F. Michaud, J. Rouat, D. Letourneau, Robust Sound Source Localization Using a Microphone Array on a Mobile Robot. Proc. IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS), pp. 1228-1233, 2003.K; O% v( i  `6 J/ j8 D

————————————————

1 R, A( v, ^. ~9 Q版权声明:本文为CSDN博主「373955482」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。% k) J: C7 v& [3 O* b3 a

原文链接:https://blog.csdn.net/u010592995/article/details/797351985 L( A. V- E. r  Q  j% S; Z

/ @% n) r, R/ r7 c5 V9 a. ]# [” L& P9 T3 X2 ?’ R- b7 Q

_  v( t8 T) |1 g

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/193306.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 如何防止XSRF攻击

    如何防止XSRF攻击XSRF全称是cross-siterequestforgery(跨站点请求伪造),也称为CSRF,是一种常见的web攻击方式。攻击形式描述如下:1.用户登录并访问一个正常的站点http://www.biz.com;2.在同一个浏览器实例下,用户打开了恶意网站http://www.bad.com;(至于用户怎么会打开这个恶意网站,可能是恶意网站通过一些链接或者垃圾邮件等等形式诱…

  • open class and closed class_demo怎么发音

    open class and closed class_demo怎么发音importos#给一个列表,生成文件夹,并在其中新建txt文件,写入文件名内容#例如彭于晏文件夹下有彭于晏.txt里面有彭于晏三个字name_list=[“彭于晏”,”周润发”,”周杰伦”,”陈道明”,”成龙”,”李连杰”,”阿里”,”百度”,”字节跳动”]#批量新建文件夹的关键formkdir()fornameinname_list:os.mkdir(name)#makedirs()通用file_name=name+”.txt”

    2022年10月22日
  • zoj2812

    zoj2812zoj2812

  • 数据分析的具体案例(通过数据分析得到什么)

    今天给大家分享一个数据分析案例:线下连锁水果店销售数据分析案例,分析过程我也会以类动图的方式呈现给大家,真正意义上做到收藏即学会。目录1案例背景2问题确认与指标拆解题3问题解决思路4案例实操4.1利用分组分析找到亏损店铺做营销优化,实验验证结论4.2运用对比分析法解决哪类产品销售好的问题?4.3利用矩阵关联法找到销量好和利润高的品类4.4运用趋势分析法分析水果总需求如何?5结论分析报告1案例背景果多吃水果连锁超市是华北地区的热门线下水果超市。该超市覆盖华北5个省份,且在京津冀地区门

  • SFDC ActionFunction

    SFDC ActionFunctionmyActionMethod();//thisisjavascriptpu

    2022年10月22日
  • 领峰贵金属:黄金现货投资的魅力究竟在何处[通俗易懂]

    领峰贵金属:黄金现货投资的魅力究竟在何处[通俗易懂]  相信现在很多人已经听说过或者初步了解了黄金现货投资,很多人因为它赚到了大钱,也有人正想要投入到黄金现货投资当中,它的魅力究竟在何处,为什么那么多的人喜欢它?  第一:黄金现货投资简单易学。  (1)对比其它投资理财来说黄金现货的基础知识要容易很多,种类比较单一,所以选择上也不会出现像股票或者基金那样“万里挑一”的情况,是一种非常简单易学的投资理财产品。  (2)真正学起来,投资者们会发现有一些黄金现货的基本投资方式十分实用,新手投资者掌握了这些就可以进行简单的投资理财了,要比其它理财产品简单

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号