分数延迟数字滤波器的制作方法

文档序号:7534002阅读:471来源:国知局
专利名称:分数延迟数字滤波器的制作方法
技术领域
本发明涉及的是一个在线性处理情况下实现分数延迟操作的数字信号处理装置。
人们已经知道这类装置的原理。如

图1所示,按照传统的方法,在这类装置的上游有一排有限脉冲响应的内插滤波器,对每个输入信号进行专有的分数延迟操作。
每个有限脉冲响应内插滤波器是一个理想的分数延迟滤波器的近似。有限脉冲响应内插滤波器的系数是用计算得到的,或是用传统的最小方差法,或是用拉格朗日法。
经上面延迟过的信号在第二段时间里再经专有的线性处理,然后相加。人们还知道用于和上述的装置的逆装置的类似的装置。在这种情况下,一个输入信号被多工成相同的多个信号,这些信号再经专有的线性处理和专有的分数延迟操作。这些装置例如可用于间距(或英语为pitch)的分数分解的语言编码器。
在图1至3中示出一个已知的数字装置,其中的M个输入信号u1、u2、…、uM都在用滤波器T1至TM线性处理和用加法器S相加之前得到延迟。这类装置在传统的应用中例如用于天线的处理,此时,延迟的选择是随天线的瞄准角而变化的。
希望的延迟rk很少是取样周期的整数倍,因此延迟rk是由一个取样周期的整数再加上非0的取样周期的一个分数τ。后面,我们不考虑取样周期的整倍数延迟,这是非常易于实现的。所考察的要实现的延迟都限制为附加的取样时间的分数。
图1至图3所示的装置被提供M个输入信号uk,此处k在1和M之间变化。如图1所示,这M个输入信号uk中的每一个的分数延迟rk都是专有的。
于是就有有限个数要实现的分数延迟rk。可以找到这些分数延迟rk的一个较大的公因子ro。实际上是要对处在0到取样周期Te之间的ro的每个倍数实现一个内插滤波器。如图2所示,这样就要实现D个内插滤波器hi,分别用R0、R1、…RD-1标出,相应延迟的值分别为
,此处i在0到(D-1)之间变化。
对于每个滤波器,还要选择相同数目L个系数,实现D个滤波器hi(n),此处i在0到(D-1)之间变化,而n在0到(L-1)之间变化。
如图3所示,对于每个输入信号uk都用一个标号和RFk的内插滤波器hτk(n)作用,此处k在1到M之间变化,述及的滤波器是在图2中用Ri标出的D个滤波器hi(n)中的一个,此处,i在0到(D-1)之间变化。
现在,简要地回顾一下用来计算从R0到RD-1D个内插滤波器的系数hi(n)所用的公式和准则。
该τk是归一化的分数延迟的值,即
,此处rk是对这个信号所希望的分数延迟,而Te是取样周期。
设uk(n)是对一个模拟信号u0k(t)取样而得到的输入信号,假定取样的实现是正确的,如延迟的模拟信号u0k(t-τk-Te)取样所确定的那样,便可从理论上由uk(n)出发得到延迟的数字信号。事实上,技术人员懂得,根据所有样本都已知的信号uk(n)可以用内插公式得到相应的模拟信号u0k(t)u0k(t)=Σm=-∞∞uk(m)sin(π(tTe-m))π(tTe-m)]]>=Σm=-∞∞uk(m)sinc(tTe-m)]]>于是,延迟为rk的模拟信号为u0k(t-rk)=Σm=-∞∞uk(m)sinc(t-rkTe-m)]]>=Σm=-∞∞uk(m)sinc(tTe-τk-m)]]>然后由ukret(n)=u0k(nTe-rk)得到延迟的数字信号uretk(n)。设
此处,符号*是卷积运算符,而hidéal,τk(n)=sinc(n-τk)滤波器的频率传递函数hidéal,τk为
这样就在理论上存在一个理想滤波器hideal,τk,能够从取样信号uk出发得到延迟的取样信号。
事实上,这样的滤波器是不可能实现的,这是因为-其相加是无限的。
-这样滤波器是非因果的,就是说为了计算结果就必须知道未来的样本。
述及的非因果性便导致了只能接近一个用附加的常数延迟τ0的模型,记作hidél,τ+τ0(n)。
在实际上,如图3所示,用已知的方法,实现一种有限个数L个系数的滤波器,它非常接近于滤波器hidéal,τ+τ0。
在各种最广泛的应用中,所用的滤波器都限于有限脉冲响应滤波器。事实上,无限脉冲响应滤波器的构想是相当困难的,且要求准确的计算,因为所有的数据都是循环的,且计算的误差可以累加。还有,在非稳态的情况中,如在天线的处理中,滤波器的长存储器可以是有碍的,例如难于突然地改变天线的瞄准方向。
各种全通滤波器、无限脉冲响应滤波器的子集具有非常好的特性,即具有常数模量,然可惜的是幅度误差的不存在却伴随着比具有同样复杂性的有限脉冲响应滤波器有更大的相位误差。为避免这个问题就限制在有限脉冲响应滤波器范围内。
已知有不同的方法计算hτ接近滤波器hidéal,τ+τ0的有限脉冲响应滤波器的系数hτ(n)。
当RIF滤波器的有限的系数个数L选定时,第一种方法涉及的是选择一组系数hτ(n)(n在0到(L-1)之间变化)使得方差∫|Eτ(f)|2df最小,此处
fe是取样频率,而积分是在有用频带内进行的。
Eτ(f)常被用来定义价值函数(fonction de cot),这个函数用于判定滤波器的质量。这种方法称为M1方法。这一方法的结果是给出一个理想滤波器的一个截断了的和延迟了的模型hM1,τ(n)=sinc(n-τ0-τ)。
第二种方法是首先用前面的方法计算各个系数hτ(n),然后用一个变迹法窗口(fenêtre d’apodisation)w(n)去乘这各个系数。这种方法称为M2方法,其作用在于平滑滤波器的频率响应。
如hM1,τ(n)为用前面的方法得到的滤波器的系数,则系数hM2,τ(n)是用公式hM2,τ(n)=hM1,τ(n).w(n)得到的,此处,例如w(n)=0.54-
,则w(n)是已知的称为汉明窗口。
第三种方法是采用一组系数hτ(n),使归纳了的方差Cτ=∫W(f)|Eτ(f)|2df为最小,此处W(f)是频率加权函数(function de pondérationfrequentielle),可以对这个函数进行迭代调制直到得到满意的函数hM3,τ(n),而这里的积分量在有用频带范围内进行的。这种方法称为M3方法。这种方法导出一个线性方程组。
第四种方法是采用各个系数hτ(n),对于这些系数有
此处m在0到(L-1)之间变化。这种方法称为M4方法。用式hM4,τ(n)=Πk=0k≠0L-1τ-kn-k]]>来得到系数hM4,τ(n)。
在1996年1月的IEEE Signal processing magazine杂志中,Laakso、Vlimki、Karjalaien、Laine的文章“Splitting the unit delay,tools for fractional delay filter design”中可以找到有关无限脉冲响应滤波器和有限脉冲响应滤波器的多个例子以及这些滤波器间的比较。
如图3所示,在每个输入信号uk上应用一个用RFk标出的延迟滤波器hτk(n),此处τk是对信号uk专有的归一化的延迟,其值在
范围内,这里i在0到(D-1)间变化。
图1至3的装置就实现了用长度为L的内插滤波器RF1,…RFM对M个信号进行延迟的操作。这里有C1=M×L个运算。这里,将跟在一个相加后面一个相乘定义为一个运算。还有,存储D个滤波器的L个系数所需的存储器为C2=D×L个字。
这样的装置并不令人完全满意。如要延迟信号数目太多,则计算的负荷C1和存储内插滤波器的系数所需的存储器的容量C2太大以致会使装置实现太贵,累及其经济方面的成果。
本发明的目的在于推荐一种数字处理装置,它实现相同的处理且有相同处理精度,而所需的计算负荷和所需的存储器则显著减少。
根据本发明,是借助于对在一个共同通道和M个特有通道间传输的数字信号进行处理的装置来达到上述目的的。此述的装置具有一个线性处理的模块和专有滤波器,专有滤波器同时在M个专有通道中进行相移和有选择的幅度加重(accentuationd’amplitude choisie),述及的相移对每个特有的通道是专有的,而述及的幅度加重基本上对于所有的专有通道都是一样的。而且在前述的共同通道中有一个公共的反滤波器(filtred’inversion),其用来实现前述的选择幅度加重的幅度加重求逆。
根据本发明,共同通道可以是输入通道,亦可为输出通道。
本发明的其它特征和目的、优越性将在后面阅读参照作为非限制性的例子的附图的详细描述看到,有关的附图是图1是对输入信号实现分数延迟操作和特有线性处理的已知数字系统的功能方框示意图。
图2示出的是和图1相同的装置,这里明白地表示出分数延迟滤波器是用增量延迟(retard incrémentaux)实现的。
图3示出的是和图1相同的装置,这里明白地示出理想的延迟滤波器的频率传递函数接近已知装置中的频率传递函数。
图4是根据本发明的数字处理装置的功能方框示意图。
图5示出的是和图4所示为同一装置,这里明白地示出接近的目标滤波器(filtres-cibles)。
图6示出的是根据本发明的类似于在图4和图5中所示装置的装置,含有四系数相移滤波器(filtres de déphasage)。
在图4和图5中所示的根据本发明的装置,其对输入信号u1、…、uM处理的结果US和由图1到3中所示的装置所提供的结果相同且有相同的计算精度。
在这个装置中,M个输入信号中的每一个uk都首先通过第一个相移滤波器hdτk(n),这个滤波器在图4和图5中用FPk标出。
述及的相移滤波器FP1、…、FPM都是长度为L1的有限脉冲响应滤波器,其每一个都接近一个目标滤波器,且其所有的系数都是用如前面所指出的传统方法,如M3计算的。这样接近的目标滤波器并非是前面情况中的理想的延迟滤波器。所述的目标滤波器是在频域用Hcible,τ(f)=
来定义的,此处(τ+τ0)是希望的归一化的非整数延迟;τ0是附加的常量延迟,等于取样周期的一个整倍数;而Hcible(f)仅和频率有关。
后面,将实际上引入的归一化延迟的非整数部分称为归一化的分数延迟。
函数|Hcible(f)|对于所有的相移滤波器FP1到FPM都是相同的,因此函数|Hcible(f)|在每一个输入信号上都引入同样的输入幅度的加重。
每个输入的信号uk在经过一个在图4和图5中用FPk标出的相移滤波器hdτk之后,对于每个信号uk有相应的希望的分数延迟τk,再由对每个输入信号uk专有的线性处理滤波器Tk来实现的一个线性处理TTk,然后所有的信号相加。
在这个相加的直接的下游,安放一个幅度均衡滤波器(filtred’egalisation d’amplitude)I,在后面亦称为共用反滤波器。滤波器I的作用是对用标号FPk标出的相移滤波器huτk所引入的幅度加重|Hcible(f)|进行一个逆运算。在本发明的一个理想的实施方式中,是用逼近的方法来实现频率传递函数为
的滤波器的。
在多数情况下,述及装置的主要作用是将信号和噪声置于相反的相位,为的是加强有用信号而抑制噪声。在这些情况下,各支路间的相位和模量关系是很重要的。
因此,并不总是需要全部无失真。另外幅度均衡滤波器是可以包含在需要用于别的目的的滤波器中,如传递函数的均衡,如传感器的均衡。
述及的共用反滤波器I在这里是一个RIF滤波器,其所有的系数可以用前面描述的方法M1到M3来计算,亦可用滤波器概念的所有的传统算法来计算。
如果将一个线性滤波器,如共用反滤波器I在对信号实施相加的加法器的上游作用于每个信号,则这个滤波器对输出信号US产生相同的作用。
这样,一方面如单个共用反滤波器I置于加法器S之后,或如M个和这共用反滤波器I相同的滤波器置于加法器S之前,则对从P1到PM这M个通道中的信号和对共同的输出通道C的信号进行相同的处理。
再者,已经知道,对于给定的输入信号,一个由两个串联放置的线性滤波器构成的滤波器组将给出同样的输出信号,不管这两个滤波器是按什么顺序放置的。
另一方面,如将一个象在前面图4到图6中所描述的那样的共同反滤波器恰恰放在T1到TM这些专用的线性处理滤波器的每一个的之前或之后,则这种滤波器便对整个装置的输出信号US产生相同的作用。
于是便明白,一个置于加法器S之后的共用幅度反滤滤器I产生的效果和将M个同样的滤波器的每一个放在每一用FPk标出的专用相移滤波器hdτk与相应的用Tk标出的线性处理滤波器TT(k)之间的作用结果相同。
根据这两种应用就明白,按照图4放置的每对相移滤波器FPk/共用反滤波器I的组合对于输出信号US的作用和如将这每个组合并列放置在并列的每个相移滤波器FPk的位置的作用是相同的。
这样并列的每一对组合的传递函数等于相移滤波器FP的传递函数与幅度反滤波器I的传感函数的乘积,这样,这每一对组合就构成了一个滤波器,其频率传递函数接近于传递函数为
的理想延迟滤波器的频率传递函数。
根据本发明的一个变种,所述的反滤波器I可以同样是一个无限脉冲响应滤波器。幅度均衡滤波器或幅度反滤波器I并不随时间而改变,因此在这里不存在非稳态的问题。
如果L1是相移滤波器FP1到FPM的系数个数,L2是均衡滤波器I的系数个数,则根据本发明的装置就要实现C1=M·L1+L2个操作,一
(化合物C-134)室温下用1N盐酸(4ml)处理丙酮(15ml)中酮C-133(2g)的溶液1小时。真空浓缩反应,残余物用水稀释并用乙酸乙酯萃取。合并的有机层用5%碳酸氢钠溶液和水洗涤,硫酸钠干燥。过滤干燥剂并真空浓缩滤液,得到粗产物酮C-134。该粗产物通过用乙酸乙酯和甲苯的混合物在硅胶上色谱纯化,洗脱液得到纯的酮C-134,其通过从乙酸乙酯和己烷或醇重结晶而进一步纯化。
如需要对每个输入信号u1’、u1”、u1分别进行单个的线性处理TT(l’)、TT(l”)、TT(l)则需要在加法器S2的上游放置对每个输入信号u1’、u1”、u1进行线性处理的滤波器T1’、T1”、T1。
这种布置使得在一个装置,其中没有一个相同的相移滤波器的重复,这就不会在两个不同的地方实施同一个操作,也不对同一组系数存储两次。
现在我们介绍这样装置的一个实施例,即在图6中示意示出的装置。
在这个数字例子中,输入信号的有用频带为0=7kHz,取样频率fe为16kHz,要实现的滤波器的个数,亦称作题解(resolution),D等于20,输入的个数M=32,相移滤波器的长度L1=4系数,共用反滤波器RIF的长度L2=11系数。
用归纳最小平方算法(algorithme des moindres eorrés généralisé)或M3方法计算每个相移滤波器的四个系数,用线性位相和有限脉冲响应滤波概念的传统算法计算幅度反滤波器的七个系数,所有滤波器的系数都归一化以在16比特的DSP固定浮点制上进行计算,得到的系数如下i
hi(0) hi(1) hi(2) hi(3)00 145203276714513-1910.0513290326971577919820.1 12089325041706744930.1510926321891836874140.2 9806 3175619672107850.258737 3120820968146660.3 7723 3055022246190970.356769 2978923494241080.4 5878 2893124703297390.455052 27985258613600100.54293 26958269584293对于i=11,…,19的各值都是用一个对称的关系式hi(n)=hD-i(L1-1-m)计算的,在这个情况下,附加延迟τ0等于(L1-2)/2。
现在我们证明这个性质。
对于有限脉冲响应的幅度反滤波器,对于在0到L2-1=10之间变化的hegal(n),可以得到-217、747、-2914、8225、-18117、32767、-18117、8225、-2914、747、-217。
如相位并不需要是严格线性的,可以使用一个3级无限脉冲响应滤波器,L2=7系数,零点是-0.655和0.0016±0.0383i和其极点分别在-0.7089,和-0.5891±0.2122i。这种滤波器可以用已知的Yule-Walker计算方法计算。
上述的新的结构等效于传统的结构,并有内插滤波器htotal,此处htotal(n)=hi(n)*hégal(n),*是卷积运算。
在这种装置情况下,计算的负荷为C1=M·L1+L2=32×4+7=135个运算,而需要的存储器为C2=D·L1+L2=20×4+7=87字。此种滤波器的结构在图6中用功能方框的组合形式示出。
在对天线处理的情况下,例如根据天线瞄准角来选择延迟Ri,及i在1到M之间变化。
然后,对延迟归一化和量化。得到归一化延迟的整数部分di和分数部分ri,所用公式为
,di=floor(rnq,i)及ri=rnq,i-di,此处Round和floor函数分别是取整近似函数和整数部分函数。
将这样所实现的数字装置和从图1到图3所示的已知结构的滤波器相比较,此处分数延迟滤波器的系数的计算是用·M1方法及L=20(C1=640运算,C2=400字)。
·M2方法及汉明窗口,以及L=18(C1=576,C2=360)。
·M2方法与Blackman窗口,以及L=24(C1=768,C2=480)。
·M3方法与以及L=12,W(f)=1,在有用频带为0-7kHz(C1=384,C2=240)中·M3方法以及L=13,W(f)=1,在有用频带为0-7kHz(C1=416,C2=260)·M4方法,L=30(C1=960,C2=600)。
同样还给出了用根据本发明的一个装置所得到的结果,相移滤波器具有六个系数,其中对系数计算所用的方法是和前面描述的对根据本发明的四系数滤波器的系数的计算所用的方法相同。
各理想滤波器的相位随频频f线性减少。函数
称为“相位延迟”,在理想情况下为一常数。
图7示出对于D=20时,分数延迟的模量间的最大差值,即maxτ1,τ2(||Hτ1(f)|-|Hτ2(f)||)可以用这种方法校验用新方法所得的相移滤波器的质量。实际上,幅度反滤波器并不改变述及的模量的差,就是说对于Htotal(f)=Hdτ(f)Hégal(f)及对于Hdτ(f)所得到的结果是相同的。于是,这个图可用于校验相移滤波器hdτ的质量。
选择其它滤波器的等级,使得最大的幅度误差大约1dB,这相应的因子为1.12。在最坏情况下产生一个由幅度误差0.12(-18dB)而引起的余数,而不是干涉相消而抵消。
可以看到,除用M1方法计算外,所有滤波器的性能对于低频直到6kHz都有非常好的性能。最大的误差总是在最大的频率7kHz处。用新方法得的两个例子的最大误差是最小的。四系数滤波器的性能就满足要求,而六系数的滤波器的性能非常好,所有这样的滤波器都表现出非常好的结果。
图8示出的是相位延达
,此处τ(f)是滤波器hdτ的相位,而fe是取样频率。用这个图很难校验相位的质量,图为低频中的误差由于分母而被加重,且难于对两种方法进行比较。这个图还说明偶数长度的滤波器可以实现严格的整数和半整数延迟(称线性相位滤波器),而奇数长度的滤波器不能严格地实现整数和半整数相位延迟。这正是很少使用奇数长度的滤波器的主要原因。
图8还说明在最大频率处延迟趋于整数值,而不趋于半整数值。这种行为是因为实数列的严格的Fourier变换在最大频率处总是实数。由此得出相位要么是零,要么是π或者是不定,因为模量是零。这就说明为什么在最大频率处的滤波器的相位总是远离目标值。
图9示出相位的误差[τ(f)-τ,idéal(f)],这是相移的另一种表示。这种表示用来很好地比较滤波器的相位质量。相位的最大误差总是发生在最大有用频率7kHz处,四系数滤波器的相位误差略微大于大部分其它滤波器的相位误差。相反,而用新方法的滤波器的两个最大误差则很小。
图9还可在某个量化的精度上估价延迟。如滤波器的不够准确,则存储大数量的滤波器并非有利。在最大频率处,取样延迟对应于180°的相移。如估计最大相位误差的为3度,则可推出存储多于60个滤波器以使延迟的量化误差低于由滤波器引入的误差。如空闲存储器不能存储这样多的滤波器,则性能就降低。这种情况可产生于典型的实时环境中,例如对于DSP的内部存储器。在这种情况下新的结构可取得优良结果又降低其复杂性。
可以看到,拉格朗日(Lagrange)滤波器对于低频有优越的性能,然而其系数则随着有用频带而迅速增加。为保证在0-7kHz频带内的良好性能,就需要过多的系数个数。
在最坏的情况下(Lagrange滤波器除外)最大的相位误差等于7度这将导致0.12(-18dB)的余数,和由幅度误差引入的余数相同。
于是便考虑,甚至在破坏性的干涉的临界情况下,可对于每个分数延迟,对于每个输入仅用四个运算和四个要存储的系数来处理。与传统的内插滤波器(方法1至3)相比表明可以同时得到;·计算负担减少3到8个因子·所需的存储器减少3到8个因子并有较小的最大误差及好的整体性能。
述及的方法特别适用于天线处理波瓣的构成,因为内插法往往是处理中最昂贵的操作,所有L1=6的图都显示出这种方法用于精度要求很高的应用中同样是非常有效的。
这里指出,这两个的滤波器的例子占据了分数延迟滤波器实际应用的大部分情况。
事实上,一方面很少力图得到少于四个系数的延迟滤波器,也很少需要高于第二种例子,即L1=6的滤波器所得到的精度。
在下面的描述中,给出根据本发明及符合前面描述的数字滤波器的一个实施例,这里参量L1、L2及D分别等于4、19和60,这个例子是以用C语言写的程序的形式说明的。例程滤波器1.C的系数都是事先用前面叙述的|Hcible(f)|函数和W(f)函数计算好的。
图10所示的已知装置的目的在于提供M个专有输出信号,分别用Vk标出,其中k在1到M之间变化,是由同一个输入信号VE经一个滤波器Tk实施一个线性处理TT(k),跟着再由一个滤波器RFk实施一个分数延迟所得的结果。
这个问题的提出例如是为了间距的分数分解的语句编码器(codeurde parole à résolution fractionnaire du pitch)。多个语句编码器用下面的方程来确定间距Px=(x(n),x(n-1),…x(n-N+1))y=(x(n-p),x(n-p-1),…,x(n-p-N+1))p=argmax<x,y>||y||2]]>为了得到音调P的分数分解,应该延迟分数延迟信号x。
如图10所示,本装置在其上游有一装置D,首先将输入信号VE复制成M个相同于VE的信号VE’,然后每个信号ME’都通过一个线性处理滤波器Tk实现一个线性处理TT(k),接着是一个分数延迟滤波器RFk,引入一个分数延迟rk。
图11示出根据本发明的一个数字处理装置,一个输入信号VE被在这个装置中处理后,提供从V1到VM的M个相同于用图10所示装置得到的信号,可以看到所有的元件都和在图4到图6中的元件相同,即相移滤波器hdτk(n),k在1到M之间变化,用FP1、FP2、…、FPM标出;线性处理滤波器,k在1到M之间变化;及一个幅度反滤波器I。
将幅度反滤波器I应用于一个输入信号VE,将这个信号实现一个幅度预加重。更明确地说,这个I滤波器的传递函数具有一个非常数的模数及一个零相位。这样所得到的用VE”标出的信号然后通过一个装置D,多工分成M个相同的信号VE。每个信号VE再由一个滤波器Tk实施的一个专有的线性处理TT(k)(k在1到M之间变化),再经过一个用FPk标出的专用的相移滤波器hdτk。
每个相移滤波器FPk都是一个目标滤波器的近似,其传递函数具有如下之特点其相位接近于理想的分数延迟滤波器的相位,对输出信号引入的延迟rk,这就是说,其相位接近于-2πrkf。
它的模量是位于装置上游的幅度反滤波器的模量的反函数。如在图3和图4中的装置的情况,幅度反滤波器I恰在用FPk标出的相移滤波器hdτk(k在1到M之间变化)之前,与作用于每个多工分成的信号上具有相同的作用。
在图10所示的情况下的计算负担和在图1与图2所示情况下的计算负担一样,C1=M×L运算。同样,要将D个长度为L的滤波器存于存储器中,即C2=D×L字。而在图11所示的装置的情况下,计算的负担为C1=M×L1+L2运算,而所需存储器为D×L1+L2字,此处L1是相移滤波器的长度,L2是幅度反滤波器的长度。
和前面的方法相同,可以得到一个幅度预加重滤波器I/相移滤波器FPk的组合,其性能和长度为L的RFk滤波器的分数延迟滤波器的性能相同,而相移滤波器FPk的长度L1则较小,相对于延迟滤波器RFk的长度L可视作很小。于是图11所示的装置和图10所示的装置产生同样的结果,有同样的精度,而图11所示装置的计算负担和所需存储器则明显减少。
当然,本发明并不限于所描述的实施例,可根据其精神扩展到所有的变种。
特别地,共用的幅度加重滤波器I同时可以用于平滑传递函数,例如传感器的传递函数。
更为普通,本发明并不限于内插滤波器,还可用于其它的线性处理,或有大数量的输入,或有大数量的输出。C语言程序C语言主程序第一页<pre listing-type="program-listing"><![CDATA[/* 成束算法应用*/#include″cons.h″#include<stdio.h>#include<math.h>/* 天线几何尺寸 */const float xposition[]={0,.1,.2,.3,.4,.5,.6,.7,.8,.9};const float xmin=0;const float xmax=.9;/*滤波器1,用于相移,引入幅度失真 *//* 滤波器2,用于幅度均衡*/long filterl(short*,int,struct delay*,float*);int filter2(long*);struct delay *calcdelay(float,int);int main(int argc,char*argv[]){/**********************************************************//*说明 */struct delay *del; /* 整数部分及分数部分 */char *infile,*outfile,*parfile;/* 文件名 */int i,m;/*循环变量*/int delmax,base;/* 最大延迟,地址复位*/int neof,/*not_end_of file */long outl; /*输出滤波器1 */short out2; /*输出滤波器2 */float phi /* 瞄准角*/float shaping[M};/*麦克风权重 */short indata[INBUFFER][M];/*输入缓冲器 */long outdata[L2]; /* 用于第二滤波器的缓冲器 */FILE*infpt,*outfpt,*parfpt; /* 文件指针 *//*****************************************************************//* 给出控制行参量输入文件、输出文件、参量文件 */if(argc!=4){ printf(″use frac in_file out_fileparameter_file\n″);return(-l);}infile=argv[1];outfile=argv[2];parfile=argv[3];infpt=fopen(infile,″rb″);outfpt=fopen(outfile,″wb″);parfpt=fopen(parfile,rb″);if((infpt==NULL)|(outfpt==NULL)|(parfile==NULL)){printf(″unable to open input or output or parameter file″);return(-2);}/***************************************************************************//* 最大延迟*/delmax=(int)((xmax-xmin)*Fs/c);if(delmax+L1>INBUFFER){ printf(″Input Buffer too small″); return(-3);}]]></pre>
C语言主程序,第二页<pre listing-type="program-listing"><![CDATA[/***************************************************//* 由输入文件给出多工输入数据并对indata赋值 */fread(indata,M*sizeof(short),(delmax+L1),infpt);base=delmax+LI;/***************************************************//*对每个样本的主循环*/for(neof=1;neof>0;){/* 读出输入数据及指向参数*/base=((base+1)%INBUFFER);fread(&amp;indata[base]
,M*sizeof(short),1,infpt);neof=fread(&amp;phi,sizeof(float),1,parfpt);fread(shaping,sizeof(float),M,parfpt);/*对每个麦克风计算整数延迟及分数延迟*/del=calcdelay(phi,delmax);/*用延时-加权-相加成束*/outl=filterl(&amp;indata
,base,del,shaping);/*第二滤波器相移循环*/for(i=0;i<L2-1;i++) outdata[i]=outdatal[i+l];outdata[L2-1]=out1;out2=filter2(outdata);fwrite(&amp;out2,sizeof(short),1,outfpt);}return(0);}]]></pre>
C语言程序滤波器1.c,第1页<pre listing-type="program-listing"><![CDATA[/* 执行延时-加权-相加成束 *//*Wolfgang Tager,28.10.96 */#include″cons.h″#include″math.h″float abs(float);/*因缺省值是整数 */long filterl(short indata[INBUFFER][M],int base,struct delay*del,float shaping[M]){ static int flcoeff[RESOL][L1]= { {14520 ,32767 ,14513 ,-19}, {14108 ,32757 ,14932 ,50}, {13697 ,32734 ,15354 ,122}, {13290 ,32697 ,15779 ,198}, {12886 ,32646 ,16206 ,277}, {12486 ,32582 ,16636 ,361}, {12089 ,32504 ,17067 ,449}, {11697 ,32412 ,17500 ,541}, {11309 ,32307 ,17934 ,639}, {10926 ,32189 ,18368 ,741}, {10547 ,32058 ,18803 ,848}, {10174 ,31913 ,19238 ,960}, {9806 ,31756 ,19672 ,1078}, {9444 ,31586 ,20106 ,1202}, {9087 ,31403 ,20538 ,1331}, {8737 ,31208 ,20968 ,1466}, {8392 ,31001 ,21397 ,1607}, {8055 ,30781 ,21823 ,1755}, {7723 ,30550 ,22246 ,1909}, {7398 ,30308 ,22666 ,2069}, {7080 ,30054 ,23082 ,2236},{6769,29789,23494,2410}, {6465,29514,23902,2590}, {6168,29228,24305,2778}, {5878,28931,24703,2973}, {5596,28625,25095,3174}, {5320,28310,25481,3384}, {5052,27985,25861,3600}, {4792,27651,26234,3823}, {4539,27309,26600,4054}, {4293,26958,26958,4293}, {4054,26600,27309,4539}, {3823,26234,27651,4792}, {3600,25861,27985,5052}, {3384,25481,28310,5320}, {3174,25095,28625,5596}, {2973,24703,28931,5878}, {2778,24305,29228,6168}, {2590,23902,29514,6465}, {2410,23494,29789,6769}, {2236,23082,30054,7080}, {2069,22666,30308,7398}, {1909,22246,30550,7723}, {1755,21823,30781,8055}, {1607,21397,31001,8392}, {1466,20968,31208,8737}, {1331,20538,31403,9087}, {1202,20106,31586,9444}, {1078,19672,31756,9806}, {960 ,19238,31913,10174}, {848 ,18803,32058,10547}, {741 ,18368,32189,10926}, {639 ,17934,32307,11309}, {541 ,17500,32412,11697}, {449 ,17067,32504,12089}, {361 ,16636,32582,12486}, {277 ,16206,32646,12886},{198,15779,32697,13290} {122,15354,32734,13697} {50 ,14932,32757,14108}};]]></pre>
C语言程序、滤波器1.c第二页<pre listing-type="program-listing"><![CDATA[ long filtout,/* 对于快速准确结果的整个计算, 对单个麦克风不溢出 因为sum_over_i(abs(f1 coeff[r][i]))<65536*/float sumout=0;int m,i,firstel;/* 循环计数,分数滤波器的第一元素 *//******************************************************//*延时-加权-求和 */for(m=O;m<M;m++){ filtout=O, firstel=base-del[m].integer, /*整个延迟补偿*/ for(i=0;i<L1;i++)filtout+=flcoeff[del[m].frac][i]*indata[(firstel-i+INBUFFER)%INBUFFER][m]; sumout=sumout+shaping[m]*filtout;}/******************************************************//* 如需要,归一化和饱和,(假如sum(abs(shaping))<M,不出现 */sumout=(sumout/M);sumout=sumout/(11<<16);if(abs(surnout)>32767){printf(″\nsumout filter l exceeds 16 bits%f″,sumout);printf (″\nlimited to saturation value″);if(sumout>O) sumout=32767;else sumout=-32767; end getchar(); } return((long)sumout);}]]></pre>
C语言程序,计算延迟.c,滤波器2.c和cons.h<pre listing-type="program-listing"><![CDATA[/* 计算平面波的整数和分数延迟 *//* 射到按角度的线性序列 *//*可用于别的序列和/或近场方程 *//*Wolfgang Tager,28.10.96 */#include″cons.h″#include<math.h>#include<stdio.h>struct delay *calcdelay(float phi,int delmax){extern float xposition[];extern float xmax;static struct delay del[M];int m;float tmp;for(m=0;m<M;m++){ tmp=delmax-(xmax-xposition[m])*cos(phi)*Fs/c+.5 /RESOL; del[m].integer=(int)tmp; del[m].frac=(int)(RESOL*(tmp-del[m].integer));}return del;}/* 幅度均衡滤波器 *//*Wolfgang Tager,28.10.96*/#include″cons.h″int filter2(long* outdata){ static int f2coeff[L2]={-30,66,-189,512,-1246,2760,-5649,10760,-19311,32767,-19311,10760,-5639,2760,-1246,512,-189,66,-30};char shift=17;/* sum(abs(f2coeff))<217*/int i;float filtout=0;for(i=0,i<L2;i++) filtout+=f2coeff[i]*outdata[i];return((int)(filtout/(Il<<shift)));}#define M 10#defineINBUFFER1000#defineRESOL 60#defineL1 4#defineL2 19#defineFs 8000#definec 340.struct delay{ int integer, int frac;};]]></pre>
权利要求
1.一种对在一个共同通道(C)和M个专用通道(P1、…、PM)之间传输的数字信号的处理装置,其中有一线性处理模块(T1、…TM),其特征在于它有对M个通道(P1、…、PM)中的每一个同时进行选择性地幅度加重和相移的专用滤波器(FP1,…,FPM),述及的相移对每个专用的通道(P1,…,PM)是特征的,而述及的幅度加重则对所有的专用通道(P1、…、PM)大体上是相同的,其特征还在于在述及的共用通道(C)有一个共用反滤波器(I),用来对述及的选择的幅度加重进行逆幅度加重。
2.根据权利要求1的装置,其特征在于述及的共用通道(C)是输入信号(VE)的接收通道,还在于述及的M条专用通道(P1、…、PM)是专用输出信号(V1、…、VM)的传输通道。
3.根据权利要求1的装置,其特征在于述及的M条专用通道(P1、…、PM)是专有的输入信号(U1、…、UM)的接收通道,还在于述及的共用通道(C)是输出信号(US)的传输通道。
4.根据权利要求1到3中某一项的装置,其特征在于述及的M个专用滤波器(FP1、…、FPM)中的每一个都有一个频率传递函数,该频率传递函数近似为一个相位为2πfr的函数,此处f是频率,r是包含有分数部分的每个专用通道(P1、…、PM)特有的延迟。
5.根据权利要求1至4中任意一项的装置,其特征在于M个专用滤波器(FP1、…、FPM)中的每一个都有一个模量接近于幅度加重函数的频率传递函数,述及的幅度加重函数为一平滑函数,在传输的信号取样的频率一半处的周围有较小值。
6.根据权利要求1至4中任意一项的装置,其特征在于述及的M个专用滤波器(FP1、…、FPM)中的每一个具有一个频率传递函数,这个频率传递函数的模量接近于形式为|Hcible(f)|=X+Y[1+cos[2&pi;ffe]]]]>的幅度加重函数|Hcible(f)|,此处比值X/Y在0到0.3之间。
7.根据权利要求6的装置,其中取X等于0.06,取Y等于0.47。
8.根据权利要求1至7中某一项的装置,其特征在于线性处理模块有与专用滤波器(FP1、…、FPM)邻接的专用线性处理滤波器(T1、…、TM)。
9.根据权利要求3与权利要求4至8中某一项相结合的装置,其特征在于其中在共用反滤波器(I)的上游有信号加法装置(S)。
10.根据权利要求8与9相结合的装置,其特征在于述及的加法装置(S)是直接位于述及的专用线性处理滤波器(T1、…、TM)中的每一个的下游。
11.根据权利要求2与权利要求4至8中某一项相结合的装置,其特征在于在共用反滤波器(I)的下游有一多工装置(D),将一个信号分成多个与这个信号相同的信号。
12.根据权利要求8和11相结合的均衡装置,其特征在于述及的将一个信号分成多个与这信信号相同的信号的多工装置(D)是直接位于述及的专用线性滤波器(T1、…、TM)的每一个的上游。
13.根据权利要求1至12中某一项的装置,其特征在于述及的共用反滤波器(I)是一个有限脉冲响应滤波器。
14.根据权利要求1至12中某一项的装置,其特征在于述及的共用反滤波器(I)是一个无限脉冲响应滤波器。
15.根据权利要求1至14中的某一项的装置,其特征在于述及的专用滤波器(FP1、…、FPM)中的每一个都有相同数目L1个系数。
16.根据权利要求15的装置,其特征在于对于两个专用滤波器h1和h2,其相应的归一化分数延迟相对于等于取样频率一半的延迟为对称的,其中只有一个滤波器的系数h1(n)存储于存储器中,而另一个滤波器的系数h2(n)由关系式h2(n)=h1(L1-1-n)导出,n在0到(L1-1)之间变化。
17.根据权利要求9与权利要求10、13至16中任一项相结合的装置,其特征在于将附加的加法装置(S2)安放在某些专用滤波器(FP1)的上游,其每一个都接收将用同一个分数延迟器延迟的多个输入信号,以致述及的装置没有两个相同的专用滤波器(FP1、…、FPM)。
全文摘要
一种对在一个共同通道(C)和M个专用通道(P
文档编号H03H17/00GK1253672SQ9880459
公开日2000年5月17日 申请日期1998年3月26日 优先权日1997年3月28日
发明者沃尔夫冈·塔格 申请人:法国电信公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1