数字信号处理实验.docx
- 文档编号:23713410
- 上传时间:2023-05-20
- 格式:DOCX
- 页数:33
- 大小:363.52KB
数字信号处理实验.docx
《数字信号处理实验.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验.docx(33页珍藏版)》请在冰豆网上搜索。
数字信号处理实验
实验一熟悉matlab环境
一、实验目的:
1熟悉matlab编程环境
1学会使用matlab对信号进行简单的运算
二、实验器材:
计算机
三、实验内容:
序列的基本运算以及序列图形的绘制
四、实验步骤:
1两个信号的相加减运算
信号的加减指两个长度相同的信号对应时刻的值相加减。
例:
已知两个向量a=[1111]和b=[1234],求c=a+b。
MATLAB程序:
>>a=[1111];
>>b=[1234];
>>c=a+b
c=
2345
2信号与标量的乘积
信号与标量的乘积的物理意义是将信号进行放大或缩小,也就是信号的尺度变换。
例:
已知信号
,求
。
MATLAB程序:
>>a=[1234];
>>c=3*a
c=
36912
3两个信号相乘
和乘方
两个信号相乘即两个长度相同的序列对应元素相乘,也就是点积运算。
用符号“.*”进行。
一个指数信号的表示,即乘方用“.^”
例:
已知两个向量a=[1111]和b=[1234],求a*b。
MATLAB程序:
>>a=[2222];b=[1234];
>>c=a.*b
c=
2468
4信号折叠
:
fliplr
序列以
为对称轴对褶,可用将矩阵或矢量进行左右翻转的函数fliplr。
源程序:
function[y,n]=sigfold(x,n)
%实现y(n)=x(-n)
y=fliplr(x);n=-fliplr(n);
return
>>x=[12345]
x=
12345
>>n=[01234]
n=
01234
>>[y,n]=sigfold(x,n)
y=
54321
n=
-4-3-2-10
5信号的卷积
c=conv(a,b)用于求矢量a和b的卷积,注意这里求的是线性卷积,即若a的长度是N,b的长度是M,则卷积之后c的长度是N+M-1。
例:
已知线性时不变系统的输入序列
,系统的单位取样响应是
,求系统的输出
。
>>a=[1111];
>>b=[11111];
>>c=conv(a,b)
c=
12344321
6length函数
length(x):
用来计算向量x的长度。
7画图函数stem简介
stem(x,y)
函数说明:
stem函数是一个二维的画图函数,其中x和y分别是两个长度相同的向量。
如果要绘制一个二维离散函数的图像,则x表示各个点横坐标的取值,y表示各个点纵坐标的取值。
stem(...,'fill')
函数说明:
这样的格式是可以将离散值的顶端填充成实心。
例如:
,画出该序列。
>>x=[1234];
>>n=(0:
3);
>>stem(n,x);
>>stem(n,x,'fill');
观察两幅图的不同之处。
五实验报告
1按照以上例题分别将matlab程序实现,并验证结果的正确性。
2在每道例题后面绘制出原序列和结果序列。
3用matlab实现下列函数并画图
(1)
(2)
求两个序列的卷积
,并分别画出序列x1(n),x2(n),x(n)。
实验二matlab中离散信号的表示
一、实验目的:
学会使用matlab表示离散信号
二、实验器材:
计算机
三、实验内容:
1、产生单位脉冲序列
2、产生单位阶跃序列
3、产生离散正弦信号
四、实验步骤:
1产生单位脉冲序列
(1)方法一
axis([xminxmaxyminymax]):
用来限制x轴和y轴的起止点。
xlabel('string')和ylabel('string'):
用来标注x轴和y轴。
text(x,y,'string'):
在(x,y)位置显示字符’string’。
function[x,n]=impseq(n0,n1,n2)
if((n0
error('必须满足n1<=n0<=n2')
end
n=[n1:
n2];
x=[(n-n0)==0];
return
>>n=[-5:
5];
>>x=impseq(0,-5,5);
>>stem(n,x);
>>ylabel('x(n)');axis([-5,5,0,1.5]);text(5.5,0,'n')
结果如图2.1。
(2)方法二
zeros(m,n)或者zeros([mn])
函数说明:
zeros(m,n)返回一个m行n列的
零矩阵。
>>x=[1zeros(1,9)];
>>n=(0:
9);
>>stem(n,x,'fill');
结果如图2.2。
2产生单位阶跃序列(矩形序列)
plot(x,y):
用来画由x和y向量各对应点组成的直线。
(1)方法一
function[x,n]=stepseq(n0,n1,n2)
%产生单位阶跃序列x(n)=u(n-n0)
if((n0
error('必须满足n1<=n0<=n2')
end
n=[n1:
n2];
x=[(n-n0)>=0];
return
>>n=[-1:
8];
>>a=length(n);
>>y1=zeros(1,a);
>>[x,n]=stepseq(3,-1,8);
>>stem(n,x,'filled'),holdon,plot(n,y1);
>>axis([0,12,0,1.1]);
>>text(12.2,0,'n')
>>ylabel('x(n)');
结果如图2.3。
(2)方法二
用MATLAB中的ones函数实现:
x=ones(1,N);
产生1行N列的1向量。
>>n=(0:
9);
>>x=ones(1,10);
>>stem(n,x,'fill');
3产生离散正弦信号
产生一个以1个单位作为采样间隔,,一个周
期采样50个点的正弦信号。
>>R=50;
>>%Generatesinsignal
>>m=0:
1:
R-1;
>>s=sin(2*pi*m/R);y1=zeros(1,50);
>>stem(m,s),holdon,plot(m,y1);
五实验报告
1按照上述步骤完成每个例题,学习每个函数的使用方法,将每道题的实验结果保留下来,附在实验报告上。
2用MATLAB产生一个序列
,
并画图。
附上实验程序和结果图。
3用MATLAB产生一个矩形序列
,
并画图。
附上实验程序和结果图。
4用MATLAB产生一个以2个单位作为采样间隔,,一个周期采样25个点的正弦信号,
。
附上实验程序和结果图。
5分析stem和plot函数的差别。
实验三用matlab进行系统分析
一、实验目的:
1、学会使用matlab进行系统分析,会求解差分方程
2、绘制零极点图
3、将有理传输函数的部分分式展开
二、实验器材:
计算机
三、实验内容:
1、求系统的零极点
2、系统零极点图的绘制
3、有理传输函数的部分分式展开
4、数字滤波器的单位脉冲响应
5、求解差分方程
四、实验步骤:
1、求系统的零极点
[z,p,k]=tf2zp(b,a)
函数说明:
该函数既可以用于模拟滤波又可以用于数字滤波。
其中a,b都为列矢量,是分子和分母多项式的系数降幂排列。
z表示零点的列矢量,p表示极点的列矢量,k表示增益。
例:
求以下传输函数的零极点和增益
>>b=[23];
>>a=[10.41];
>>[b,a]=eqtflength(b,a);%使两个矢量具有同样的长度
>>[z,p,k]=tf2zp(b,a)
结果是:
z=
0
-1.5000
p=
-0.2000+0.9798i
-0.2000-0.9798i
k=
2
写成零极点形式:
2、系统零极点图的绘制
函数zplane的调用格式:
zplane(z,p)
函数zplane(z,p)可以绘出列矢量z中的零点和列矢量p中的极点。
上题中的例子,画出它的零极点图
>>b=[23];
>>a=[10.41];
>>[b,a]=eqtflength(b,a);
>>[z,p,k]=tf2zp(b,a)
>>zplane(z,p);
3、有理传输函数的部分分式展开residuez
调用格式:
[r,p,k]=residuez(b,a)
将有理分式表示的传输函数展开成部分分式的形式,并且也可以将部分分式的形式转换回原来的有理分式形式。
设有理分式的分子和分母多项式分别是:
如果
没有重根,并且m>n,则有:
返回的列矢量p包含有理分式的极点位置,列矢量r包含各一次分式分子系数,即对应极点的留数,行矢量k包含z的负幂的多项式部分的系数。
如果length(b)小于length(a),矢量k是空的。
例题:
求以下传输函数的部分分式展开:
>>b=[0-3];
>>a=[2-52];
>>[r,p,k]=residuez(b,a)
r=
-1
1
p=
2.0000
0.5000
k=
[]
由此得到的部分分式展开:
例题:
求传输函数的部分分式展开
>>b=[18];
>>a=[183-4-1];
>>[r,p,k]=residuez(b,a)
r=
0.3600
0.2400
0.4000
p=
0.5000
-0.3333
-0.3333
k=
[]
由此得到原式的部分分式展开为:
4、数字滤波器的单位脉冲响应impz
调用格式:
[h,t]=impz(b,a)计算滤波器的脉冲响应h,取样点数n由impz自动选取,并记录在矢量t中(t=[0:
n-1])
[h,t]=impz(b,a,n)可以由用户指定取样点和取样时刻。
当n为标量时,t=[0:
n-1],即在0~n-1时刻计算冲激响应,0时刻表示滤波器的起点;当n为时间量时,则表示t=n,即在这些指定的时刻计算脉冲响应
例:
已知滤波器
画出滤波器的单位脉冲响应。
(画出50个点)
>>b=[0.20.10.30.10.2]
>>a=[1-1.11.5-0.70.3]
>>impz(b,a,50)
5求解差分方程
(1)filter(求解零状态响应)调用格式:
y=filter(b,a,X)b和a分别是系统函数中分子系数和分母系数的降幂排列,X为输入该系统的激励函数,y得到的是在激励X作用下,输出的响应。
此时求的是零状态响应。
例:
用MATLAB计算差分方程
当输入序列为
时的输出结果
。
解:
N=41;
b=[0.8-0.440.360.22];
a=[10.7-0.45-0.6];
x=[1zeros(1,N-1)];
k=0:
1:
N-1;
y=filter(b,a,x);
stem(k,y)
xlabel('n');ylabel('幅度')
(2)filtic调用格式:
z=filtic(b,a,y,x):
b和a分别是系统函数中分子系数和分母系数的降幂排列,y和x分别是系统和激励的初始值,即
,
。
z=filtic(b,a,y):
当激励的初始值为零时,使用该函数求出矢量z,再利用y=filter(b,a,x,z)求出全响应。
其中x为输入激励信号。
五实验报告
1按照上述步骤完成每个例题,学习每个函数的使用方法,将每道题的实验结果保留下来,附在实验报告上。
2给定系统的差分方程
(1)用MATLAB将系统函数展开成零点极点乘积的形式。
写出系统函数的零极点表示式。
(2)画出系统的零极点图。
(3)将系统函数展开成部分分式的形式。
写出展开的结果。
(4)求出系统的单位脉冲响应。
(
)
(5)若系统的输入激励是
,求此时系统的输出
。
其中
。
(6)若系统的初始条件为
,
,求系统全响应
以上每个小题都要求将程序和运算结果附在题后面,并计算结果是否与MATLAB得到的结果一致。
并写出(4)和(5)你自己手算的结果。
实验四用matlab计算频率响应
一、实验目的:
学会用matlab绘制滤波器或传输函数的频率响应
二、实验器材:
计算机
三、实验内容:
1、模拟滤波器频率响应的绘制
2、数字滤波器频率响应的绘制
四、实验步骤:
1、模拟滤波器频率响应的绘制
freqs函数可以一次画出滤波器的幅频特性和相频特性
调用格式:
[h,w]=freqs(b,a)自动设定200个频率点来计算频率响应
[h,w]=freqs(b,a,n)设定n个频率点来计算频率响应
freqs(b,a)
矢量b,a分别为分子和分母多项式的系数构成的矢量
例有一模拟滤波器,其传递函数如下,用freqs绘制出它的幅频特性和相频特性。
y=logspace(a,b)generatesarowvectoryof50logarithmicallyspacedpointsbetweendecades10^aand10^b.
>>a=[10.41];
>>b=[0.20.31];
>>w=logspace(-1,1);
>>freqs(b,a,w);
结果如图所示。
2、数字滤波器的频率响应函数freqz
调用格式:
[h,w]=freqz(b,a,n)可得到数字滤波器的n个频率点的复频响应,这n个频率点均匀的分布在上半单位圆上,并记录在w中,相应的频率响应记录在h中,n值最好选2的幂次方,默认时为512
h=freqz(b,a,w)计算在矢量w中指定的频率点处的频率响应,指定的频率要在0~2
之间
例:
求数字滤波器
的幅频和相频特性曲线。
>>b=[0.20.31];
>>a=[10.41];
>>freqz(b,a,128)
五实验报告
1有一模拟滤波器,其传递函数如下,用freqs绘制出它的幅频特性和相频特性。
2求数字滤波器
的幅频和相频特性曲线。
3设一阶系统的差分方程是
,求其幅频特性和相频特性。
实验五用matlab进行信号变换
一、实验目的:
1、理解离散傅里叶变换和傅里叶变换的关系
2、学会用matlab对信号进行离散傅里叶变换
二、实验器材:
计算机
三、实验内容:
1、求离散信号的傅里叶变换
2、求离散信号的傅里叶反变换
四、实验步骤:
1、求离散信号的傅里叶变换
离散傅里叶反变换:
y=fft(x)
y=fft(x,n)n点FFT
例:
,求
4点,8点,16点的离散傅里叶变换。
>>x=[1111]
x=
1111
>>y=fft(x,4)
y=
4000
>>y=fft(x,8)
y=
Columns1through4
4.00001.0000-2.4142i01.0000-0.4142i
Columns5through8
01.0000+0.4142i01.0000+2.4142i
>>y=fft(x,16)
y=
Columns1through4
4.00003.0137-2.0137i1.0000-2.4142i-0.2483-1.2483i
Columns5through8
00.8341+0.1659i1.0000-0.4142i0.4005-0.5995i
Columns9through12
00.4005+0.5995i1.0000+0.4142i0.8341-0.1659i
Columns13through16
0-0.2483+1.2483i1.0000+2.4142i3.0137+2.0137i
对比N=8和16的幅度谱
functiony=amplitude(x,n)
%amplitude计算序列x(n)的幅度谱
m=0:
1:
n-1;y1=zeros(1,n);
s=abs(fft(x,n))
subplot(2,1,n/8),stem(m,s),holdon,plot(m,y1);
return
>>x=[1111];
>>amplitude(x,8);
s=
Columns1through7
4.00002.613101.082401.08240
Column8
2.6131
>>amplitude(x,16);
s=
Columns1through7
4.00003.62452.61311.272800.85041.0824
Columns8through14
0.721000.72101.08240.850401.2728
Columns15through16
2.61313.6245
2、求离散信号的傅里叶反变换
y=ifft(x)
y=ifft(x,n)求n点的x傅立叶反变换
五实验报告
1已知序列
,求
,它的数值解是什么?
并绘图。
(附上MATLAB源程序)
2已知线性时不变系统的单位抽样响应
系统的输入
,求
与
的6点、8点、10点的圆周卷积,并画图。
(附上MATLAB源程序)
说明哪个圆周卷积是系统的输出。
实验六用MATLAB设计IIR数字滤波器
一、实验目的:
学会用MATLAB设计IIR数字滤波器
二、实验器材:
计算机
三、实验内容:
1学会用冲激响应不变法设计IIR数字滤波器
2学会用双线性法设计IIR数字滤波器
四、实验步骤
1冲激响应不变法实现模拟到数字滤波器的变换函数impinvar
调用格式:
[bz,az]=impinvar(b,a,Fs)
[bz,az]=impinvar(b,a)
函数说明:
[bz,az]=impinvar(b,a,Fs)可将矢量(b,a)表示的模拟滤波器变换成数字滤波器(bz,az),两者的冲激响应不变,即模拟滤波器的冲激响应按Fs取样后等同于数字滤波器的单位脉冲响应。
其中,b和a为行矢量,分别包含模拟域分子和分母多项式按s的降幂排列的系数,而bz和az也为列矢量,分别包含数字域分子和分母多项式按z的降幂排列的系数。
[bz,az]=impinvar(b,a)采用默认值为1Hz的Fs。
例:
设模拟滤波器的系统函数为
,试利用冲激响应不变法设计IIR数字滤波器。
>>b=[1];
>>a=[1sqrt
(2)1];
>>[bz,az]=impinvar(b,a);
bz=
00.4530
az=
1.0000-0.74970.2431
>>freqs(b,a);title('模拟滤波器的频率响应');
>>figure;%新打开一个绘图窗口
>>freqz(bz,az);title('数字滤波器的频率响应');
最后得到的数字滤波器的系统函数是
(T=1时)
2双线性变换实现模拟到数字滤波器的变换函数bilinear
调用格式:
[zd,pd,kd]=bilinear(z,p,k,Fs)
[zd,pd,kd]=bilinear(z,p,k,Fs,Fp)
[numd,dend]=bilinear(num,den,Fs)
[numd,dend]=bilinear(num,den,Fs,Fp)
函数说明:
[zd,pd,kd]=bilinear(z,p,k,Fs)为零极点增益表示的bilinear函数,其中z,p,k为s域传递函数的零点、极点和增益,Fs为取样频率;zd、pd、kd为双线性变换后z域传递函数的零点、极点和增益。
[numd,dend]=bilinear(num,den,Fs)为用传输函数表示的bilinear函数,这里的num和den为行矢量,分别包含模拟域分子和分母多项式按s的降幂排列的系数(NUM(s)/DEN(s)),numd和dend也为列矢量,分别包含数字域分子和分母多项式按z的降幂排列的系数(NUMd(s)/DENd(s)).
例:
用双线性变换法实现上例的模拟滤波器的系统函数,并比较用冲激响应不变法实现的数字滤波器和用双线性实现的区别。
>>b=[1];
>>a=[1sqrt
(2)1];
>>[bz,az]=bilinear(b,a,1)
bz=
0.08360.16710.0836
az=
1.0000-1.09780.5699
>>freqz(bz,az);
3巴特沃思滤波器的相关函数
(1)选择Butterworth滤波器阶数的函数buttord
调用格式:
[n,Wn]=buttord(Wp,Ws,Rp,Rs)
[n,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)
函数说明:
Buttord可在给定滤波器性能情况下,选择模拟或数字Butterworth滤波器的最小阶数,其中,Wp和Ws分别是通带和阻带的截止频率,取值范围为0 数字域 [n,Wn]=buttord(Wp,Ws,Rp,Rs)可得到数字Butterworth滤波器的最小阶数n,并使通带(0,Wp)内波纹系数小于Rp,在阻带(Ws,1)内衰减系数大于Rs。 Buttord还返回归一化数字截止频率Wn,这样利用butterworth函数可产生满足指定性能的滤波器。 利用buttord函数,还可以得到高通、带通和带阻滤波器的最小阶数。 当Wp>Ws时,这时为高通滤波器;当Wp和Ws为二元矢量时,若Wp 模拟域 [n,Wn]=buttord(Wp,Ws,Rp,Rs,’s’)可得满足指定性能的模拟Butterworth滤波器的阶数n和归一化模拟截止频率Wn,从而可利用buttord函数设计模拟滤波器。 (2)Butterworth模拟和数字滤波器设计函数butter 调用格式: [b,a]=butter(n,Wn) [b,a]=butter(n,Wn,’frype’) [b,a]=butter(n,Wn,’s’) 说明: a)数字域 [b,a]=butter(n,Wn): 可以设计出截止频率为Wn,n阶的Butterworth低通滤波器。 得到的滤波器的系统函数的系数b和a,分别表示系统函数分子和分母按z降幂排列的系数。 [b,a]=butter(n,Wn,’frype’)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验