数学建模社区-数学中国

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

作者: ALUCARD_1797    时间: 2005-3-23 13:04
标题: [求助][讨论][原创]声波的积分漂移
本人目前正在开发一种新的音频编码器,在滤波器上遇到了问题,希望懂信号处理方面的大侠帮小弟一把。
7 K7 m: {: {. }% u, q信号的图释: k/ ^6 p) y9 J" t6 K2 g# z8 y3 v
http://www.piccube.de/uploads/d650f8f2d2.gif
; R/ A. _2 c. p, z+ ^+ l1 _6 i9 L5 ^  {
http://www.piccube.de/uploads/cd0002d0e9.gif
# B. \- w4 j: m2 S7 b8 V! b
  ^7 c- e! D0 K6 J* x5 G' H信号频率范围(44100,10)HZ
2 G" N$ i* m/ c7 ~9 U' `信号振幅(-32768,+32767)) A, A8 L3 }8 I6 O$ x4 j# H
信号都是N个由未知振幅\频率\相位的正弦信号叠加而成的1 G: H6 i* w" H, c/ t
N是有限数量,也许是10个也许是50个也许是2个8 x! g! }, R: ]! B
特别的是,信号的振幅不是固定不变的,也就是说在t1时刻是x1而在t2时刻是x2. G1 N+ {; b% {7 q
图中红色的是原始声音信号,白色的是经过算法处理后的信号。原始信号是完全没问题的,声音信号是从CD里面抓取的。$ Q; o# h9 H8 k' t# f
红色原始信号经过了积分后变成白色信号,原本在0的位置上下震荡的信号漂移到了n的位置。现在要把信号矫正过来。绿色的线是0,有没有一种算法可以求出n。
$ X6 g: `$ z7 m! N' ^- B相关的算法:
* J- u+ C- |  S$ P1 I滤波公式http://www.piccube.de/uploads/ef462128ea.gif3 ?& c0 n- y: e: a' n6 W! E: w# A
9 f' r6 u: e( Z  _, l5 E" H% N
double m_u_f=0;7 U3 `3 T. b0 f0 D
for(x=0;x<size;x++)* f5 a7 f5 A" j0 r3 J% r
{; K; r0 a4 r6 w1 Z8 [. ~5 ~% r
m_u_f=pBuffer[x]+m_u_f;
( v3 t/ }0 W, I4 R1 ]2 r. l3 x pBuffer[x]=m_u_f;
  S8 U: O5 o' N( ?9 @; x) C8 Q+ w9 R}" ~$ l! J6 O% g$ D4 g
算法很简单,就是对信号进行累加,但是实际上信号是经过了一个积分的过程。
; a* ]# W: \! L1 m9 d; D公式里面的X是时间,N是频率,a是初始时间。m_u_f里面的数值就是在x时刻等式右边的值。信号漂移的原因是N*cos(a/N)(就是画红圈的)这个在滤波过程中的定值所引起的。实际上只要求出这个定值就可以解决漂移的问题。但是N和a(a还包含了相位角的问题)在滤波之前是未知的,所以根本无发通过具体的参数来求出N*cos(a/n)。 / V7 @. l8 J  F& ~2 ^
目前我可以想到的方法就是,对滤波后的信号(白色的)通过某种算法求出振荡中心位置。
: o( ~" K- m( L7 I) }有一点我要说明的,我的采样缓冲区长度不可能很长,只有1/10秒,就是4410个采样点。于是频率的范围是(10~22050)HZ。这是编码器的外在条件。
; d5 {! U5 B3 u" @5 h2 F3 d若想联系本人请加QQ286726462,验证:声波的积分漂移
作者: malei1984mm    时间: 2005-3-24 13:15
<>小弟谢谢了</P>




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