在MATLAB当中使用FDA Tool设计CIC滤波器时候可能遇到的问题

在MATLAB当中使用FDA Tool设计CIC滤波器时候可能遇到的问题

起因

今天一位同学向我询问CIC滤波器的使用,主要是使用FDA Tool进行滤波器设计时出现问题。由于一天都很忙的确没有时间,很抱歉。在晚上的时候抽空研究探讨一下。

FDA Tool使用

FDA Tool是MATLAB 常用的工具,其具体设计CIC滤波器的方法不进行赘述。导出方式分为两种,一种是Filter Design Function(with system objects). 另外一种是Data Filtering Function(with system objects)。其生成方式为点击FDA Tool 左上角"File–Generate MATLAB Code"进行选择。

这两种方式生成的函数是不同的。Filter Design Function是滤波器设计函数,实际上生成的是一个Ans类型的对象,该对象和结构体有点像.主要目的是可以引用一些Filter的结构参数。

那么Data Filtering Function则是实打实的进行滤波时候所使用的函数,输入是时间序列,输出是卷积后时间序列参数。

使用同一结构参数使用两种选项生成效果图如下:
Filter Design Function 选项:

function Hd = cic
%CIC Returns a multirate filter object.
% MATLAB Code
% Generated by MATLAB® 9.7 and DSP System Toolbox 9.9.
% Generated on: 16-Jun-2020 23:09:57
intf = 2; % Interpolation Factor
diffd = 1; % Differential Delay
numsecs = 2; % Number of Sections
Hd = dsp.CICInterpolator( …
‘InterpolationFactor’, intf, …
‘DifferentialDelay’, diffd, …
‘NumSections’, numsecs);
% [EOF]

该函数只要调用,就会返回当前滤波器设计的结构参数,而不是设计结果.

Data Filtering Function选项:

function y = cicfilter(x)
%CICFILTER Filters input x and returns output y.
% MATLAB Code
% Generated by MATLAB® 9.7 and DSP System Toolbox 9.9.
% Generated on: 16-Jun-2020 23:18:21
%#codegen
% To generate C/C++ code from this function use the codegen command.
% Type ‘help codegen’ for more information.
persistent Hd;
if isempty(Hd)
intf = 2; % Interpolation Factor
diffd = 1; % Differential Delay
numsecs = 2; % Number of Sections
Hd = dsp.CICInterpolator( …
‘InterpolationFactor’, intf, …
‘DifferentialDelay’, diffd, …
‘NumSections’, numsecs);
end
s = fi(x,1,16,15,‘RoundingMethod’,‘Round’,‘OverflowAction’,‘Saturate’);
y = step(Hd,s);
% [EOF]

总结二者区别

Data Filtering Function是可以直接使用的。
Filter Design Function实际上这个结构体返回的是滤波器设计相关参数,并非滤波器设计结果。

所以进行滤波的时候注意二者区别。
还有一个小细节,就是你生成.m文件的路径请存放在与当前函数相同路径。不然无法进行调用。程序进行运算时是被框定在路径内的。

在这里插入图片描述

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值