小数延迟滤波器

转至http://www.cnblogs.com/xingshansi/p/7648274.html

作者:桂。

时间:2017-10-10  22:38:46

链接:http://www.cnblogs.com/xingshansi/p/7648274.html 


前言

阵列信号处理中,经常用到小数延迟(fractional delay,FD)的思路,例如Beamforming、GSC等等,本文摘录几个小数延迟的实现方式,不打算做系统性的梳理,具体可参考课件。

一、问题模型

给出用到的资料:

1)部分code:网盘code.

2)stanford课件,对应链接:https://ccrma.stanford.edu/~jos/Interpolation/

3)Beamforming应用实例:http://www.labbookpages.co.uk/audio/beamforming/fractionalDelay.html

以均匀线阵为例:

设麦克风阵列共用M个阵元,中心为参考点,阵元间距为d,信号入射角为θ,声音传播速度为c,则根据几何知识,第m(0≤m≤M-1)个阵元的时延为τm = (d/c) sinθ(m-(K-1)/2)。

麦克风采集的是数字信号,设采样周期为T,则对时域离散的信号来说,时延为D = τ/T。通常D不是一个整数,而对离散信号来说,整数时延才有意义。对于非整数D,可以分解为整数部分和分数部分D = ⌊D⌋ + d,式中,⌊D⌋为D的向下取整,0≤d<1。对于非零的分数部分d,此时信号实际值介于两个相邻采样点之间,即分数延迟。在实际处理中,可对d四舍五入取整,然后加上⌊D⌋,得到近似整数时延,但这种方法处理的结果不够精确。为了得到精确的结果,通常借助小数延迟的思路。

二、小数延迟滤波器

  A-一阶FIR设计

思路主要来自Taloy一阶近似:

从而

即:

其中η为对应的小数延迟,滤波器架构(低通信号有效):

  B-一阶IIR设计

此时对应的滤波器为全通滤波器(All pass),近似逼近

滤波器响应:

滤波器架构:

对应时间延迟:

   C-Sinc逼近

根据小数延迟滤波器的特性:

  • 幅度响应:全通
  • 相位响应:线性

得出滤波器:

对于采样信号,需要限定在-fs/2 ~ fs/2之间,即相当于对滤波器进行了频域截断,截断的滤波器特性:

求解该滤波器:

容易证明该滤波器是原型滤波器均方误差最小的逼近。 

1

2

3

4

5

6

7

8

9

%线阵为例

delay = d*sin(theta)*fs/c*(0:1:element_num);

n = -64:63;

i = 3;%延迟的阵元

h = sinc(n+delay(i));

H = zeros(1,256);

H(1:128) = h;

output = ifft((fft(sig)).*(fft(H)));%sig为输入信号

%相比时域卷积,频域点乘进一步节省资源

  存疑:如果不是[-pi pi],而是取[0 2*pi],即sin(2*pi*f0*t)其中f0为大于fs/2的信号,简单的逼近结果错误,延迟如何实现?

已解决,具体参考:过采样的小数延迟实现。

  D-Sinc加窗

由于C中滤波器存在截断,防止能量泄露的一个常用思路就是:加窗截断。

即:

α < 1 provides for a nonzero transition band。

对应code:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

function h = hsincw2(L,d,wp,win)

% HSINCW2

% MATLAB m-file for sinc windowing method for FD filter design

% h = hsincw2(L,d,wp,win) designs an (L-1)th-order FIR

% filter to approximate a fractional delay of d samples,

% where 0 <= d < 1, wp is the passband of approximation and

% win is a length-L window function

% (e.g., win = chebwin(L,ripple), with sidelope ripple in dB).

% Output: length-L filter coefficient vector h

% Function Calls: standard MATLAB functions and sinc.m

%

% Timo Laakso 23.12.1992

% Revised by Vesa Valimaki 19.10.1995

% Last modified 14.01.1996

 

N = L-1;                 % filter order

M = N/2;                 % middle value

if (M-round(M))==0       % if L is even...

        D = M + d;           % D = M + d

        else D = M + d -0.5; % ...otherwise

end;

b = (0:N)-D;    % sample instants

h = sinc(wp*b); % shifted & sampled sinc function

h = h.*win;     % windowing by the given window function

  E-拉格朗日插值

该思路主要是借助拉格朗日插值,近似得出小数延迟位置的数值。关于拉格朗日插值法的介绍有很多。

滤波器逼近:

基于Taloy展开的性质:

这一特性符合拉格朗日插值的思路,利用此思路:

得出滤波器实现架构

对应code:

1

2

3

4

5

6

7

8

9

10

11

function h = lagrange(N, delay)

%LAGRANGE h=lagrange(N,delay) returns order N FIR

% filter h which implements given delay

% (in samples). For best results,

% delay should be near N/2 +/- 1.

n = 0:N;

h = ones(1,N+1);

for k = 0:N

index = find(n ~= k);

h(index) = h(index) * (delay-k)./ (n(index)-k);

end

  不同插值个数对应的系数:

  F-Farrow滤波器

该思路为多项式拟合,即将每一阶h看作是多项式拟合:

滤波器可表述为:

简化:

α可存在RAM里,利用查找表直接调用,便可以实现快速的小数延迟。

其中,参数求解:

对应实现架构:

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 小数延迟FIR滤波器设计是优化阵列信号处理的重要部分。这种滤波器设计旨在使用离散时间信号处理技术来延迟和过滤输入信号。在优化阵列信号处理中,小数延迟FIR滤波器的设计可以用于调整信号的延迟,以达到滤波器的最佳性能。 小数延迟FIR滤波器设计的关键是确定滤波器的系数。首先,我们需要确定所需的延迟时间,这取决于信号处理的具体要求。然后,使用传统的FIR滤波器设计方法,如窗函数法或最小均方误差法,来计算滤波器的系数。这些方法可以确保滤波器具有所需的频率响应和幅度特性。 在进行小数延迟FIR滤波器设计时,我们还需要考虑到采样率的影响。具体来说,如果信号的采样率与滤波器系数的延迟时间不匹配,可能会导致失真或频率偏移。为了避免这种情况,我们可以使用插值或抽取技术来调整采样率,以便滤波器的性能能够得到最大的优化。 总的来说,小数延迟FIR滤波器设计是优化阵列信号处理中的重要任务。通过选择合适的滤波器系数和调整采样率,可以实现所需的延迟和信号过滤效果,从而提高信号处理系统的性能。 ### 回答2: 《优化阵列信号处理(上册)》介绍了小数延迟FIR滤波器的设计方法。小数延迟FIR滤波器被广泛应用于信号处理领域,特别是在音频处理和通信系统中。 小数延迟FIR滤波器是一种数字滤波器,它具有对输入信号进行滤波并引入延迟的能力。小数延迟FIR滤波器的设计涉及到冲激响应的设计和滤波器系数的计算。 在设计小数延迟FIR滤波器时,首先需要确定所需的频率响应。可以使用数学工具或者滤波器设计软件来确定所需的频率响应。 接下来,需要选择适当的滤波器结构和延迟单位。常见的滤波器结构包括直接形式、级联形式和频率抽取形式。 然后,需要选择滤波器的阶数和滤波器窗函数。滤波器的阶数决定了滤波器的复杂度和性能,而窗函数可以用于调整滤波器的频率响应。 最后,需要计算滤波器的系数。可以使用传统的离散时间傅立叶变换方法或者最小二乘法来计算滤波器的系数。 小数延迟FIR滤波器的设计还需要考虑实现的复杂度和性能要求。设计人员可以根据实际应用的需求来选择合适的设计方法和算法。 总之,小数延迟FIR滤波器的设计是一项复杂的任务,需要考虑多个因素,包括频率响应、滤波器结构、阶数和窗函数等。通过合理的设计和优化,可以实现高性能的小数延迟FIR滤波器。 ### 回答3: 小数延迟FIR滤波器是一种常用的数字滤波器,用于信号处理中的优化阵列。在优化阵列信号处理中,小数延迟FIR滤波器设计是一项重要的任务。 小数延迟FIR滤波器是一种以零相位响应为特点的数字滤波器。其设计过程主要包括以下几个步骤。 首先,确定滤波器的设计要求,包括需要达到的滤波器特性、通带和阻带的频率范围,以及设计的误差限制等。 然后,选择适合的滤波器设计方法,常用的包括窗函数法、频率抽取法等。窗函数法是一种经典的小数延迟FIR滤波器设计方法,其基本思想是通过选择一个合适的窗函数来实现对频率特性的控制。 接下来,根据选择的滤波器设计方法,确定滤波器的阶数和所需的插值因子。阶数决定了滤波器的复杂度,而插值因子则影响了滤波器延迟性能。 在确定了阶数和插值因子之后,通过将滤波器的系数进行优化,可以获得具有较好性能的小数延迟FIR滤波器。系数优化的方法有很多,常用的包括最小二乘法、频域约束法等。 最后,对设计的滤波器进行验证和调整。通过验证滤波器的频率响应和相位特性,可以判断滤波器是否满足设计要求。如果不满足,则需要对滤波器的参数进行调整,重新进行优化和验证,直到满足要求为止。 综上所述,小数延迟FIR滤波器的设计是优化阵列信号处理中的重要任务。通过合理选择设计方法、确定阶数和插值因子,以及进行系数优化和验证,可以得到性能较好的滤波器,从而实现对信号的优化处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值