实验2离散系统的时域分析
一、实验目的
1、熟悉并掌握离散系统的差分方程衣示法;
2、加深对冲激响应和卷积分析方法的理解。
二、实验原理
在时域中,离散时间系统对输入信号或者延迟信号进行运算处理,生成具有所需特性的输出信号,具
体框图如下:
■ |
其输入.输出关系可用以下差分方程描述:
V M
Zdkyln-幻二另Pkxln-幻
上=0 Jt=0
输入信号分解为冲激信号,
8
x[n]=另x[m]d[n-m]
刿=—尤
记系统单位冲激响应h[n]9则系统响应为如下的卷积计算式:
0O
y[n]= x[n] * h[n] =丫x[m]h[n-w ]
W=—X
当/=0用=1;2;????时,蚯]是有限长度的严:[°M),称系统为FIR系统;反之,称系统为IIR系统。
三、实验内容
1、用MATLAB求系统响应
1)卷积的实现
线性移不变系统可由它的单位脉冲响应来衣征。若已知了单位脉冲响应和系统激励就
可通过卷积运算来求取系统响应,即>?(/?)= x(n)*/?(/?)
程用:
x=input(<Typein the input sequence二'); %输入x
h=input(<Tvpein the impulse response sequence=>):%输入hy=conv(x.h);%对x,h 进行卷积 N=length(y)-1;%求出N的值
n=0:l:N; %】】从0开始,间隔为1的取值取到N为止
dispCoutput sequence^); disp(y); %输出 y stem(iLy):散图
%画出】】为横轴,y为纵轴的离
xlabelCTime index nJ: ylableC Amplitude J: % 规定 x 轴 y 轴的标签 输入为:
x=[-2 0 I -1 3]
2 0-1]
图形:
2)单位脉冲响应的求取
线性时不变因果系统可用MATLAB 的函数filter 来仿真
y=filter(b,a,x);
其中,X 和y 是长度和等的两个矢量。矢量x 农示激励,矢量a, b 衣示系统函数形式 滤波器的分了?和分母系数,得到的响应为矢量y。例如计算以下系统的单位脉冲响应 y(n)+0.7y(n-l )-0.45y(y-2)-
0.6y(y-3)=0.8x(n)-0.44x(n-l )+0.36x(n-2)+0.02x(n-3)
程序:
N^npuK*Desired impuse response length 二 J;
b=input(cType in the vector b=');
a=input(<Type in the vector a=');
x=[l zeros(l,N-l)];
y=filter(b,a.x);
k=0:l:N-l:
stem(k.y);
xlabelf'Timeindex n‘); ylable('Amplitude');
输入:
N=41b=[0.8 -0.44 0.36 0.02]
a=[I0.7 -0.45 -0.6]
图形: | ■ |
□ 5 10 15 20 25 3J 35 40 |
Timeindex n
2、 filter
yl是否有差别,为什么要使用x[n]补零后的xl来产生yl:具体分析当h[n]有i个值,x[n]有j个值,使用filter完成卷积功能,需要如何补零?
程序:
elf;
h= [3 2 1 -2 1 0 -4 0 3]; %impulse response
x= [1 -2 3 -4 3 2 1]; %input sequence
y= conv (h, x);
n= 0:14;
subplot(2, 1, 1);
stem(n,y);
xlabel(*Timeindex n' );ylabel(*Amplitude*);titleOutputObtained by Convolution*);grid;xl = [x zeros (1,8)];
yl= filter(h,1,xl);
subplot(2,1, 2);
stem(n,yl);
xlabelCTimeindex n' );ylabel(*Amplitude*);titleOutputGenerated by Filtering'); grid;
Outputobtameo oy con elution
三 |
? 4 6 6 8 B io 10 12 12 14 14 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---------1 -------- | Time mcex n Time index n | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
OutputGenerated by Filtering
因为在y=filter(b,a,x)中,利用给定矢fita和b对x中的数据进行滤波,结果放入y矢址中,y与K长度要相
等.所以要使用x[n]补零后的xl來产生yl°
若h[n]有i个值,x[n]有j个值,则口=[xzeros(l,i-l)
3、编制程序求解下列两个系统的单位冲激
响应,分别用filter和impz实现,并绘出其图形。
y[n] + 0.75 y[n-l] + 0.125j[w-2] =墟刃]-xpi -1]
y[n] = 0.25 {x[號一 1]+ x[n — 2] +城〃一3] + x[兀一 4]}
给出理论计算结果和程序计算结果并讨论。
第-题:
filter 实现:
程序:
N=input(* Desired impuse response length= *);
b=input(1Type in the vector b=1);
a=input(1Type in the vector a=1);
x=[1 zeros (1ZN-1)];
y=filter(b,az x);
k=0:1:N-l;
stem(kz y);
xlabel(* Time index nf);
ylabel('Amplitude');
图形:
b 匸:+ 虽,?至43 保■ ???■亦?停.■磅…今
c>
-1.5
■ |
|
|
Time inde<
n
impz实现:
程序:
b=input(1Type in the vector b=');a=input('Typein the vector a=1);N=25
y=impz(b, a,N);k=0:l:N-l;stem(k,y);
xlabel('Timeindex n *);ylabel(1Amplitude*);图形:
七◎0令o仓谗於00 Q佥金
| | I | 20 | 25 |
10 | 15 |
TirreIndex n
第二题:
filter实现:
程序:
N=input(fDesired Inipuse response length^ r);b=input(9Type inthe vectorb=9);
a=lnput(fTypeInthe vector a= 9);
x=[lzeros ];
y=filter(bfafx);
k=0:1:N-l;
ste/n(kfy);
xlabel(9Time Index n 9);
ylabel('Amplituder);
输入:
Typein the vector b=[0.25 0.25 0.25 0.25]
Typein the vector a=l
N=25
impz实现:
程序:
b=input('Typein the vector b=');
a=?nput('Typein the vector a=');
N=30
y=impz(brazN);
k=0:1:N-1;
stem(k.y);
label(1Time index n ' ) ; ylabel (1Amplitude '); 图形:
015
005
| o o c o | Time intfex n | 25 |
四、小结
通过此次实验,了解了卷枳在Matlab中汁算方法.学会川 算魏位脉冲响应的方法°
求系统的脉冲响应由两步组成:
①由y(n)=x(n)*h(n)求出y(n)在MATLAB中用conv(x.h〉实现
②用filled求出单位脉冲响应