数字信号处理实验.docx
《数字信号处理实验.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验.docx(27页珍藏版)》请在冰豆网上搜索。
数字信号处理实验
实验1常见离散信号产生和实现
一、实验目的
1、加深对常用离散信号的理解;
2、熟悉使用MATLAB在时域中产生一些基本的离散时间信号。
二、实验原理
MATLAB语言提供了一系列函数用来产生信号,如exp,sin,cos,square,sawtooth,ones,zeros等函数。
1.基本信号序列
1)单位抽样序列
在MATLAB中可以利用zeros()函数实现。
x=[1zeros(1,n-1)]
示范程序:
%ProgramP1_1
%GenerationofaUnitSampleSequence
clf;
%Generateavectorfrom-10to20
n=-10:
20;
%Generatetheunitsamplesequence
u=[zeros(1,10)1zeros(1,20)];
%Plottheunitsamplesequence
stem(n,u);
xlabel('Timeindexn');ylabel('Amplitude');
title('UnitSampleSequence');
axis([-102001.2]);
如果
在时间轴上延迟了k个单位,得到
即:
Request1:
编写一个
的函数。
2)单位阶跃序列
在MATLAB中可以利用ones()函数实现。
Request2:
编写一个
的函数。
3)实指数序列
MATLAB实现:
4)复指数序列
MATLAB实现:
5)随机序列
MATLAB提供了两种随机信号:
rand(1,N)产生[0,1]上均匀分布的随机矢量。
randn(1,N)产生均值为0,方差为1的高斯随机序列,即白噪声序列。
2.基本周期波形
1)方波
MATLAB工具箱函数square可以产生方波;
t=0:
0.1*pi:
6*pi;
y=square(t);
plot(t,y);
xlabel(‘时间t’);
ylabel(‘幅度y’);
axis([07*pi-1.51.5]);
2)正弦波
在MATLAB中
3)锯齿波
工具箱函数sawtooth函数可以产生锯齿波
Fs=10000;
t=0:
1/Fs:
1.5;%抽样长度1.5s,抽样频率为10kHz
x=sawtooth(2*pi*50*t);%信号频率为50Hz
plot(t,x);
axis()[00.2-11];%画出0.2秒的波形
3.基本非周期波形
工具箱函数chirp能产生一种扫射频率信号,其特点是信号的瞬时频率随时间按照一定规律变化
t=0:
1/1000:
2%抽样频率1kHz,抽样时间2s.
x=chirp(t,0.1,150)%0时刻为DC信号,1s时频率为150Hz。
specgram(x,256,1000,256,250);
4.sinc信号
MATLAB实现:
t=linspace(-5,5);
x=sinc(t);
plot(t,x);
5.序列的操作
1)信号加x(n)=x1(n)+x2(n)
MATLAB实现:
x=x1+x2;
注意:
x1和x2序列应该具有相同的长度,位置对应,才能相加。
2)信号乘x(n)=x1(n)*x2(n)
MATLAB实现:
x=x1.*x2;%数组乘法
3)改变比例y(n)=k*x(n)
MATLAB实现:
y=k*x;
4)折叠y(n)=x(-n);
MATLAB实现:
y=fliplr(x);
5)抽样和
MATLAB实现:
y=sum(x(n1:
n2));
6)抽样积
MATLAB实现:
y=prod(x(n1:
n2));
7)信号能量
MATLAB实现:
Ex=sum(abs(x).^2);
8)信号功率
MATLAB实现:
Px=sum(abs(x).^2)/N;
三、预习要求
1、预先阅读附录A(MATLAB基础介绍);
2、熟悉实验内容,预先编写好程序,准备好预习报告。
四、实验内容
编制程序产生上述5种信号,长度可输入确定,函数需要的参数可输入确定,并绘出其图形。
五、实验报告要求
(1)简述实验目的及实验原理。
(2)解释示范程序中MATLAB各个语句的功能
(3)按实验步骤附上实验过程中的实验程序和信号序列曲线,并对所得结果进行分析和解释。
(4)Request3:
讨论复指数序列的性质。
绘出信号
,当
、
时、
、
时的信号实部和虚部图;当
时呢?
此时信号周期为多少?
实验2离散系统的时域分析
一、实验目的
1、熟悉并掌握离散系统的差分方程表示法;
2、加深对冲激响应和卷积分析方法的理解。
二、实验原理
在时域中,离散时间系统对输入信号或者延迟信号进行运算处理,生成具有所需特性的输出信号,具体框图如下:
其输入、输出关系可用以下差分方程描述:
输入信号分解为冲激信号,
记系统单位冲激响应
,则系统响应为如下的卷积计算式:
当
时,h[n]是有限长度的(
),称系统为FIR系统;反之,称系统为IIR系统。
三、预习要求
1、在MATLAB中,熟悉利用函数
实现差分方程的仿真;
2、在MATLAB中,熟悉用函数
计算卷积,用
求系统冲激响应的过程。
四、实验内容
1、用MATLAB求系统响应
1)卷积的实现
线性移不变系统可由它的单位脉冲响应来表征。
若已知了单位脉冲响应和系统激励就可通过卷积运算来求取系统响应,即
程序:
%IllustrationofConvolution
x=input(‘Typeintheinputsequence=’);
h=input(‘Typeintheimpulseresponsesequence=’);
y=conv(x,h);
N=length(y-1);
n=0:
1:
N;
disp(‘outputsequence=’);disp(y);
stem(n,y);
xlabel(‘Timeindexn’);ylable(‘Amplitude’);
输入为:
x=[-201-13]
h=[120-1]
2)单位脉冲响应的求取
线性时不变因果系统可用MATLAB的函数filter来仿真
y=filter(b,a,x);
其中,x和y是长度相等的两个矢量。
矢量x表示激励,矢量a,b表示系统函数形式滤波器的分子和分母系数,得到的响应为矢量y。
例如计算以下系统的单位脉冲响应
y(n)+0.7y(n-1)-0.45y(y-2)-0.6y(y-3)=0.8x(n)-0.44x(n-1)+0.36x(n-2)+0.02x(n-3)
程序实现:
%IllustrationofImpulseResponseComputation
N=input(‘Desiredimpuseresponselength=’);
b=input(‘Typeinthevectorb=’);
a=input(‘Typeinthevectora=’);
x=[1zeros(1,N-1)];
y=filter(b,a,x);
k=0:
1:
N-1;
stem(k,y);
xlabel(’Timeindexn’);ylable(‘Amplitude’);
输入数据:
N=41
b=[0.8-0.440.360.02]
a=[10.7-0.45-0.6]
2、以下程序中分别使用conv和filter函数计算h和x的卷积y和y1,运行程序,并分析y和y1是否有差别,为什么要使用x[n]补零后的x1来产生y1;具体分析当h[n]有i个值,x[n]有j个值,使用filter完成卷积功能,需要如何补零?
clf;
h=[321-210-403];%impulseresponse
x=[1-23-4321];%inputsequence
y=conv(h,x);
n=0:
14;
subplot(2,1,1);
stem(n,y);
xlabel('Timeindexn');ylabel('Amplitude');
title('OutputObtainedbyConvolution');grid;
x1=[xzeros(1,8)];
y1=filter(h,1,x1);
subplot(2,1,2);
stem(n,y1);
xlabel('Timeindexn');ylabel('Amplitude');
title('OutputGeneratedbyFiltering');grid;
3、编制程序求解下列两个系统的单位冲激响应,分别用filter和impz实现,并绘出其图形。
给出理论计算结果和程序计算结果并讨论。
五、实验报告要求
(1)简述实验目的及实验原理。
(2)按实验步骤附上实验过程及结果。
(3)总结实验中的主要结论。
实验3离散系统的变换域分析
一、实验目的
1、熟悉对离散系统的频率响应分析方法;
2、加深对零、极点分布的概念理解。
二、实验原理
离散系统的时域方程为
其变换域分析方法如下:
频域:
系统的频率响应为:
Z域:
系统函数为:
分解因式:
,
其中
和
称为零、极点。
三、预习要求
1.在MATLAB中,熟悉函数tf2zp、zplane、freqz、residuez、zp2sos的使用,其中:
[z,p,K]=tf2zp(num,den)求得有理分式形式的系统函数的零、极点;zplane(z,p)绘制零、极点分布图;h=freqz(num,den,w)求系统的单位频率响应;[r,p,k]=residuez(num,den)完成部分分式展开计算;sos=zp2sos(z,p,K)完成将高阶系统分解为2阶系统的串联。
2.阅读扩展练习中的实例,学习频率分析法在MATLAB中的实现;
3.编程实现系统参数输入,绘出幅度频率响应和相位响应曲线和零、极点分布图。
四、实验内容
求系统
的零、极点和幅度频率响应和相位响应。
五、扩展练习
例1:
求下列直接型系统函数的零、极点,并将它转换成二阶节形式
解:
用MATLAB计算程序如下:
num=[1-0.1-0.3-0.3-0.2];
den=[10.10.20.20.5];
[z,p,k]=tf2zp(num,den);
m=abs(p);
disp('零点');disp(z);
disp('极点');disp(p);
disp('增益系数');disp(k);
sos=zp2sos(z,p,k);
disp('二阶节');disp(real(sos));
zplane(num,den)
输入到“num”和“den”的分别为分子和分母多项式的系数。
计算求得零、极点增益系数和二阶节的系数:
零点:
0.9615
-0.5730
-0.1443+0.5850i
-0.1443-0.5850i
极点:
0.5276+0.6997i
0.5276-0.6997i
-0.5776+