数字信号处理matlab基础例题相关-第六章

数字滤波器的基本网络结构

分别用直接型,级联型和并联型来实现系统函数为的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中没有自带这个函数,要自行构造
%同时对应的还有cas2dir,并联也相似,dir2par
h=casfiltr(b0,B,A,x);%同样的并联型为parfiltr
subplot(211);stem(h,'.');
title('级联型h(n)');grid on;
subplot(212);stem(y,'.');
title('级联型y(n)');grid on;
%最后输出结果与直接型波形一致,并联型也一致

在这里插入图片描述

FIR滤波器的系统函数为h(n)=0.5n,0≤n≤5,其他为0。试用直接性和级联型分别实现。

h(n)的输入为单位冲激信号
y(n)的输入为单位阶跃信号

%分别实现直接型和级联型
%系统函数h(n)=0.5n,0≤n≤5,其他为0
n=0:5;b=0.5.^n;
N=30;delta=impseq(0,0,N);%生成冲激信号
h=filter(b,1,delta);%单位冲激序列输出信号
x=[ones(1,5),zeros(1,N-5)];
y=filter(b,1,x);%单位节约序列输出信号
subplot(211);stem(h,'.');title('直接型h(n)');grid;
subplot(212);stem(y,'.');title('直接型y(n)');grid;
[b0,B,A]=dir2cas(b,1)%直接型向级联型转化,需令装工具包,,,
%数字信号处理的一大批函数matlab都不认,我佛了,,,
h=casfiltr(b0,B,A,delta);
y=casfiltr(b0,B,A,x);
subplot(223);stem(h,'.');title('级联型h(n)');grid;
subplot(224);stem(y,'.');title('级联型y(n)');grid;

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Mr_Lpi/article/details/88063699