使用MATLAB基于fdesign的滤波器设计

  • 格式:doc
  • 大小:34.00 KB
  • 文档页数:3

使用MATLAB基于fdesign的滤波器设计
2009-08-07 21:47
版本Matlab2009a
基于fdesign面向对象的滤波设计
单速滤波器:dfilt
多速滤波器:mfilt
自适应滤波器:adaptfilt
传统的使用命令行和fdatool极大提高了滤波器的设计效率,但是还是综合各因素不但优化的过程,没有体现Matlab在优化方面的强大功能。

使用基于fdesign的对象设计方法,只需要三步就可完成:
1、生成发的四个呢对象,根据滤波器的需求修改对象的属性。

2、使用designmethods查找适合的设计方法。

3、使用design()设计生成滤波器对象,观察是否满足要求。

还可使用cost()花销,infor()详细信息,class()类型,还支持方fdatool ()和滤波器结构转换,simulink模型生成,C和HDL代码生成。

非常高效~~
参考:
% FIR低通滤波器,通带边界频率为1500Hz,
%通带波纹小于1dB;阻带边界频率为2000Hz,
%阻带衰减大于40dB;采样频率为8000Hz。

%%
f=fdesign.lowpass
f =
Response: 'Lowpass'
Specification: 'Fp,Fst,Ap,Ast'
Description: {4x1 cell}
NormalizedFrequency: true
Fpass: 0.45
Fstop: 0.55
Apass: 1
Astop: 60
%%
%修改生成对象的属性
fd=f;
fd.Fpass=1500/8000;
fd.Fstop=2000/8000;
fd.Astop=40;
fd
fd =
Response: 'Lowpass'
Specification: 'Fp,Fst,Ap,Ast'
Description: {4x1 cell}
NormalizedFrequency: true
Fpass: 0.1875
Fstop: 0.25
Apass: 1
Astop: 40
%%
designmethods(fd) %查找可行方法
%butter cheby1 cheby2 ellip equiripple ifir kaiserwin multistage designmethods(fd,'fir')%查找可行的FIR设计方案
equiripple
ifir
kaiserwin
multistage
design(fd,'equiripple')%设计滤波器,可视化,观察是否满足要求
df1=design(fd,'equiripple')
df1 =
FilterStructure: 'Direct-Form FIR'
Arithmetic: 'double'
Numerator: [1x48 double]
PersistentMemory: false
%%
info(df1)%详细信息
Discrete-Time FIR Filter (real)
-------------------------------
Filter Structure : Direct-Form FIR
Filter Length : 48
Stable : Yes Linear Phase : Yes (Type 2) class(df1)%所属类型
ans =
dfilt.dffir
cost(df1)%开销估计
Number of Multipliers : 48
Number of Adders : 47
Number of States : 47 MultPerInputSample : 48 AddPerInputSample : 47
%%
realizemdl(df1)%生成simulink模型generatehdl(df1)%生成HDL代码generatetb(df1)%生成激励文件
fdatool(df1)%可视化生成界面。