IIR 数字滤波器格式梯型的MATLAB实现

2022-07-20 14:24:47 浏览数 (1)

一、实验目的 1.掌握IIR 数字滤波器格式梯型的表达方式特点及信号流图。 2.掌握IIR 数字滤波器格式梯型的基本特点并根据给定的传递函数形式正确选择是否采用格式梯型。 3.掌握格式梯型软件实现的编程方法。 二、实验原理 一般的IIR 滤波器既包含有极点也含有零点。通过利用一种全极点格型作为基本构造单元,它能实现为一种格型结构。考虑一IIR 滤波器,其系统函数为:

其中不失一般性可设N≥M。一种格型结构可以这样构成:首先对上式的分母用系数m k ,1≤m≤N 实现一种全极点格型,然后将输出取作{ g (n) m }的加权线性组合把一个梯型部分加起来,这个结果式一个具有零点和极点的IIR 滤波器,它有格式梯形结构。

三、实验内容 将下面含有零点和极点的IIR 滤波器转换为一种格式梯型结构,并画出它的单位脉冲响应和单位阶跃响应。

代码语言:javascript复制
clc;clear all;close all;
b=[1 2 2 1];a=[1 13/24 5/8 1/3];
n=0:63;
figure;
h=impz(b,a,n);
u=dstep(b,a,n);
subplot(2,1,1),stem(n,h,'.'); title('直接型单位冲激响应') subplot(2,1,2),stem(n,u,'.'); title('直接型单位阶跃响应')

[K,C]=dir2ladr(b,a) figure;
h0=[n==0];
u0=[n>=0];
h1=ladrfilt(K,C,h0); u1=ladrfilt(K,C,u0);
subplot(2,1,1),stem(n,h1,'.'); title('格式梯形结构单位冲激响应') subplot(2,1,2),stem(n,u1,'.'); 
title('格式梯形结构单位阶跃响应')

子函数:
function [y]=ladrfilt(K,C,x)
% lattice/ladder form realization of IIR filters
% [y]=ladrfilt(K,C,x)
% y=output sequence
% K=lattice(reflection) coefficient array
% C=ladder coefficient array
% x=input sequence

Nx=length(x);y=zeros(1,Nx); N=length(C);f=zeros(N,Nx);g=zeros(N,Nx 1);
f(N,:)=x;
for n=2:1:Nx 1 for m=N:-1:2
f(m-1,n-1)=f(m,n-1)-K(m-1)*g(m-1,n-1);
g(m,n)=K(m-1)*f(m-1,n-1) g(m-1,n-1);
end
g(1,n)=f(1,n-1);
end

y=C*g(:,2:Nx 1);

0 人点赞