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. 使 ...
随机推荐
- UBUNTU 字符界面来回切换
图形界面切换到字符界面: 实体机:Ctrl + Alt + F1 VMware虚拟机:按下ALT+CTRL+SPACE(空格),ALT+CTRL不松开,再按F1.这样就可以切换到字符界面 字符界面切换 ...
- [OpenGL] 斯坦福兔子与显示列表
1.调整桌子的大小. 在OpenGL绘制长方体,能够通过函数: glutSolidCube(Size) 绘制得到的是一个正方体,再利用缩放矩阵使其变成长方体.使得桌子 ...
- python中string和十六进制、二进制互转
def str_to_hex(s): return ' '.join([hex(ord(c)).replace('0x', '') for c in s]) def hex_to_str(s): re ...
- ES6学习笔记二:各种扩展
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/7242967.html 一:字符串扩展 1:字符串遍历器 for (let char of str) { // ...
- Flash Actionscript AS3 渐变透明 mask遮罩
把图片变成渐变透明(左图是效果图,右图是原图) var a:Sprite = new Sprite(); a.graphics.beginGradientFill(GradientType.LI ...
- Java通过join方法来暂停当前线程
目标线程的join方法暂停当前线程,直到目前线程完成(从run()方法返回). Java代码: package Threads; import java.io.IOException; /** * C ...
- 〖Linux〗Kubuntu文件管理器单例的设置(即:一个工作区只一个文件管理器)
有没有一种,情况: 1. 程序A打开了文件管理器: 2. 程序B又打开了文件管理器: 导致开了两个文件管理器,太不舒服了: 搜索下 kubuntu dolphin single instance,果然 ...
- 9、java5线程池之定时任务线程池newScheduledThreadPool与newSingleThreadScheduledExecutor
JDK文档描述 newSingleThreadScheduledExecutor() 创建一个单线程执行程序,它可安排在给定延迟后运行命令或者定期地执行.(注意,如果因为在关闭前的执行期间出现失败而终 ...
- 改变mysql客户端输出的字符串编码
在客户端改变中文输出的编码,通常以gbk输出,因为电脑常见的是gbk编号形式 目的:不改变编码,输出中文的时候,可能会出现乱码的情况, set names gbk 在客户端以gbk编码显示需要输出的内 ...
- SpringMVC 参数中接收数组、List写法
本文使用SpringMVC版本: org.springframework:spring-web:4.3.9.RELEASE 写法及说明(示例代码的类上的注解是@RestController,所以不需要 ...