我是靠谱客的博主 孝顺朋友,最近开发中收集的这篇文章主要介绍FIR 滤波器四种结构形式的MATLAB 实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、实验目的
1. 掌握FIR 滤波器的各种实现形式。
2. 了解FIR 滤波器的各种实现形式之间的转化。
3. 学会用MATLAB 工具实现FIR 滤波器
二、实验原理
FIR 滤波器的结构特点是没有环路,它的单位脉冲响应的长度是有限的,设它的长度为N,它的系统函数为

 FIR 滤波器的结构稳定,且比IIR 滤波器容易实现。它包括:直接型,级联型,线性相位型和频率采样型。
1. 直接型
FIR 直接型的系统函数为

 FIR 滤波器的直接型结构由行向量b 表示,分母向量a 置1。MATLAB 中用filter 函数实现这个结构。
2. 级联型
FIR 级联型的系统函数为具有实系数的二阶节的积,每个二阶节均用直接型实现,然后整个滤波器就是所有二阶节的级联。系统函数为:

级联型 FIR 滤波器可以用MATLAB 函数dir2cas 从直接型转化而来。
3.线性相位型
对于一个具有在[0 , M-1] 区间上的脉冲相应的因果 FIR   滤波器来说, 满足h(n) = h(M − 1 − n) 的脉冲响应称为对称脉冲响应,满足h(n) = −h(M − 1 − n) 的脉冲响应称为反对称脉冲响应。线性相位型的结构就是利用这些对称条件。在 MATLAB  中线性相位结构的实现是等效于直接型的。
4.频率采样型
由于 FIR 滤波器的系数为实数,利用 H (k ) 和W −ᵏ
 

 根据(4),(5)两式,可以自己编写函数dir2fs 实现从直接型转化为频率采样型。
三、实验内容
1. 参看教材第五章有关内容,并阅读本实验原理。
2. 若FIR 滤波器的直接型结构为b=[1 3 5 3 1],把它转化级联型结构。(提示:可以直接调用函数dir2cas)
3. 编写MATLAB 函数dir2fs,存入库函数,然后直接调用该函数将直接型FIR 滤波器转化为频率采样型。设h=[1,3,5,-3,-1]/9。
参考流程图

 四、思考题
(1) FIR 滤波器的直接实现形式有什么缺点?
(2) FIR 滤波器的级联形式在那些方面比直接形式有改进?为此它付出了什么代价?
(3) 频率采样结构有什么优缺点?为了克服它的缺点,可以采用什么改进方法?
五、实验报告要求
1. 简述实验目的及原理。

2. 整理好经过运行并证明是正确的实验程序并加上注释。绘出相应的图形。

3. 简要回答思考题。

b=[1,3,5,3,1];
a=[1];
[b0,B,A]=dir2cas(b,a);
b0,B,A
调用的函数:dir2cas.m
function[b0,B,A]=dir2cas(b,a)
b0=b(1);b=b/b0; a0=a(1);a=a/a0; b0=b0/a0;
M=length(b);N=length(a);
if N>M
b=[b,zeros(1,N-M)]; elseif M>N
a=[a,zeros(1,M-N)];N=M;
end
K=floor(N/2);B=zeros(K,3);A=zeros(K,3);
if K*2==N
b=[b 0];
a=[a 0];


end
broots=cplxpair(roots(b)); aroots=cplxpair(roots(a)); for i=1:2:2*K
Brow=broots(i:1:i+1,:); Brow=real(poly(Brow)); B(fix((i+1)/2),:)=Brow;
Arow=aroots(i:1:i+1,:); Arow=real(poly(Arow)); A(fix((i+1)/2),:)=Arow;
end

结果:

b0 =
1
B =
1.0000        2.2435        2.9656
1.0000        0.7565        0.3372
A =



1          0          0
1          0          0

程序:

h=[1,3,5,-3,-1]/9;
[N,Hk,wk]=dir2fs(h)

调用的函数:dir2fs.m
function[N,Hk,wk]=dir2fs(b);
N=length(b); Hk=fft(b); k=0:N-1;
wk=exp(2*pi*i/N).^k;

结果:

N =
5
Hk =
Columns 1 through 4

0.5556                        -0.0000 - 0.9452i      0.0000 + 0.5841i      0.0000 - 0.5841i
Column 5
-0.0000 + 0.9452i
wk =

Columns 1 through 4
1.0000                          0.3090 + 0.9511i    -0.8090 + 0.5878i    -0.8090 - 0.5878i
Column 5
0.3090 - 0.9511i

最后

以上就是孝顺朋友为你收集整理的FIR 滤波器四种结构形式的MATLAB 实现的全部内容,希望文章能够帮你解决FIR 滤波器四种结构形式的MATLAB 实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部