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. 使 ...
随机推荐
- PC版收音机—龙卷风收音机
龙卷风收音机-龙卷风 文章来源:刘俊涛的博客 欢迎关注,有问题一起学习欢迎留言.评论
- Atlas:ERROR 1105 (HY000): #07000Proxy Warning - IP Forbidden
1:遇到一个奇怪的问题 Atlas的管理接口正常 添加一个client之后save config mysql -uroot -p -P1234 -h127.0.0.1 报错了:ERROR 1105 ( ...
- iframe 与 frame 区别
1.iframe iframe主要来内联一个外联的页面,如: <!DOCTYPE html> <html lang="zh"> <head> & ...
- 【Java多线程】线程同步方法概览
一:使用syncrhoized内置锁实现同步 使用互斥来实现线程间的同步,保证共享数据在同一时刻只被一个线程使用.Java中最基本的互斥手段就是syncrhoized关键字. syncrhoized的 ...
- js自动补全空白列(即缺少td的列)
//自动补全空白列 var rows = document.getElementById("gridTable").rows; //行对象 var allcells = rows[ ...
- Xamarin.Android之定位
一.前言 打开我们手中的应用,可以发现越来越多的应用使用了定位,从而使我们的生活更加方便,所以本章我们将学习如何在Xamarin中进行定位的开发. 二.准备工作 因为我们的虚拟机是运行在电脑本地的,自 ...
- 【TP3.2】模板 select选项采坑
1.TP3.2 模板 select 下拉框采坑 <div class="form-item"> <label class="item-label&quo ...
- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性
---------------------目录-------------------------- EntityFramework 5.0 CodeFirst 教程03-数据结构的定义/列的属性 (2 ...
- seaweedfs 源码笔记(一)
seaweedfs中的名词:master: 存储文件和fid映射关系volumn:实际存储文件datacenter: 数据中心rack: 机架.一个机架属于特定的数据中心,一个数据中心可以包含多个机架 ...
- 安装 directx sdk 出现 S1023 解决
造成原因: directx sdk 在安装10.0.30319 of the Visual C++ Redistributable的时候发现有一个新版本的 Microsoft Visual C++ 2 ...