离散时间系统及离散卷积
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一、离散时间系统及离散卷积
1、单位脉冲响应
源程序:
function pr1() %定义函数pr1
a=[1,-1,0.9]; %定义差分方程y(n)-y(n-1)+0.9y(n-2)=x(n) b=1;
x=impseq(0,-20,120); %调用impseq函数(matlab软件的函数库)
n=[-20:120]; %定义n的范围,从-20 到120
h=filter(b,a,x); %调用函数给纵坐标赋值
figure(1) %绘图figure 1 (冲激响应)
stem(n,h); %在图中绘出冲激
title('单位冲激响应(耿海锋)'); %定义标题为:'冲激响应(耿海锋)'
xlabel('n'); %绘图横座标为n
ylabel('h(n)'); %绘图纵座标为h(n)
figure(2) %绘图figure 2
[z,p,g]=tf2zp(b,a); %绘出零极点图
zplane(z,p)
function [x,n]=impseq(n0,n1,n2) %声明impseq函数
n=[n1:n2];
x=[(n-n0)==0];
结果:
Figure 1:
Figure 2:
2、离散系统的幅频、相频的分析
源程序:
function pr2()
b=[0.0181,0.0543,0.0543,0.0181];
a=[1.000,-1.76,1.1829,-0.2781];
m=0:length(b)-1; % m的范围,从0 到3
l=0:length(a)-1; % l的范围,从0 到3
K=5000;
k=1:K;
w=pi*k/K; %角频率w
H=(b*exp(-j*m'*w))./(a*exp(-j*l'*w));%对系统函数的定义
figure(1)
magH=abs(H); %magH为幅度
angH=angle(H); %angH为相位
plot(w/pi,magH-耿海锋); %绘制w(pi)-magH-耿海锋的图形
figure(2)
axis([0,1,0,1]); %限制横纵座标从0到1
xlabel('w(pi)'); %x座标为 w(pi)
ylabel('|H|'); %y座标为 angle(H)-耿海锋
title('幅度,相位响应(耿海锋)'); %图的标题为:'幅度,相位响应(耿海锋)'
plot(w/pi,angH); %绘制w(pi)-angH的图形
grid; %为座标添加名称
xlabel('w(pi)'); %x座标为 w(pi)
ylabel('angle(H)'); %y座标为 angle(H)
结果:
Figure1
Figure2
3、卷积计算
源程序:
function pr3()
n=-5:50; %声明n的范围,从-5到50
u1=stepseq(0,-5,50); %调用stepseq函数声用明u1=u(n)
u2=stepseq(10,-5,50); %调用stepseq函数声用明u2=u(n-10)
%输入x(n)和冲激响应h(n)
x=u1-u2; %x(n)=u(n)-u(n-10)
h=((0.9).^n).*u1; %h(n)=0.9^n*u(n)
figure(1)
subplot(3,1,1); %绘制第一个子图
stem(n,x); %绘制图中的冲激
axis([-5,50,0,2]); %限定横纵座标的范围
title('输入序列-52101702-耿海锋'); %规定标题为:'输入序列-52101702-耿海锋'
xlabel('n'); %横轴为n
ylabel('x(n)'); %纵轴为x(n)
subplot(3,1,2); %绘制第二个子图
stem(n,h); %绘制图中的冲激
axis([-5,50,0,2]); %限定横纵座标的范围
title('冲激响应序列-52101702-耿海锋'); %规定标题为:'冲激响应序列-52101702-耿海锋'
xlabel('n'); %横轴为n
ylabel('h(n)'); %纵轴为h(n)
%输出响应
[y,ny]=conv_m(x,n,h,n); %调用conv_m函数
subplot(3,1,3); %绘制第三个子图
stem(ny,y);
axis([-5,50,0,8]);
title('输出响应-52101702-耿海锋'); %规定标题为:'输出响应-52101702-耿海锋'
xlabel('n');
ylabel('y(n)'); %纵轴为y(n)
%stepseq.m子程序
%实现当n>=n0时x(n)的值为1
function [x,n]=stepseq(n0,n1,n2)
n=n1:n2;
x=[(n-n0)>=0];
%con_m的子程序
%实现卷积的计算
function [y,ny]=conv_m(x,nx,h,nh) nyb=nx(1)+nh(1);
nye=nx(length(x))+nh(length(h)); ny=[nyb:nye];
y=conv(x,h);
结果: