(二)波形图
图1-11
实验二离散时间LTI系统的时域分析
一、实验目的
1、学会运用MATLAB求解离散时间系统的零状态响应;
2、学会运用MATLAB求解离散时间系统的单位冲激响应;
3、学会运用MATLAB求解离散时间系统的卷积和。
二、实验原理
离散时间LTI系统可以用线性常系数差分方程来描述,即
式中
(i=0,1,…,N)和
(j=0,1,…,M)为常实数。
MATLAB中函数filter可对上式的差分方程在指定时间范围内的输入序列所产生的响应进行求解。
函数filter的语句格式为
Y=filter(b,a,x)
其中,x为输入的离散序列;y为输出的离散序列;y的长度与x的长度一样;b与a分别为差分方程的右端与左端的系数向量。
系统的单位冲激响应定义为系统在δ(n)激励下系统的零状态响应,用h(n)表示。
MATLAB求解单位冲激响应可利用函数filter,并将激励设为δ(n)函数。
系统的单位阶跃响应定义为系统在u(n)激励下系统的零状态响应,用g(n)表示。
MATLAB求解单位冲激响应可利用函数filter,并将激励设为u(n)函数。
由于系统的零状态响应是激励与系统的单位冲激响应的卷积,因此卷积运算在离散时间信号领域被广泛应用。
离散时间信号的卷积定义为
y(n)=x(n)*h(n)=
可见,离散时间信号的卷积运算是求和运算,因而常称为卷积和。
MATLAB求离散时间信号卷积和的命令为conv,其语句格式为y=conv(x,h)
其中,x与h表示离散时间信号值的向量;y为卷积结果。
用MATLAB进行卷积和运算时,无法实现无限的累加,只能计算时限信号的卷积。
对于给定函数的卷积和,应计算卷积结果的起始点及其长度。
两个时限序列的卷积和长度一般等于两个序列长度的和减1.
三、实验内容
1、已知x(n)=u(n-“学号后两位”)-u(n-(“学号后两位”+4))、h(n)=R5(n).利用y=conv(x,h)计算卷积。
程序如下:
n1=0:
30;
x1=[zeros(1,11)1ones(1,19)];
x2=[zeros(1,15)1ones(1,15)];
x=x1-x2;
n2=-10:
10;
h1=[zeros(1,10)1ones(1,10)];
h2=[zeros(1,15)1ones(1,5)];
h=h1-h2;
y=conv(x,h);
n=-10:
40;
stem(n,y)
xlabel('n');ylabel('y');title('系统的卷积');
图形如下:
2、编制程序求解下列两个系统的单冲激响应和单位阶跃响应,并绘出其图形。
1)、y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1];
程序如下:
a=[1,0.75,0.125];
b=[1,-1];
n=-10:
10;
x=[zeros(1,10)1zeros(1,10)];
h=filter(b,a,x);
stem(n,h)
xlabel('n');ylabel('h(n)');title('系统的单位冲激响应');
a=[1,0.75,0.125];
b=[1,-1];
n=-10:
10;
x=[zeros(1,10)1ones(1,10)];
g=filter(b,a,x);
stem(n,g)
xlabel('n');ylabel('g(n)');title('系统的单位阶跃响应');
运行后的图形如下:
2)、y[n]=0.25{x[n-1]+x[n-2]+x[n-3]+x[n-4]}
程序如下:
a=[1];
b=[0,0.25,0.25,0.25,0.25];
n=-10:
10;
x=[zeros(1,10)1zeros(1,10)];
h=filter(b,a,x);
stem(n,h)
xlabel('n');ylabel('h(n)');title('系统的单位冲激响应');
a=[1];
b=[0,0.25,0.25,0.25,0.25];
n=-10:
10;
>>n=-10:
10;
x=[zeros(1,10)1ones(1,10)];
g=filter(b,a,x);
stem(n,g)
xlabel('n');ylabel('g(n)');title('系统的单位阶跃响应');
图形如下:
3、已知某系统的单位冲激响应为h(n)=0.5[u(n)-u(n-4)],试分别利用MATLAB卷积和两种方法求当激励信号为x(n)=u(n)-u(n-4)时,系统的零状态响应。
程序如下:
n=-5:
5;
x1=[zeros(1,5)1ones(1,5)];
x2=[zeros(1,9)1ones(1,1)];
x=x1-x2;
h=(0.5.^n).*x;
y=conv(x,h);
n=-10:
10;
stem(n,y)
xlabel('n');ylabel('y)');title('系统的零状态响应');
图形如下:
实验四离散时间LTI系统的Z域分析
一、实验目的
本实验通过使用MATLAB函数对离散时间系统的一些特性进行仿真分析,以加深对离散时间系统的零极点、稳定性,频率响应等概念的理解。
学会运用MATLAB分析离散时间系统的系统函数的零极点;学会运用MATLAB分析系统函数的零极点分布与其时域特性的关系;学会运用MATLAB进行离散时间系统的频率特性分析。
二、实验原理
离散时间系统的系统函数定义为系统零状态响应的Z变化与激励的Z变化之比。
在MATLAB中系统函数的零极点可通过函数roots得到,也可借助函数tf2zp得到,tf2zp的语句格式为
[Z,P,K]=tf2zp(B,A)
其中,B与A分别表示H(z)的分子与分母多项式的系数向量。
它的作用是将H(z)的有理分式表示式转换为零极点增益形式。
若要获得系统函数H(z)的零极点分布图,可直接应用zplane函数,其语句格式为
Zplane(B,A)
其中,B与A分别表示H(z)的分子和分母多项式的系数向量。
它的作用是在z平面上画出单位圆、零点与极点。
离散系统中z变化建立了时域函数h(n)与z域函数H(z)之间的对应关系。
因此,z变化的函数H(z)从形式可以反映h(n)的部分内在性质。
可根据系统的传递函数H(z)求单位冲激响应h(n)的函数impz、filter等。
利用系统的频率响应,可以分析系统对各种频率成分的响应特性,并推出系统的特性(高通、低通、带通、带阻等)。
MATLAB提供了求离散时间系统频响特性的函数freqz,调用freqz的格式主要有两种。
一种形式为
[H,w]=reqz(B,A,N)
其中,B与A分别表示H(z)分子和分母多项式的系数向量;N为正整数,默认值为512;返回值w包含[0,π]范围内的N个频率等分点;返回值H则是离散时间系统频率响应在0~π范围内N个频率处的值。
另一种形式为
[H,w]=freqz(B,A,N,‘whole’)
与第一种方式不同之处在于角频率的范围由[0,π]扩展到[0,2π]。
三、实验内容与结果分析
已知LTI离散时间系统,要求由键盘实现系统参数输入,并绘出幅频和相频响应曲线和零极点分布图,进而分析系统的滤波特性和稳定性。
(一)程序
a=[0.05280.7970.12950.12950.7970.0528];
b=[1-1.81072.4947-1.88010.9537-0.2336];
[Hw]=freqz(a,b,512);
subplot(2,2,1),plot(w,abs(H)),title('幅频响应曲线');
subplot(2,2,2),plot(w,angle(H)),title('相频响应曲线');
subplot(2,2,3),zplane(a,b);title('零极点分布');
(二)波形图
图4-1幅频、相频响应曲线、零极点分布图
实验六IIR数字滤波器的设计
一、实验目的
数字滤波器包括IIR(无限冲激响应)和FIR(有限冲激响应)型,在设计时通常采用不同的方法。
本实验通过使用MATLAB函数对数字滤波器进行设计和实现,要求掌握IIR数字巴特沃斯滤波器、数字切比雪夫滤波器的设计原理、设计方法和设计步骤;能根据给定的滤波器指标进行滤波器设计;同时也加深对数字滤波器的常用指标和设计过程的理解。
二、实验原理
在IIR滤波器的设计中,常用的方法是:
先根据设计要求寻找一个合适的模拟原型滤波器,然后根据一定的准则将此模拟原型滤波器转换为数字滤波器。
IIR滤波器的阶数就等于所选的模拟原型滤波器的阶数,所以其阶数确定主要是在模拟原型滤波器中进行的。
IIR数字滤波器的设计方法如下:
(1)冲激响应不变法。
(2)双线性变化法。
一般来说,在要求时域冲激响应能模仿模拟滤波器的场合,一般使用冲激响应不变法。
冲激响应不变法一个重要特点是频率坐标的变化是线性的,因此如果模拟滤波器的频率响应带限于折叠频率的话,则通过变换后滤波器的频率响应可不失真地反映原响应与频率的关系。
与冲激响应不变法比较,双线性变化的主要优点是靠频率的非线性关系得到s平面与z平面的单值一一对应关系,整个值对应于单位圆一周。
所以从模拟传递函数可直接通过代数置换得到数字滤波器的传递函数。
MATLAB提供了一组标准的数字滤波器设计函数,大大简化了滤波器的设计工程。
(1)butter。
(2)cheby1、cheby2。
三、实验内容与结果分析
6.1基于chebyshevI型模拟滤波器原型使用冲激不变转换方法设计数字滤波器,要求参数为通带截止频率0.2π,;通带最大衰减1dB;阻带截止频率0.4π;阻带最小衰减35dB。
(一)程序
wp=0.2*pi;
ws=0.4*pi;
Rp=1;
Rs=35;
[N,Wn]=cheb1ord(wp,ws,Rp,Rs,'s');%估计滤波器最小阶数
[z,p,k]=cheb1ap(N,Rp);%模拟滤波器函数引用
[A,B,C,D]=zp2ss(z,p,k);
[AT,BT,CT,DT]=lp2lp(A,B,C,D,Wn);%频率转换
[b,a]=ss2tf(AT,BT,CT,DT);
[bz,az]=impinvar(b,a);%调用脉冲响应不变法
[H,w]=freqz(bz,az);
plot(w,abs(H));title('chebyshevI');
xlabel('频率')
ylabel('幅值')
(二)波形图
图6-1幅度曲线
6.2基于Butterworth型模拟滤波器原型使用双线性变化方法设计数字滤波器,要求参数为通带截止频率0.4π,;通带最大衰减1dB;阻带截止频率=0.25π;阻带最小衰减40dB。
(一)程序
wp=0.4*pi;
ws=0.25*pi;
Rp=1;
Rs=40;
Fs=10000;
Nn=128;
[N,Wn]=buttord(wp,ws,Rp,Rs,'s');%估计滤波器最小阶数
[z,p,k]=buttap(N);%模拟滤波器函数引用
[Bap,Aap]=zp2tf(z,p,k);
[b,a]=lp2lp(Bap,Aap,Wn);%频率转换
[bz,az]=bilinear(b,a,Fs);%调用双线性变换法
freqz(bz,az,Nn,Fs);title('Butterworth型');
(二)波形图
图6-2幅度、相位频响曲线
(三)结果分析
从图6-2中可以看出,用双线性变化方法设计的该数字滤波器,通带截止频率0.4π,;通带最大衰减1dB;阻带截止频率=0.25π;阻带最小衰减40dB。
与题目要求的基本一致,故该程序设计正确。
实验七FIR数字滤波器的设计
一、实验目的
掌握用窗函数法设计FIR数字滤波器的原理及其设计步骤;熟悉线性相位数字滤波器的特性。
学习编写数字滤波器的设计程序的方法,并能进行正确程;根据给定的滤波器指标,给出设计步骤。
二、实验原理
如果系统的冲激响应h(n)为已知,则系统的输入输出关系为
y(n)=x(n)*h(n)
对于低通滤波器,只要设计出低通滤波器的冲激响应函数,就可以由式得到系统的输出了。
但是将h(n)作为滤波器的脉冲响应有两个问题:
一是它是无限长的;二是它是非因果的。
对此,采取两项措施:
一是将h(n)截短;二是将其右移。
设计时,要根据阻带的最小衰减和过渡带宽度来选择恰当的窗函数类型和窗口长度N。
常用的窗函数有矩形窗、海明窗和布莱克曼窗等。
窗函数设计FIR滤波器步骤如下:
(1)给定理想频率响应的幅频特性和相频特性;
(2)求理想单位脉冲响应,在实际计算中,可对理想频率响应采样。
(3)根据过渡带宽度和阻带最小衰减,确定窗函数类型和窗口长度N;
(4)求FIR滤波器单位脉冲响应;
(5)分析幅频特性,若不满足要求,可适当改变窗函数形式或长度N,重复上述设计过程,以得到满意的结果。
三、实验内容及=结果分析
7.1分别用海明窗和布莱克曼窗设计一个48阶的FIR带通滤波器,通带为[0.450.55]
(一)程序
n=48;
wn=[0.45,0.55];
b=fir1(n,wn,hamming(n+1));
%freqz(b);
[h1,w1]=freqz(b,1);
plot(w1/pi,20*log10(abs(h1)));
gridon;
title('海明窗');
b=fir1(n,wn,blackman(n+1));
[h1,w1]=freqz(b,1);
figure;
plot(w1/pi,20*log10(abs(h1)));
gridon;
title('布莱克曼');
(二)波形图
图7-1海明窗
图7-2布莱克曼窗
7.2用矩形窗设计一个线性相位高通滤波器。
(一