开发者社区> 我爱matlab> 正文

基于matlab的farrow滤波器仿真

简介: 基于matlab的farrow滤波器仿真
+关注继续查看

1.算法描述

   目前的通用做法就是采用多项式插值滤波器去实现一些分数倍比较大的采样率转换。同时采用farrow结构实现更简便,即采用farrow类型滤波器来实现更为简便,farrow类型滤波器也称抽取滤波器。一般的数学模型为重采样模型为,采样信号x(mts)经过内插器h(t),输出信号:在时刻t=kti对信号进行重采样,输出信号:假设h(t)是特定的脉冲响应,这里的目的是计算t=kti时刻y(kti)的采样值,因此首先需要定义x(mts)的采样基准时刻mkts,这个时刻刚好在t=kti时刻之前,因此其中int[z]表示不大于z的最大整数,mk为插值基点,决定输入序列中参与运算的采样点,由插值时刻t=kti决定。因此插值时间t=kti可表示为mkts加上一个正小数部分的求和形式:代入得到最后的结果:其中参数uk为误差间隔,决定内插滤波器冲击响应系数,其范围为uk∈[0,1)。插值基点mk和误差间隔uk表示了ts和t之间的关系,如图2所示。而对于多项式插值滤波器来讲,得到通用的插值公式如下:其中lk(uk)的如果采用4阶拉格朗日插值得到的结果为:和得到转化后的结果:式中的a1、a2、a3、a4分别为:和a4=x(mk+1)。最终转换成farrow类型滤波器实现方式:y(n)=((a1uk+a2)uk+a3)uk)+a4。其中a1、a2、a3、a4可以分别写成滤波器组的形式。滤波器系数coeff分别为{-1/6、1/2、-1/2、1/6},{1/2、-1、1/2、0},{-1/3、-1/2、1、-1/6},{0、1、0、0}。其中插值基点mk和误差间隔uk的计算过程在前面已经有描述过。而在fpga实现的过程当中主要以定点类型的数据进行运算,需要将正常的浮点型数据量化成整形数据。在上述公式中,需要量化的系数主要是滤波器系数coeff和误差间隔uk。对于farrow类型滤波器来说,需要选择合适的量化位宽,保证对于频谱的幅频响应满足,同时也要防止滤波器不要溢出。

    farrow滤波器是一种连续可变时延的分数时延滤波器,这种滤波器的结构是由farrowcw于1988年提出,起初是用来解决声纳学中的分数时延问题。普通数字延时滤波器虽然结构简单,但系数计算过程复杂,在延时参数快速变化时,系数更新速度无法满足实时性要求,在工程应用上受限制。采用farrow结构数字延时滤波器能够更加灵活高效地进行分数延时滤波,延时参数改变时,无需重新计算滤波器系数,更容易在现场可编程门阵(fpga)上实现。信号处理的fpga实现过程中,往往需要大量消耗的乘法资源,从而导致fpga的乘法器资源成为系统瓶颈,本设计介绍了一种基于fpga的farrow滤波器设计方法,该方法采用对称结构的滤波器求解方法,充分利用乘法资源,高效实现farrow滤波器功能。

  farrow滤波器的基本结构如下:

83924da252ecf73e62175cc84209dd6b_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

Farrow滤波器的原理:

image.png

   其中,μm表示当前输出抽样点与其前面输入抽样点之间的距离,且有0≤μm<1。由(5)式即可得出一种实现SRC滤波的多项式滤波器,一般称为Farrow结构,该结构的联络图如图3所示。对于距离原来抽样位置为μm的任何输出抽样值,若用t=μm代入所在位置的分段多项式就可以计算出来,而不需要存储这些抽样值。 

2.仿真效果预览
matlab2022a仿真结果如下:

95206ffbe854e7284525d0290ef39015_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
ee9eb7b733f2cf8a929b60b0490e61b4_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
846fed0d9b812a9494733e2ae9a37a06_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

3.MATLAB核心程序

L = N+1;             % filter length;
Npt = 256;           % no. of frequency points for plots
w = (0:1:Npt-1)/Npt; % frequenc scan (0,1)
 
delay = [0 0.1 0.2 0.3 0.4 0.5];   % delay range x=0..0.5
Nfil = length(delay); % number of filters
 
h = zeros(1,L);      % impulse response vector
hvec=zeros(Nfil,L);  % impulse response coefficient matrix
magresp = zeros(Nfil,Npt); 
phasdel = zeros(Nfil,Npt-1);
xvec=zeros(Nfil,1);     % fractional delay vector
 
P = 2; % polynomial order for FARROW structure (ca. 1-5)
C=zeros(P+1,N+1);      % polynomial coeff. matrix
 
wp = 0.8; % normalized bandwidth (0-1.0)
 
for i=1:Nfil
...............................................................
end
 
for k=1:N+1
    cc=polyfit(xvec,hvec(:,k),P);  % fit P:th-order polynomial to each coeff set
    C(:,k)=cc';
end
for j=1:Nfil
    d=delay(j);
    if d==0
        d=d+0.0000001;   % add 0.001 to avoid sin(0)/0;
    end
    h = C(P+1,:);        % coeffs. via pol. approximation
    for n=1:P
        h=h+d^n*C(P+1-n,:);
    end
    h=h/sum(h);           % scale response at zero freq. to unity
    H = freqz(h,1,w*pi);
    magresp(j,:) = abs(H);
    uwphase=-unwrap(angle(H));
    phasdel(j,:) = uwphase(2:Npt)./(w(2:Npt).*pi); % avoid divide by zero
end

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于mfcc和DTW语音信息特征提取算法matlab仿真
基于mfcc和DTW语音信息特征提取算法matlab仿真
12 0
m基于节点位置偏好的自组织网络节点度分布的matlab仿真
m基于节点位置偏好的自组织网络节点度分布的matlab仿真
22 0
m基于高斯滤波和八方向sobel边缘提取的道路检测和提取算法matlab仿真
m基于高斯滤波和八方向sobel边缘提取的道路检测和提取算法matlab仿真
32 0
m基于ICP和网格拉普拉斯变形算法的三维模型配准matlab仿真
m基于ICP和网格拉普拉斯变形算法的三维模型配准matlab仿真
24 0
基于ACGWO混沌灰狼优化算法的MATLAB对比仿真,对比标准的GWO
基于ACGWO混沌灰狼优化算法的MATLAB对比仿真,对比标准的GWO
28 0
m一级倒立摆的动态模拟和零极点配置控制器matlab仿真
m一级倒立摆的动态模拟和零极点配置控制器matlab仿真
42 0
基于GoogleNet深度学习网络的人员身份识别系统Matlab仿真
基于GoogleNet深度学习网络的人员身份识别系统Matlab仿真
41 0
基于TPC算法的WSN网络资源分配matlab仿真
基于TPC算法的WSN网络资源分配matlab仿真
56 0
基于Lucas-Kanade算法的双目图像光流提取matlab仿真
基于Lucas-Kanade算法的双目图像光流提取matlab仿真
53 0
m图像多重分形谱计算matlab仿真
m图像多重分形谱计算matlab仿真
60 0
+关注
我爱matlab
公众号:matworld。 博主简介: 1.无线基带,无线图传,编解码 ; 2.机器视觉,图像处理,三维重建 ; 3.人工智能,深度学习 ; 4.智能控制,智能优化。 MATLAB/FPGA项目合作开发,项目源码请关注公众号
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载