数字滤波器的基本网络结构
分别用直接型,级联型和并联型来实现系统函数为的IIR数字滤波器,并求出系统的单位冲激响应和单位阶跃信号的输出。
impseq:用于产生单位冲激信号,2016版matlab中需要自行构造function
dir2cas:%将直接型转化为级联型,matlab中没有自带这个函数,要自行构造
级联型即因式分解后的结果
%同时对应的还有cas2dir,并联也相似,dir2par
casfiltr:级联型的解滤波函数,并联也相似,parfiltr
%生成冲激序列
function [x,n]=impseq(n0,n1,n2);
if ((n0<n1)|(n0>n2)|(n1>n2))
error
end
n=[n1:n2];
x=[(n-n0)==0];
%直接型单位冲激响应和单位阶跃输出信号
b=[1,-2,30,14,5];a=[5,4,4,-2,-1];
N=25;delta=impseq(0,0,N);%impseq:产生单位冲激信号,以构造
h=filter(b,a,delta);%产生滤波输出信号,依序为分子、分母以及输入信号
x=[ones(1,5),zeros(1,N-5)];
y=filter(b,a,x);
subplot(211);stem(h,'.');
title('直接型h(n)');grid on;
subplot(212);stem(y,'.');
title('直接型y(n)');grid on;
%级联型单位冲激响应和单位阶跃输出信号
%首先将原系统函数化为级联形式(将分子分母因式分解)
N=25;delta=impseq(0,0,N);
b=[1,-2,30,14,5];a=[5,4,4,-2,-1];
[b0,B,A]=dir2cas(b,a);
%将直接型转化为级联型,matlab中没有自带这个函数