草庐IT

抽取_内插_半带滤波器_多相滤波器

怪都督 2023-05-25 原文

文章目录


参考资料:Xilinx FIR Compiler v7.2 LogiCORE IP Product Guide PG149

半带滤波器

半带滤波器的阶数为偶数,系数长度为奇数,且除了中间系数为0.5外,其余偶数序号系数都为0。
系数长度 = 抽头数 = FIR滤波器的阶数 + 1 。
半带滤波器的幅频响应如下图。半带滤波器主要用于2倍的抽取前的滤波。

通带截止频率 Ω p \Omega_p Ωp和阻带起始频率 Ω s t \Omega_{st} Ωst关于 π 2 \frac{\pi}{2} 2π(或 f s 4 ) \frac{f_s}{4}) 4fs)对称,且通带纹波等于阻带纹波,即满足如下表达式。
Ω p = π − Ω s t ,    δ p = δ s \Omega_p = \pi - \Omega_{st},\ \ \delta_p = \delta_{s} Ωp=πΩst,  δp=δs

针对一个抽头数为11的半带滤波器其脉冲响应和FPGA实现结构如下图。


针对滤波器系数的对称性还可以优化实现结构。第一幅图针对奇数抽头,第二幅图针对偶数抽头。

以AD9361的接收信号链路中用于2倍抽取的Rx HB1为例。其系数为[-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8]。

h = [-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8];
[H,W] = freqz(h);
Hf = abs(H);% 幅频响应
Hx = angle(H);% 相频响应
plot(W,Hf/max(Hf));% 归一化幅频响应


AD9361中用于3倍抽取时的Rx DEC3系数为 [55, 83, 0, -393, -580, 0, 1914, 4041, 5120, 4041, 1914, 0, -580, -393, 0, 83, 55]。同样画出其归一化幅频响应,标记出关键点。

有数字信号处理理论:
x ( n ) → H D ( e j ω ) → ↓ D → x D ( m ) x(n) \to H_D(e^{j\omega}) \to \downarrow D \to x_D(m) x(n)HD(ejω)DxD(m)
其中 ∣ H D ( e j ω ) ∣ = { D ∣ ω ∣ < π / D 0 π / D ⩽ ∣ ω ∣ < π \left|H_{\mathrm{D}}\left(\mathrm{e}^{\mathrm{j} \omega}\right)\right|=\left\{\begin{array}{ll} D & |\omega|<\pi / D \\ 0 & \pi / D \leqslant|\omega|<\pi \end{array}\right. HD(ejω)={D0ω<π/Dπ/Dω<π

多相抽取滤波器

下图为一个M倍抽取的多相抽取滤波器结构示意图。

其中 N N N个原滤波器系数 a ( 0 ) , a ( 1 ) , ⋯   , a ( N − 1 ) a(0),a(1),\cdots,a(N-1) a(0),a(1),,a(N1)被映射到 M M M个多相子滤波器系数 h 0 ( n ) , h 1 ( n ) , ⋯   , h M − 1 ( n ) h_{0}(n), h_{1}(n), \cdots, h_{M-1}(n) h0(n),h1(n),,hM1(n),两者关系如以下公式。
h i ( r ) = a ( i + M r )     i = 0 , 1 , ⋯   , M − 1     r = 0 , 1 , ⋯   , N M h_i(r) = a(i+Mr)\ \ \ i =0,1,\cdots,M-1\ \ \ r=0,1,\cdots,\frac{N}{M} hi(r)=a(i+Mr)   i=0,1,,M1   r=0,1,,MN
例如 h = [ a , b , c , d , e , f , g , h , g , f , e , d , c , b , a ] , M = 3 h 0 = [ a , d , g , f , c ] h 1 = [ b , e , h , e , b ] h 2 = [ c , f , g , d , a ] \begin{matrix} \\h=[a,b,c,d,e,f,g,h,g,f,e,d,c,b,a],M=3 \\h_0=[a,d,g,f,c] \\h_1=[b,e,h,e,b] \\h_2=[c,f,g,d,a] \end{matrix} h=[a,b,c,d,e,f,g,h,g,f,e,d,c,b,a]M=3h0=[a,d,g,f,c]h1=[b,e,h,e,b]h2=[c,f,g,d,a]
多相抽取滤波器通过输入换向器将输入样本 x ( n ) x(n) x(n)送入多相子滤波器,换向器索引从 M − 1 M-1 M1递减到 0 0 0。在换向器执行了一个周期并向滤波器组提供了 M M M个输入样本后,各多相子滤波器的输出之和作为一个输出样本 y ( n ) y(n) y(n)。则 y ( n ) y(n) y(n)的输出采样率为 f s / M f_s/M fs/M

多相内插滤波器

下图为一个P倍内插的多相内插滤波器结构示意图。

其中 N N N个原滤波器系数 a ( 0 ) , a ( 1 ) , ⋯   , a ( N − 1 ) a(0),a(1),\cdots,a(N-1) a(0),a(1),,a(N1)被映射到 P P P个多相子滤波器系数 h 0 ( n ) , h 1 ( n ) , ⋯   , h P − 1 ( n ) h_{0}(n), h_{1}(n), \cdots, h_{P-1}(n) h0(n),h1(n),,hP1(n),两者关系如以下公式。
h i ( r ) = a ( i + P r )     i = 0 , 1 , ⋯   , P − 1     r = 0 , 1 , ⋯   , N P h_i(r) = a(i+Pr)\ \ \ i =0,1,\cdots,P-1\ \ \ r=0,1,\cdots,\frac{N}{P} hi(r)=a(i+Pr)   i=0,1,,P1   r=0,1,,PN
多相内插滤波器的每一个输入样本 x ( n ) x(n) x(n)都要送入到各个多相子滤波器,一个输入样本 x ( n ) x(n) x(n)经过多相内插滤波器后对应 P P P个输出样本 y ( n ) y(n) y(n)。输出采样率为 P × f s P\times f_s P×fs

半带抽取器和半带内插器

结合前面所述,半带抽取器和内插器就将半带滤波器与多相滤波器结合起来。具体结构如下图。


以前面所用的Rx HB1系数为例,其系数为[-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8]。

close all; clear;
x = round(rand(1,1000)*5);
h = [-8, 0, 42, 0, -147, 0, 619, 1013, 619, 0, -147, 0, 42, 0, -8];
n = length(h);
h0 = h(1:2:end);
h1 = h(2:2:end);
y1 = conv(x,h);% 先滤波后抽取
y1 = y1(n/2:end-n/2);
y1 = y1(1:2:end);
x_a = x(1:2:end);% 先抽取再滤波
y2_a = conv(x_a,h0); 
y2_a = y2_a(n/4:end-n/4);
x_b = x(2:2:end);
y2_b = conv(x_b,h0);
y2_b = y2_b(n/4:end-n/4);
y2 = y2_a + y2_b;
x = x/max(x);% 归一化
y1 = y1/max(y1);
y2 = y2/max(y2);

通过Matlab信号分析工具箱画出两种方法输出y1和y2的时域图和频域图,可以看到两种方法均可实现2倍的抽取操作,且两者的频域波形相差不大。

有关抽取_内插_半带滤波器_多相滤波器的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. ruby-on-rails - 抽取 Assets :precompile gets killed when there is a console session open in production - 2

    在我托管在digitalocean上的生产服务器上,如果有帮助的话,Ubuntu12.04,我有RoR4和rake10.1.1。当我部署时,我运行rakeassets:precompile,我注意到一个奇怪的问题,如果我在执行此操作时打开了一个railsconsolesession,我得到以下输出~#rakeassets:precompile~#Killed主要是很烦人,但我希望解决这个问题的原因是在雇用新开发人员时,会有部署/控制台冲突噩梦。谢谢,布莱恩 最佳答案 您的预编译进程可能被终止,因为您的内存不足。您可以通过在另一个ss

  3. 计算机视觉实践之角点检测--Python实现--sobel滤波--Harris矩阵--角点检测器R--非极大值抑制 - 2

    文章目录前言一、方法原理1.Harris角点检测2.Sobel滤波3.角点响应函数R二、代码实现1.**main函数**2.**corner_detect函数**三、结果对比1.不同检测方法(对比一下使用角点检测器R与H矩阵最小特征值)2.不同超参数k(使用角点检测器R,改变k值)3.非最大值抑制(对3x3的邻域范围内非最大值抑制)四、参考资料前言实现对图像的角点检测,编写Python程序能够对输入图像进行角点检测,并返回角点检测的结果,并且在可视化显示输出结果。而具体的文件和代码,在如下链接里:计算机视觉实践之角点检测Python实现使用的是pycharm,提前导入numpy和opencv库

  4. javascript - 如何在指令中 $watch 多个内插属性? - 2

    我不明白如何在链接函数中同时监视多个属性,所以我创建了一个包含所有参数的对象并监视它。但是我注意到链接函数中的属性是一个字符串而不是一个对象,所以我使用的是angular.fromJson(val)。AlltheexampleIfoundjustuseoneparameter您能解释一下如何监视多个属性吗?谢谢编辑:我不能使用attrs参数,因为我需要绑定(bind)属性——即,它们需要插值。例如我认为我必须使用$watchlink:function(scope,element,attrs){scope.$watch('info',function(val){//ifinfoisand

  5. 长时间数据流的信号滤波处理——基于MATLAB的FIR滤波器设计(1) - 2

    背景对于任意一个场景,获取到的信号都是经过噪声污染过的,一些简单的加性噪声可以通过统计的特性进行滤除,而对于一些乘性的噪声,只能通过滤波进行滤除。在信号处理中,信号滤波会广泛使用。在做研究分析信号的特征时,直接读取到数据,然后分析特征;但是,要想解决实际场景中的问题,就需要一些工程化的思想,因为数据是实时产生的数据流,而滤波也需要实时计算。举个栗子:有一个5秒钟的音频信号,采样频率44100hz,需要滤波提取1500-3000hz频带的信号,假设实际中每次发出1秒钟的音频信号,以数据流的形式发送出来,共发送了5秒钟(实际是无限长的时间)。滤波器设计:基于MATLAB的FIR滤波器的设计音频信号

  6. go - 如何为 map 平铺器执行图像抽取? - 2

    已结束。此问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。关闭6年前。Improvethisquestion我正在为大图像的缩放级别18-1编写map平铺。我需要对图像进行下采样,以便缩放级别17的像素在18时为4像素,18是原始分辨率,所有图block均为256x256。我将如何在Go中执行此操作? 最佳答案 看看nfnt/resize.它是一个用于调整图像大小的库(但Google也会这样告诉你):func

  7. go - 寻找一种在golang mysql中查看内插查询的方法 - 2

    所以,我有一个相当复杂的查询,我正在尝试调试它,但举一个简单的例子,假设我有这样的事情:q:="SELECTidFROMusersWHEREtimestamp>?ANDtimestamp我将按照通常的方式对此执行Query(),例如db.Query(q,1546300800,1561127488)我想记录/println/任何(用于调试)内插查询,以结束SELECTidFROMusersWHEREtimestamp>1546300800ANDtimestamp想知道这里是否有人对我有窍门。 最佳答案 根据@mkopriva的评论,N

  8. 深入理解梅尔刻度、梅尔滤波器组和梅尔时频谱图 - 2

    前情提要短时傅里叶变换公式S(m,k)=∑n=1N−1x(n+mH)w(n)e−i2πkNnS(m,k)=\sum_{n=1}^{N-1}x(n+mH)w(n)e^{-i2\pi\frac{k}{N}n}S(m,k)=n=1∑N−1​x(n+mH)w(n)e−i2πNk​n其中,m是当前滤波器的序号,表征了当前的时间段,k是当前频率的序号,表征了当前正在对哪一频率的e−i2πkNne^{-i2\pi\frac{k}{N}n}e−i2πNk​n信号,寻找最佳的振幅和初相,w(n)是窗函数。更多关于短时傅里叶变换的知识,请参考深入理解傅里叶变换(四)。本文要讲解的梅尔时频谱图,需要有时频谱图的知识

  9. 详解关系抽取模型 CasRel - 2

    今天来跟大家分享一篇发表在 2020ACL 上的实体关系抽取论文CasRel。论文名称:《ANovelCascadeBinaryTaggingFrameworkforRelationalTripleExtraction》论文链接:https://aclanthology.org/2020.acl-main.136.pdf代码地址:https://github.com/weizhepei/CasRel1.关系抽取任务定义实体关系抽取(关系抽取)是构建知识图谱非常重要的一环,其旨在识别实体之间的语义关系。换句话说,关系抽取就是从非结构化文本即纯文本中抽取实体关系三元组(SRO)。这里  代表头实体

  10. FIR滤波器设计(2)——Vivado调用IP核设计FIR滤波器 - 2

    本讲在Vivado调用FIR滤波器的IP核,使用上一讲中的matlab滤波器参数设计FIR滤波器,1. 新建工程(1) Create Project->RTLProject,一直Next直到选择器件,选择自己使用的器件;(2) 新建原理图文件,CreateBlockDesign;(3) 将上一讲中从 MATLAB 中导出的 FIR_BPF_99_1_5M.coe 文件放在新建工程后的工程目录下; 2. 添加IP核(1)加入FIR的IP核,在新建的原理图文件design_1中点击 1 处的加号,会弹出对话框

随机推荐