数学建模社区-数学中国

标题: [求助][讨论][原创]声波的积分漂移 [打印本页]

作者: ALUCARD_1797    时间: 2005-3-23 13:04
标题: [求助][讨论][原创]声波的积分漂移
本人目前正在开发一种新的音频编码器,在滤波器上遇到了问题,希望懂信号处理方面的大侠帮小弟一把。
* }+ W9 S1 x/ ~$ W信号的图释" a9 H$ v) M' \: Q9 o6 f
http://www.piccube.de/uploads/d650f8f2d2.gif
3 n! A2 L0 W4 b2 r* K
- y5 ]0 p. s2 o" U" f+ v4 Fhttp://www.piccube.de/uploads/cd0002d0e9.gif
0 p+ A( d  ~$ i8 x' @7 j" X0 b& j8 T$ i6 u! N1 c* Z3 y) I
信号频率范围(44100,10)HZ* w5 A7 {2 K4 S* ^4 \) d
信号振幅(-32768,+32767)& K6 J% A& G  \, ~) L1 q
信号都是N个由未知振幅\频率\相位的正弦信号叠加而成的+ r1 B# o1 K7 y; m" Q
N是有限数量,也许是10个也许是50个也许是2个* h: k! s1 W; e( U% e4 m
特别的是,信号的振幅不是固定不变的,也就是说在t1时刻是x1而在t2时刻是x2
; S8 F  w9 w  {+ [- [4 e图中红色的是原始声音信号,白色的是经过算法处理后的信号。原始信号是完全没问题的,声音信号是从CD里面抓取的。
! [5 O/ {2 F, K红色原始信号经过了积分后变成白色信号,原本在0的位置上下震荡的信号漂移到了n的位置。现在要把信号矫正过来。绿色的线是0,有没有一种算法可以求出n。, i+ e/ H, c5 V& D
相关的算法:
# i$ a) M* x/ _滤波公式http://www.piccube.de/uploads/ef462128ea.gif
# r& `1 y+ @) J
) D2 w/ B  k* X/ U3 fdouble m_u_f=0;
7 q  Z3 I3 R9 a' ~' K/ Lfor(x=0;x<size;x++)% Z$ a" [4 P+ j+ y# y% f
{" |7 H% H/ _# C5 z4 {+ u* T3 X) b8 m
m_u_f=pBuffer[x]+m_u_f;" _+ @# \% {' r4 n) `
pBuffer[x]=m_u_f;' D( S/ ~* ^4 N" T2 Z3 _0 y2 f
}
9 T. m! M" Z9 L算法很简单,就是对信号进行累加,但是实际上信号是经过了一个积分的过程。# W2 C; L' b: Y+ g  b
公式里面的X是时间,N是频率,a是初始时间。m_u_f里面的数值就是在x时刻等式右边的值。信号漂移的原因是N*cos(a/N)(就是画红圈的)这个在滤波过程中的定值所引起的。实际上只要求出这个定值就可以解决漂移的问题。但是N和a(a还包含了相位角的问题)在滤波之前是未知的,所以根本无发通过具体的参数来求出N*cos(a/n)。   K3 z$ a7 j0 J7 [- O0 `7 g
目前我可以想到的方法就是,对滤波后的信号(白色的)通过某种算法求出振荡中心位置。
( F, D' |! l; B. E; `有一点我要说明的,我的采样缓冲区长度不可能很长,只有1/10秒,就是4410个采样点。于是频率的范围是(10~22050)HZ。这是编码器的外在条件。 8 J- ?' m- k$ [) ~* m& X
若想联系本人请加QQ286726462,验证:声波的积分漂移
作者: malei1984mm    时间: 2005-3-24 13:15
<>小弟谢谢了</P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5