数字信号处理实验指导书文档格式.docx
- 文档编号:18163806
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:90
- 大小:399.62KB
数字信号处理实验指导书文档格式.docx
《数字信号处理实验指导书文档格式.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验指导书文档格式.docx(90页珍藏版)》请在冰豆网上搜索。
);
axis([n1,n2,0,1.1*max(x)]);
xlabel('
时间(n)'
ylabel('
幅度x(n)'
title('
单位脉冲序列'
运行结果如图1-1所示:
图1-1
例1-2用zeros函数和抽样点直接赋值来产生单位抽样序列。
n1=-5;
k=0;
nt=length(n);
(取参数的长度)
nk=abs(k-n1)+1;
{取绝对值}
x=zeros(1,nt);
{(行、列)}(zeros生成零矩阵)
x(nk)=1;
绘图部分的程序及作图结果与例1-1相同。
例1-3生成移位的单位脉冲序列。
n1=-5;
n0=2;
x=[(n-n0)==0];
运行结果如图1-2所示
图1-2
2)单位阶跃序列
单位阶跃序列表示式为
或
以下三段程序分别用不同的方法来产生单位阶跃序列。
例1-4用MATLAB的关系运算式来产生单位阶跃序列。
n1=-2;
n2=8;
x=[n>
=n0];
单位阶跃序列'
box
运行结果如图1-3所示:
图1-3
例1-5用zeros和ones函数来产生单位阶跃序列。
x=[zeros(1,nk-1),ones(1,nt-nk+1)];
绘图部分的程序及作图结果与例1-4相同。
.
例1-6生成移位的单位阶跃序列。
n1=-10;
n2=10;
n0=4;
x=[(n-n0)>
=0];
移位的单位阶跃序列'
程序运行结果如图1-4所示:
图1-4
3)实指数序列
实指数序列的表示式为x(n)=an其中a为实数
例1-7编写产生a=1/2和a=2的实指数连续信号和离散序列的程序
a1=0.5;
a2=2;
na1=n1:
0;
x1=a1.^na1;
na2=0:
x2=a2.^na2;
subplot(2,2,1);
plot(na1,x1);
(图形窗口)
实指数信号(a<
1)'
subplot(2,2,3);
stem(na1,x1,'
实指数序列(a<
subplot(2,2,2);
plot(na2,x2);
实指数信号(a>
subplot(2,2,4);
stem(na2,x2,'
程序运行结果如图1-5所示:
图1-5
4)复指数序列
复指数序列的表示式为x(n)=e(σ+jω)n
当ω=0时,x(n)为实指数序列;
当σ=0时,x(n)为虚指数序列,即
ejωn=cos(ωn)+jsin(ωn)
其实部为余弦序列,虚部为正弦序列。
例1-8编写程序产生σ=-0.1,ω=0.6的复指数连续信号与离散序列。
n1=30;
a=-0.1;
w=0.6;
n=0:
n1;
x=exp((a+j*w)*n);
plot(n,real(x));
复指数信号的实部'
stem(n,real(x),'
复指数序列的实部'
plot(n,imag(x));
复指数信号的虚部'
stem(n,imag(x),'
复指数序列的虚部'
程序运行结果如图1-6所示
图1-6
5)正(余)弦序列
正(余)弦序列的表示式为x(n)=Umsin(ω0n+Θ)
例1-9已知一时域周期性正弦信号的频率为1Hz,振幅值为1V。
编写程序在图形窗口上显示两个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号。
f=1;
Um=1;
nt=2;
N=32;
T=1/f;
dt=T/N;
nt*N-1;
tn=n*dt;
x=Um*sin(2*f*pi*tn);
subplot(2,1,1);
plot(tn,x);
axis([0,nt*T,1.1*min(x),1.1*max(x)]);
x(t)'
subplot(2,1,2);
stem(tn,x);
x(n)'
程序运行结果如图1-7所示
图1-7
6)矩形波序列
MATLAB提供有专门函数square用于产生矩形波。
其调用格式如下:
x=square(t):
类似于sin(t),产生周期为2π,幅值为±
1的方波。
x=square(t,duty):
产生指定周期的矩形波,其中duty用于指定占空比。
将square的参数t换成n,且n取整数,则可以获得矩形序列。
例1-10一个周期性矩形信号频率为5kHz,信号幅度在0~2V之间,占空比为0.25,。
编写程序生成该信号,要求在图形窗口上显示2个周期的信号波形;
对信号的一个周期进行16点采样获得离散信号。
f=5000;
N=16;
x=square(2*f*pi*tn,25)+1;
程序运行结果如图1-8所示;
三、.实验内容:
1、阅读并上机验证实验原理部分的例题程序,理解每一条语句的含义。
改变例题中的有关参数(如信号的频率、周期、幅度、显示时间的取值范围、采样点数等),观察对信号波形的影响。
2、编写程序,产生以下离散序列:
(1)f(n)=δ(n)(-3<
n<
4)
(2)f(n)=u(n)(-5<
5)
(3)f(n)=e(0.1+j1.6∏)n(0<
16)
(4)f(n)=3sin(nП/4)(0<
20)
3、一个连续的周期性方波信号频率为200Hz,信号幅度在-1~+1V之间,要求在图形窗口上显示其两个周期的波形。
以4kHz的频率对连续信号进行采样,编写程序生成连续信号和其采样获得的离散信号波形。
四、.实验预习:
1、预先阅读附录部分的MATLAB基础介绍,认真阅读实验原理,明确本次实验任务,读懂例题程序,了解实验方法。
2、根据实验内容预先编写实验程序。
3、预习思考题:
产生单位脉冲序列和单位阶跃序列各有几种方法?
如何使用?
五、实验报告
1、列写调试通过的实验程序,打印实验程序产生的曲线图形。
2、思考题:
通过例题程序,你发现采样频率Fs、采样点数N、采样时间间隔dt在程序编写中有怎样的联系?
使用时需注意什么问题?
实验2离散LSI系统的时域分析
1、加深对离散系统的差分方程、单位脉冲响应、单位阶跃响应和卷积分析方法的理解。
2、初步了解用MATLAB语言进行离散时间系统时域分析的基本方法。
3、掌握求解离散时间系统的单位脉冲响应、单位阶跃响应、线性卷积以及差分方程的程序的编写方法,了解常用子函数的调用格式
二、实验原理:
1、离散LSI系统的响应与激励
由离散时间系统的时域分析方法可知,一个离散LSI系统的响应与激励可以用如下框图表示:
其输入、输出关系可用以下差分方程描述:
2、用函数impz和dstep求解离散系统的单位脉冲响应和单位阶跃响应。
例2-1已知描述某因果系统的差分方程为6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3)
满足初始条件y(-1)=0,x(-1)=0,求系统的单位脉冲响应和单位阶跃响应。
解:
将y(n)项的系数a0进行归一化,得到
y(n)+1/3y(n-2)=1/6x(n)+1/2x(n-1)+1/2x(n-2)+1/6x(n-3)
分析上式可知,这是一个3阶系统,列出其bk和ak系数:
a0=1,a,1=0,a,2=1/3,a,3=0
b0=1/6,b,1=1/2,b,2=1/2,b,3=1/6
程序清单如下:
a=[1,0,1/3,0];
b=[1/6,1/2,1/2,1/6];
N-1;
hn=impz(b,a,n);
gn=dstep(b,a,n);
subplot(1,2,1);
stem(n,hn,'
k'
系统的单位序列响应'
h(n)'
n'
axis([0,N,1.1*min(hn),1.1*max(hn)]);
subplot(1,2,2);
stem(n,gn,'
系统的单位阶跃响应'
g(n)'
axis([0,N,1.1*min(gn),1.1*max(gn)]);
程序运行结果如图2-1所示:
图2-1
3、用函数filtic和filter求解离散系统的单位序列响应和单位阶跃响应。
例2-2已知描述某因果系统的差分方程为6y(n)-2y(n-4)=x(n)-3x(n-2)+3x(n-4)-x(n-6),满足初始条件y(-1)=0,x(-1)=0,求系统的单位脉冲响应和单位阶跃响应。
时间轴上N取32点。
注意:
原式非标准形式,必须化为标准形式后再列出系数b,a。
x01=0;
y01=0;
a=[1,0,0,0,-1/3,0,0];
b=[1/6,0,-1/2,0,1/2,0,-1/6];
xi=filtic(b,a,0);
x1=[n==0];
hn=filter(b,a,x1,xi);
x2=[n>
gn=filter(b,a,x2,xi);
程序运行结果如图2-2所示:
图2-2
4、用MATLAB实现线性卷积
1)用函数conv进行卷积运算:
求解两个序列的卷积和,关键在于如何确定卷积结果的时宽区间。
MATLAB提供的求卷积函数conv默认两个序列的序号均从n=0开始,卷积结果y对应的序列的序号也从n=0开始。
例2-3已知两个序列f1=0.8n(0<
20),f2=u(n)(0<
10),求两个序列的卷积和。
n1=0:
20;
f1=0.8.^n1;
stem(n1,f1,'
f1(n)'
n2=0:
10;
N2=length(n2);
f2=ones(1,N2);
stem(n2,f2,'
f2(n)'
y=conv(f1,f2);
stem(y,'
程序运行结果如图2-3所示:
图2-3
2)非零起始序列的卷积运算:
当两个序列不是从0开始时,必须对conv函数稍加扩展。
由卷积原理可知,若待卷积的两个序列序号分别为{x(n);
nx=nxs:
nxf},{h(n);
nh=nhs:
nhf},则卷积和y(n)的序号起点和终点分别为:
nys=nxs+nhs,nyf=nxf+nhf。
据此可定义通用卷积函数convu:
function[y,ny]=convu(h,nh,x,nx)
nys=nh
(1)+nx
(1);
nyf=nh(end)+nx(end);
y=conv(h,x);
ny=nys:
nyf;
例2-4已知序列f1=0.5n(0<
10),f2=u(n+2)(-2<
f1=0.5*n1;
n2=-2:
nt=length(n2);
f2=ones(1,nt);
[y,ny]=convu(f1,n1,f2,n2);
stem(n1,f1);
stem(n2,f2);
stem(ny,y);
程序运行结果如图2-4所示:
图2-4
3)卷积积分的动态过程演示:
为了更深入地理解序列卷积的原理,下面提供一段演示卷积和的动态过程的程序。
例2-5动态演示例2-3两个序列f1=0.8n(0<
10)的卷积和。
clf;
nf1=0:
lf1=length(n1);
nf2=0:
lf2=length(n2);
f2=ones(1,lf2);
m=max(lf2,lf1);
iflf2>
lf1nf2=0;
nf1=lf2-lf1;
elseiflf2<
lf1nf1=0;
nf2=lf1-lf2;
elsenf2=0;
lf1=0;
end;
lt=m;
u=[zeros(1,lt),f2,zeros(1,nf2),zeros(1,lt)];
t1=(-lt+1:
2*lt);
f1=[zeros(1,2*lt),f1,zeros(1,nf1)];
hf1=fliplr(f1);
N=length(hf1);
y=zeros(1,3*lt);
fork=0:
2*lt
p=[zeros(1,k),hf1(1:
N-k)];
y1=u.*p;
yk=sum(y1);
y(k+lt+1)=yk;
subplot(4,1,1);
stem(t1,u);
subplot(4,1,2);
stem(t1,p);
subplot(4,1,3);
stem(t1,y1);
subplot(4,1,4);
stem(k,yk);
axis([-20,50,0,5]);
holdon
pause
(2);
end
程序运行结果如图2-5所示:
图2-5
5、离散LSI系统时域响应的求解:
MATLAB提供了多种方法求解离散LSI系统的响应:
1)用conv函数进行卷积积分,求任意输入的系统零状态响应;
例2-6已知描述某因果系统的差分方程为6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3),
满足初始条件y(-1)=0,x(-1)=0。
在该系统的输入端加一个矩形脉冲序列,其占空比为0.25,一个周期取16个采样点,求该系统的响应。
x=[ones(1,N/4),zeros(1,3*N/4)];
stem(n,x);
a=[1,0,1/3,0,];
stem(n,hn);
y=conv(x,hn);
stem(y);
程序运行结果如图2-6所示:
图2-6
2)用dlsim函数求任意输入的系统零状态响应;
例2-7已知某IIR数字低通滤波器的系统函数为
输入两个正弦叠加的序列
,求该系统的响应。
nx=0:
8*pi;
x=sin(nx/2)+sin(10*nx)/3;
subplot(3,1,1);
stem(nx,x);
a=[1,-0.34319,0.60439,-0.20407];
b=[0.1321,0.3963,0.3963,0.1321];
nh=0:
9;
h=impz(b,a,nh);
subplot(3,1,2);
stem(nh,h);
y=dlsim(b,a,x);
subplot(3,1,3);
程序运行结果如图2-7所示
图2-7
3)用filtic和filter函数求任意输入的系统完全响应。
例2-8已知描述某系统的差分方程为y(n)-1.5y(n-1)+0.5y(n-2)=x(n)n≥0,满足初始条件y(-1)=4,y(-2)=10,求系统输入为x(n)=(0.25)nu(n)时的零输入、零状态及全响应。
解为了更深入地理解filtic和filter函数的用法,先用经典法求得系统完全响应表达式:
,并编写程序绘出其图形,以便与用MATLAB函数求解的结果进行对比。
a=[1,-1.5,0.5];
b=1;
N=20;
x=0.25.^n;
x0=zeros(1,N);
y01=[4,10];
xi=filtic(b,a,y01);
y0=filter(b,a,x0,xi);
xi0=filtic(b,a,0);
y1=filter(b,a,x,xi0);
y=filter(b,a,x,xi);
y2=((1/3)*(1/4).^n+(1/2).^n+(2/3)).*ones(1,N);
subplot(2,3,1);
输入信号x(n)'
subplot(2,3,2);
stem(n,y0);
系统的零输入响应'
subplot(2,3,3);
stem(n,y1);
系统的零状态响应'
stem(n,y);
用filter求得的完全响应'
stem(n,y2);
经典法求得的完全响应'
程序运行结果如图2-8所示:
图2-8
三、实验内容:
1、输入并运行例题程序,理解每一条语句的含义。
2、已知描述某离散LSI系统的差分方程为2y(n)-3y(n-1)+y(n-2)=x(n-1),分别用impz和dstep函数、filtic和filter函数两种方法求解系统的单位序列响应和单位阶跃响应。
3、编写程序描绘下列序列的卷积波形:
(1)f1(n=u(n),f2(n)=u(n-2),(0≤n<
10)
(2)x(n)=sin(n/2),h(n)=(0.5)n(-3≤n≤4П)
4、已知某离散LSI系统的单位序列响应为h(n)=3δ(n-3)+0.5δ(n-4)+0.2δ(n-5)+0.7δ(n-6)-0.8δ(n-7)
求输入为x(n)=e-0.5nu(n)时的系统响应。
5、已知描述某离散LSI系统的差分方程为y(n)=0.7y(n-1)+2x(n)-x(n-2),求输入为x(n)=u(n-3)时的系统响应。
四、实验预习:
1、认真阅读实验原理部分,明确实验目的,复习有关离散LSI系统的理论知识。
2、读懂实验原理部分的例题程序,熟悉与本实验有关的MATLAB函数。
3、根据实验内容预先编写实验程序,并思考本实验提出的有关MATLAB函数在调用时应注意哪些问题。
五、实验报告:
2、列出本实验提出的有关MATLAB函数在调用时应注意的问题。
实验3离散LSI系统的频域分析
一、实验目的
1、加深对离散系统变换域分析——z变换的理解,掌握使用MATLAB进行z变换和逆z变换的常用函数的用法。
2、了解离散系统的零极点与系统因果性和稳定性的关系,熟悉使用MATLAB进行离散系统的零极点分析的常用函数的用法。
3、加深对离散系统的频率响应特性基本概念的理解,掌握使用MATLAB进行离散系统幅频响应和相频响应特性分析的常用方法。
二、实验原理
1、z变换和逆z变换
(1)用ztrans函数求无限长序列的z变换。
该函数只给出z变换的表达式,而没有给出收敛域。
另外,由于这一函数还不尽完善,有的序列的z变换还不能求出,逆z变换也存在同样的问题。
例7-
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 指导书
![提示](https://static.bdocx.com/images/bang_tan.gif)