MATLAB——FDAtool工具箱设计滤波器(1)

FDAtool工具箱是MATLAB里专门用于生成滤波器的工具箱,功能强大,操作十分方便。我们只需要输入滤波器参数,就可以产生对应滤波器的程序以及对应滤波器的参数矩阵。本文将简要介绍FDAtool工具箱,并用生成程序的方式设计符合要求的滤波器。

一:FDAtool工具箱打开方式与界面

1.打开方式
我们只需要在命令行窗口里输入fdatool并运行,即可打开FDAtool工具箱
2.界面展示
在这里插入图片描述(1)最下面我们可以选择生成滤波器的相关参数。无论是低通还是带通;FIR滤波器还是IIR滤波器,我们都可以选择并依据参数生成。可以说功能十分强大。
(2)左下的七个模块是基于滤波器的进一步设计,在这里我们可以将生成的滤波器转成对应的simulink模型进行使用。当然功能不只如此,但编者能力有限,还有待进一步的研究。
(3)中间的两个方框,左边的说明了滤波器的信息,可以在此保存你生成过了滤波器模型,以便下一次打开FDAtool工具箱时再次使用。右边的方框显示了设计出来的滤波器的各种图像,具体的显示内容受上面的功能栏控制
(4)功能栏各图像展示说明
在这里插入图片描述
如图,这八个模块为产生滤波器各种性质的图像的常用模块。其对应功能我们会专门拿出来说明。

二:滤波器的图像分析

在一(4)中我们提到了八个常用模块,现对其进行说明。
各图像均由如下滤波器参数产生:
在这里插入图片描述
八个模块从左到右分别为:
(1)Magnitude Response——幅频响应分析
结果如上述参数图
(2)Phase Response——相频响应分析
在这里插入图片描述
(3)Magnitude And Phase Responses——幅频响应共图
在这里插入图片描述
(4)Group Delay Response——群时延分析
在这里插入图片描述
(5)Phase Delay——相位延迟
在这里插入图片描述
(6)Impulse Response——冲激响应分析
在这里插入图片描述
(7)Step Response——阶跃响应分析
在这里插入图片描述
(8)Pole/Zero Plot——零极点图分析
在这里插入图片描述

三:FDAtool程序导出式滤波器设计

1.依据二中滤波器参数生成滤波器(参数输入后点击design filter)
2.生成后,点击file—Generate MATLAB code—Filter Design Function。生成对应程序并保存
3.生成程序如下:

function Hd = FDAtool_test_BUTTER
%FDATOOL_TEST_BUTTER Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.6 and Signal Processing Toolbox 8.2.
% Generated on: 10-Mar-2020 16:08:01

% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.

% All frequency values are in Hz.
Fs = 100001;  % Sampling Frequency

Fpass = 200;         % Passband Frequency
Fstop = 350;         % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 80;          % Stopband Attenuation (dB)
match = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);

% [EOF]

4.我们将这个程序放入主函数,使用fliter(滤波器参数,原始信号)进行滤波处理。
在本仿真程序下为:
Hd = FDAtool_test_BUTTER;
d=filter(Hd,s);
原信号图像为:
在这里插入图片描述
滤波后的图像为:
在这里插入图片描述
可以看到,我们设计的滤波器工作正常,仿真成功
当然,在生成的滤波器函数上直接更改参数,也可以改变其滤波范围。比如我们将Fpass改为500,Fstop改为 600。生成的仿真图像为:
在这里插入图片描述
我们可以看到,滤波器同样可以正常工作
所以说,在大体不变的情况下,生成的滤波器可以反复使用,相当方便

四:仿真测试代码

%%%%%%%%%%%%%%%%%%%%%%%FDAtool工具箱使用%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all;clc;
%%%%%%%%%%%%%%%%%%%%%%%原始信号
fs=100e3;                                %高采样率还原真实频域
t=0:1/fs:1;
w1=2*pi*100;
w2=2*pi*400;
w3=2*pi*700;
s=cos(w1*t)+0.8*cos(w2*t)+0.6*cos(w3*t); %混合信号构建
s_f=fft(s)/length(t);                    %幅度还原
s_ff=fftshift(s_f);                                 
f_f=(-length(t)/2:length(t)/2-1);        %横坐标对称化,镜像消除
figure;
plot(f_f,abs(s_ff));
xlim([-800,800]);                        %图像清晰化
%%%%%%%%%%%%%%%%%%%%FDAtool程序导出式滤波器设计
Hd = FDAtool_test_BUTTER;
d=filter(Hd,s);
d_f=fft(d)/length(t);
d_ff=fftshift(d_f); 
figure;
plot(f_f,abs(d_ff));
xlim([-800,800]); 
%%%%%%%%%%%%%%%%%%%%导出程序
function Hd = FDAtool_test_BUTTER
%FDATOOL_TEST_BUTTER Returns a discrete-time filter object.

% MATLAB Code
% Generated by MATLAB(R) 9.6 and Signal Processing Toolbox 8.2.
% Generated on: 10-Mar-2020 16:08:01

% Butterworth Lowpass filter designed using FDESIGN.LOWPASS.

% All frequency values are in Hz.
Fs = 100001;  % Sampling Frequency

Fpass = 500;         % Passband Frequency
Fstop = 600;         % Stopband Frequency
Apass = 1;           % Passband Ripple (dB)
Astop = 80;          % Stopband Attenuation (dB)
match = 'stopband';  % Band to match exactly

% Construct an FDESIGN object and call its BUTTER method.
h  = fdesign.lowpass(Fpass, Fstop, Apass, Astop, Fs);
Hd = design(h, 'butter', 'MatchExactly', match);
end

五:写在结尾

本文只对生成滤波器函数的方式进行了说明。实际上,还有很多种导出滤波器数据的方式,甚至还可以直接将设计的滤波器转换成VHDL等其他语言。FDAtool是一个功能很强大的工具箱,但本人能力有限,还未进行深入研究。后续如有新的理解和功能开发,会及时补充。

  • 6
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MATLAB FDATOOLMATLAB中的一个功能强大的滤波器设计工具,也被称为Filter Designer。它可以在MATLAB环境中用于设计和分析滤波器。通过FDATOOL,用户可以以图形化界面的方式进行滤波器设计和性能分析。可以通过点击MATLAB的file菜单,然后选择Generate MATLAB Code -> Filter Design Function来将设计好的滤波器以.m文件的形式导出到MATLAB中。此外,还可以通过在MATLAB命令行窗口输入"fdatool"指令来打开FDATOOL工具箱。 引用: 5、将设计好的滤波器导出matlab中。 (1)以.m文件的形式导出到matlab中: 1)点击file,然后选择Generate MATLAB Code -> Filter Design Function。 引用:MATLAB滤波器设计fdatool(filterDesigner)工具箱使用 MATLAB集成了一套功能非常强大的滤波器设计和分析工具FDAtool(新版为filterDesigner),它可以很方便的设计出一个滤波器,并且可以进行性能的分析。 以下操作使用的MATLAB环境是MATLAB R2018a 1、启动FDAtool工具箱,在命令行窗口中输入fdatool命令,打开FDAtool工具箱。 引用:   首先,在MATLAB命令行窗口输入“fdatool”指令,随后即可打开MATLAB自带的功能强大的滤波器设计工具——“FDATool”。如图1所示,    打开后,会显示如图2所示的界面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MATLAB滤波器设计fdatool(filterDesigner)工具箱使用](https://blog.csdn.net/CHQC388/article/details/103885822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [数字滤波器设计专题(一)——FDATool使用教程](https://blog.csdn.net/b457738242/article/details/105617709)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值