数学建模社区-数学中国

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

作者: ALUCARD_1797    时间: 2005-3-23 13:04
标题: [求助][讨论][原创]声波的积分漂移
本人目前正在开发一种新的音频编码器,在滤波器上遇到了问题,希望懂信号处理方面的大侠帮小弟一把。: |6 c9 K9 I& s) n! O! g
信号的图释3 {8 I$ |  a! E
http://www.piccube.de/uploads/d650f8f2d2.gif
3 S9 |' G' l" |' A3 c2 u& i8 o/ `# h
http://www.piccube.de/uploads/cd0002d0e9.gif/ N% r7 @0 \9 f) J4 n: D0 t

1 y/ U7 p2 T1 Z: T信号频率范围(44100,10)HZ1 x) ~" t7 _" j# G0 m1 `# E! t
信号振幅(-32768,+32767)9 O% H& m  ?6 N+ [9 f- f
信号都是N个由未知振幅\频率\相位的正弦信号叠加而成的
  v% @' w2 b2 {- e6 r) l; c: b) {7 k% oN是有限数量,也许是10个也许是50个也许是2个8 H% }/ z; e" p0 ]8 {/ c
特别的是,信号的振幅不是固定不变的,也就是说在t1时刻是x1而在t2时刻是x2
' ^/ X8 e8 x, I图中红色的是原始声音信号,白色的是经过算法处理后的信号。原始信号是完全没问题的,声音信号是从CD里面抓取的。
5 c6 x" o: z/ i8 r! N% g& r/ v' Q8 H红色原始信号经过了积分后变成白色信号,原本在0的位置上下震荡的信号漂移到了n的位置。现在要把信号矫正过来。绿色的线是0,有没有一种算法可以求出n。
5 I; R/ {) B9 g7 q. W* d( b相关的算法:: r& a; G6 ~3 E  a, \
滤波公式http://www.piccube.de/uploads/ef462128ea.gif$ W3 I+ `2 J& @  ~
7 n1 \- ?2 m4 C+ _9 `# w
double m_u_f=0;
$ J) K& u3 P8 v2 S# P& c0 w! Jfor(x=0;x<size;x++): u- ]+ Y7 ^' a9 t2 p8 |
{
0 Y9 f0 d  u. R$ i( V" w* _0 j% b m_u_f=pBuffer[x]+m_u_f;
0 @- m* N" p0 n/ v  L pBuffer[x]=m_u_f;: g( [8 f4 b- g: T  z! G7 U, z5 Y
}* V5 A7 j/ p$ t4 B4 [" B, R7 ?
算法很简单,就是对信号进行累加,但是实际上信号是经过了一个积分的过程。
* z$ Q" B) G' }- H/ t1 W" u  o7 E) L公式里面的X是时间,N是频率,a是初始时间。m_u_f里面的数值就是在x时刻等式右边的值。信号漂移的原因是N*cos(a/N)(就是画红圈的)这个在滤波过程中的定值所引起的。实际上只要求出这个定值就可以解决漂移的问题。但是N和a(a还包含了相位角的问题)在滤波之前是未知的,所以根本无发通过具体的参数来求出N*cos(a/n)。 3 p3 c$ e2 f4 N" U; v
目前我可以想到的方法就是,对滤波后的信号(白色的)通过某种算法求出振荡中心位置。: H! {+ B3 O$ g/ x2 ~+ F+ I
有一点我要说明的,我的采样缓冲区长度不可能很长,只有1/10秒,就是4410个采样点。于是频率的范围是(10~22050)HZ。这是编码器的外在条件。 6 ^3 l* l( E- K, `4 N
若想联系本人请加QQ286726462,验证:声波的积分漂移
作者: malei1984mm    时间: 2005-3-24 13:15
<>小弟谢谢了</P>




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