fdatool的滤波器设计
作者:桂。
时间:2017-08-15 20:28:11
链接:http://www.cnblogs.com/xingshansi/p/7367738.html
前言
本文主要记录滤波器设计的基本流程,涉及到定点/浮点的转化。
一、Fdatool基本操作
Command输入fdatool,例如FIR采用窗函数法设计16阶低通filter,fc(frequency cutoff) = 10800Hz,fs = 48000Hz,输入参数:

需要注意的是由于存在常数项,N阶Filter用N-1阶设计即可。
设计完滤波器并不是直接导出,通常需要两个后处理操作:
1)验证滤波器是否符合要求:幅频响应、相频响应,零极点图、群延迟等等,都可以通过上方的Analysis点击查看。
2)系数量化。通常DSP/FPGA需要定点操作,点击左方的量化,进行位数设定。
设计完成之后,可以File——Export,将滤波器参数导出,导出的滤波器格式可以自行选择。
左方的图标功能依次(自上而下)为:
1)Create a multi-rate filter:创建多速率滤波器;
2)Transform filter:滤波器转换;
3)Set quantization parameters:设置量化参数;
4)Realize Model:实现模型;
5)Pole-zero editor:零极点编辑器;
6)import filter:导入滤波器;
7)Design filter:设计滤波器;
二、定点/浮点转化
定点就是位数固定,浮点通常表示为:2.2e8,即xyz的形式,x:常数,y:基底,z:指数。浮点转换为定点在MATLAB中称为量化,使用quantizer和quantize两个函数完成,通常为了便于表示,也会使用num2bin,num2int,num2hex等指令。
1-quantizer
用于定义数据的量化属性,具体可doc fixedpoint/quantizer,参数详细设定可参考描述:

2-quantize
按照quantizer定义的量化属性量化浮点数据。
以上文的16阶滤波器为例:

有符号数,先放大100倍,整数最大为41:2^6 > 41,最小需要6位整数,又希望扩大100倍后的数据,小数点后精确到0.01(即原数据精度:1e-4),2^-7 < 0.01,即需要7位小数。
共需要位数N = 1符号位+6整数位+7小数位 = 14位,
其中小数m = 7位。
N = 14;
m = 7;
q = quantizer('fixed','round','saturate',[N,m]);
fix_fir = quantize(q,fir_coef*100);
[fix_fir;fir_coef*100]
结果可以看出,量化的数据达到了精度要求(上为量化数据,下为原始数据):

有时候为了表示方便,习惯了二进制的表达方式(有符号数,负数用补码表示):
num2bin(q,fix_fir)
这一操作也为含有小数的负数求解补码提供了思路,打印信息如下(类似指令num2int,num2hex类似):

fdatool的滤波器设计的更多相关文章
- FIR滤波器设计
FIR滤波器的优越性: 相位对应为严格的线性,不存在延迟失真,仅仅有固定的时间延迟: 因为不存在稳定性问题,设计相对简单: 仅仅包括实数算法,不涉及复数算法,不须要递推运算,长度为M,阶数为M-1,计 ...
- IIR滤波器设计(调用MATLAB IIR函数来实现)
转载请注明文章来源 – http://blog.csdn.net/v_hyx ,请勿用于任何商业用途 对于滤波器设计,以前虽然学过相关的理论(现代数字信号处理和DSP设计),但一直不求 ...
- 手把手教系列之IIR滤波器设计
[导读]:在嵌入式系统中经常需要采集模拟信号,采集模拟信号的信号链中难免引入干扰,那么如何滤除干扰呢?今天就来个一步一步描述如何设计部署一个IIR滤波器到你的系统. 何为IIR滤波器? 无限冲激响应( ...
- Matlab滤波器设计(转)
滤波器设计是一个创建满足指定滤波要求的滤波器参数的过程.滤波器的实现包括滤波器结构的选择和滤波器参数的计算.只有完成了滤波器的设计和实现,才能最终完成数据的滤波. 滤波器设计的目标是实现数据序列的频率 ...
- 信号、系统与滤波器设计(matlab)
0. 基本概念 AWG:Additive White(zero-mean) Gaussian,可加白噪声: AWGN:Additive White(zero-mean) Gaussian Noise ...
- Python在信号与系统(1)——Hilbert兑换,Hilbert在国家统计局的包络检测应用,FIR_LPF滤波器设计,格鲁吉亚也迫使高FM(PM)调制
谢谢董老师,董老师是个好老师. 心情久久不能平静,主要是高频这门课的分析方法实在是让我难以理解,公式也背只是,还是放放吧. 近期厌恶了Matlab臃肿的体积和频繁的读写对我的Mac的损害,所以学习了一 ...
- matlab进行FIR滤波器设计(一)
来源:https://blog.csdn.net/leokingszx/article/details/80041910 在实际的应用中,有时需要使用FIR根据完成一些特定功能,比如近似一阶RC低通电 ...
- 基于matlab的FIR加窗滤波器设计
1.确定参数: Wp 通带截止频率 Ws 阻带截止频率 As 衰减dB Rp 纹波dB 2.根据参数确定理想 频率响应 (M (Wp + Ws )/2 ) 双边响应 3.选窗 过滤带 ...
- 可分离滤波器设计高斯滤波 CUDA程序优化, 实验记录
环境:RTX2060 ,1920X1080p ,循环10次, kernal_size=8 一 .测试前128个线程拷贝到dst数据的性能 ,只测试行卷积, block=(128+2r)X1 1. 使 ...
随机推荐
- TxQueryRunner-JDBC小工具
1.TxQueryRunner的简介(需要相关jar包的请留言) TxQueryRunner类是common-dbutils下QueryRunner的子类,是用来简化JDBC操作的,所以要导入comm ...
- Git 推送和删除远程标签
事实上Git 的推送和删除远程标签命令是相同的,删除操作实际上就是推送空的源标签refs: git push origin 标签名 相当于 git push origin refs/tags/源标签名 ...
- cocos2d-js Shader系列3:多重纹理 multiple textures multiple samplers
上一篇,我们学习了怎么便捷的控制sprite的颜色,而这个都是默认一个texture的,如果要实现类似mask的效果,或者更个性化的多纹理效果,怎么实现呢? 这就是这一节需要介绍的内容. 例如上图的效 ...
- exception java.lang.OutOfMemoryError: Java heap space
1.情景展示 java内存溢出异常,将程序代码问题排除在外,如何增大JVM的使用内存? 2.解决方案 在eclipse中的解决办法:增大你要运行的测试类的内存分配. 点击运行或debug按钮旁的 ...
- php与redis使用经验分享 (转载)
一.安装 1.redis的下载及安装: 引用 mkdir /usr/local/redis cd /usr/local/redis wget http://redis.googlecode.com/f ...
- centos7 计划任务 crontab的使用
#vim /etc/crontab #号代表以管理员身份运行. 将你要执行的脚本或者命令加进去,例如我的: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr ...
- (原)InsightFace及其mxnet代码
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/8525287.html 论文 InsightFace : Additive Angular Margin ...
- 回到顶部bug
参考自一博客(https://www.cnblogs.com/abao0/p/6642288.html)内有慕课网教程(后发现有bug, 弃置不用了) 以下有问题, 当滚动条处于顶部时, 刷新页面, ...
- django日志使用TimeRotateFileHandler
如果使用django的settings.py设置日志会产生一些问题. 问题描述 报错信息如下: Traceback (most recent call last): File "C:\Pyt ...
- java 图片与文字生成PDF
1.jar包:iText-2.1.5.jar 2.code: import java.awt.Color; import java.io.File; import java.io.FileNotFou ...