数字信号处理实验报告.docx
- 文档编号:12803346
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:28
- 大小:426.69KB
数字信号处理实验报告.docx
《数字信号处理实验报告.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验报告.docx(28页珍藏版)》请在冰点文库上搜索。
数字信号处理实验报告
数字信号处理实验报告
一、从给定的程序(文件包Friday.rar)中,选择一个源程序做详细标注。
(目的:
熟悉Matlab程序)
如下:
clear;%清空
closeall;%关闭所有图形
figure
(1);%创建以1为句柄的图形窗口
delta=1;%赋值delta为1
subplot(3,2,1);%将图像分为六个子区域,在第一个区域内绘制图形
plot([-10-delta],[00],'-k');%画一条直线,横坐标范围为-10到-1,纵坐标为0,黑色
holdon;%保留图形
plot([-delta-delta],[01],'-k');%画第二条条直线,横坐标范围为-1,纵坐标为0到1,黑色
holdon;%保留图形
plot([-deltadelta],[11],'-k');%画第三条直线,横坐标范围为-1到1,纵坐标为1,黑色
holdon;%保留图形
plot([deltadelta],[10],'-k');%画第四条直线,横坐标范围为1,纵坐标为1到0,黑色
holdon;%保留图形
plot([delta10],[00],'-k');%画第五条直线,横坐标范围为1到10,纵坐标为0,黑色
axis([-1010-0.51.5]);%坐标轴上横坐标范围为-10到+10,纵坐标为-0.5到1.5
text(-8,0.7,'\delta=1','FontSize',10);%在图形(-8,0.7)处标记delta=1,字体大小为10
subplot(3,2,2);%在第二个区域内绘制图形
Dimension1=41;%定义41维
delta_f1=5/delta/(Dimension1-1);%计算delta_f1等于0.125
S1=zeros(1,Dimension1);%生成1行41列全零矩阵S1
f=5/2/delta;%计算f=2.5
plot([-ff],[00],'--k');%画一条直线,横坐标范围为-2.5到2.5,纵坐标为0,虚线,黑色
holdon;%保留图形
f1=-f:
delta_f1:
f;%数组f1取值从-2.5到2.5,间距为0.125
N=-(Dimension1+1)/2;%赋N为-21
fori=1:
Dimension1
k=i+N;
t=k*delta_f1;%循环,当i在1到41中时,k=i-21,t=k*0.125
ifabs(t)<0.0001
S1(i)=2*delta;%t的绝对值小于0.0001时,S1(i)=2
else
S1(i)=sin(2*pi*delta*t)/pi/t;%否则,S1(i)=sin(2*pi*t)/pi/t
end
end
plot(f1,S1,'-k');%画图,横坐标照数组f1取值,纵坐标照s1取值,黑色
axis([-ff-0.52.5]);%横坐标范围为-2.5到2.5,纵坐标为-0.5到2.5
delta=5;%赋值delta为5
subplot(3,2,3);%将图像分为六个子区域,在第3个区域内绘制图形
plot([-10-delta],[00],'-k');%,画一条直线,横坐标范围为-10到-5,纵坐标为0,黑色
holdon;%保留图形
plot([-delta0],[01],'-k');%画第二条条直线,横坐标范围为-5到0,纵坐标为0到1,黑色
holdon;%保留图形
plot([0delta],[10],'-k');%画第三条条直线,横坐标范围为0到5,纵坐标为1到0,黑色
holdon;%保留图形
plot([delta10],[00],'-k');%画第四条直线,横坐标范围为5到10,纵坐标为0,黑色
axis([-1010-0.51.5]);%横坐标范围为-10到10,纵坐标为-0.5到1.5
text(-8,0.7,'\delta=5','FontSize',10);%在图形(-8,0.7)处标记delta=5,字体大小为10
subplot(3,2,4);%将图像分为六个子区域,在第四个区域内绘制图形
Dimension2=41;%赋值
delta_f2=6/delta/(Dimension2-1);%计算得delta_f2=0.03
S2=zeros(1,Dimension2);%生成1行41列全零矩阵S2
f=6/2/delta;%f=0.6
plot([-ff],[00],'--k');%画一条直线,横坐标范围为-0.6到0.6,纵坐标为0,虚线,黑色
holdon;%保留图形
f2=-f:
delta_f2:
f;%数组f2取值从-0.6到0.6,间距为0.03
N=-(Dimension2+1)/2;%赋N为-21
fori=1:
Dimension2
k=i+N;
t=k*delta_f2;%循环,当i在1到41中时,k=i-21,t=k*0.03
ifabs(t)<0.0001
S2(i)=delta;%t的绝对值小于0.0001时,S2(i)=5
else
p=sin(pi*delta*t);
S2(i)=p*p/pi/pi/delta/t/t;%否则p=sin(pi*5*t),S2(i)=p*p/pi/pi/5/t/t
end
end
plot(f2,S2,'-k');%画图,横坐标照数组f2取值,纵坐标照S2取值,黑色
axis([-ff-0.52.5]);%横坐标范围为-0.6到0.6,纵坐标为-0.5到2.5
beta=0.5;%赋值0.5
Dimension3=101;%赋值101
delta_t=0.25;%赋值0.25
N=(Dimension3-1)/2;%计算得N=50
s3=zeros(1,Dimension3);%定义s3为全零矩阵,1行101列
fori=1:
Dimension3
t=(i-N-1)*delta_t;
p=-beta*beta*t*t;
s3(i)=exp(p);%循环,当i在1到101中时,t=(i-51)*0.25,p=-0.25*t*t,s3(i)=exp(p)
end
subplot(3,2,5);%将图像分为六个子区域,在第5个区域内绘制图形
p=N*delta_t;%p=12.5
plot(-p:
delta_t:
p,s3,'-k');%画图,横坐标从-12.5到12.5,间距为0.25,纵坐标照s3取值,黑色
axis([-pp-0.21.2]);%横坐标范围为-12.5到12.5,纵坐标为-0.2到1.2
text(-p*0.8,0.5,'\beta=0.5');%在图形(-p*0.8,0.5)处标记\beta=0.5
S3=zeros(1,Dimension3);%定义S3为全零矩阵,1行101列
delta_f=0.01;%赋值0.01
fori=1:
Dimension3
t=(i-N-1)*delta_f;
p=-pi*pi*t*t/beta/beta;
S3(i)=sqrt(pi)/beta*exp(p);%循环,当i在1到101中时,t=(i-51)*0.01,p=-pi*pi*t*t/beta/beta,S3(i)=sqrt(pi)/beta*exp(p)
end
subplot(3,2,6);%将图像分为六个子区域,在第6个区域内绘制图形
p=N*delta_f;%p=0.5
plot(-p:
delta_f:
p,S3,'-k');%画图,横坐标从-0.5到0.5,间距为0.01,纵坐标照S3取值,黑色
holdon;%保留图形
plot([-pp],[00],'--k');%画图,横坐标从-0.5到0.5,纵坐标0,虚线,黑色
axis([-pp-0.24]);%横坐标范围为-0.5到0.5,纵坐标为-0.2到4
print-djpeg-r0Nine_Signals_CFT1.jpeg;%保留图片
figure
(2);%创立图形窗口2
subplot(321);%将图像分为六个子区域,在第1个区域内绘制图形
plot([00],[010],'-k');%画直线,横坐标为0,纵坐标从0到10,黑色
holdon;%保留图形
plot([-0.10],[910],'-k');%画直线,横坐标从-0.1到0,纵坐标从9到10,黑色
holdon;%保留图形
plot([0.10],[910],'-k');%画直线,横坐标从-0.1到0,纵坐标从9到10,黑色
holdon;%保留图形
holdon;%保留图形
plot([-55],[00],'-k');%画直线,横坐标从-5到5,纵坐标为0,黑色
axis([-55-115]);%横坐标范围为-5到5,纵坐标为-1到15
text(-0.3,12,'+\infty','FontSize',10);%在图形(-0.3,12)处标记+\infty,字体大小10
text(-4,7,'\delta(t)','FontSize',10);%在图形(-4,7)处标记\delta(t),字体大小10
subplot(322);;%将图像分为六个子区域,在第2个区域内绘制图形
plot([-1010],[11],'-k');%画直线,横坐标为从-10到10,纵坐标为1,黑色
holdon;%保留图形
axis([-101002]);%画直线,横坐标为从-5到0,纵坐标为-1,黑色
text(-8,1.5,'\Delta(f)=1','FontSize',10);%在图形(-8,0.5)处标记Delta(f)=1,字体大小10
subplot(323);%将图像分为六个子区域,在第3个区域内绘制图形
plot([-50],[-1-1],'-k');%画直线,横坐标为从-5到0,纵坐标为-1,黑色
holdon;%保留图形
plot([05],[11],'-k');%画直线,横坐标为从0到5,纵坐标为1,黑色
axis([-55-22]);%横坐标为从-5到5,纵坐标为从-2到2
text(-4,1,'sgn(t)','FontSize',10);%在图形(-4,1)处标记sgn(t),字体大小10
subplot(324);%将图像分为六个子区域,在第4个区域内绘制图形
N=50;%赋值
SGN=zeros(1,N);%创立1行50列的全零矩阵
delta_f=0.001;%赋值
fori=1:
N
p=delta_f*i;
SGN(i)=1/pi/p;%循环,当i在1到50中时,p=-0.001,SGN(i)=1/pi/p
end
plot(-delta_f:
-delta_f:
-N*delta_f,SGN,'--k');%画图,横坐标为从-0.001到-0.05,纵坐标为SGN,黑色,虚线
holdon;%保留图形
plot(delta_f:
delta_f:
N*delta_f,-SGN,'--k');%画图,横坐标为从0.001到0.05,纵坐标为SGN,黑色,虚线
p=30*delta_f;%赋值,p=0.03
axis([-pp-SGN
(1)-5SGN
(1)+5]);%横坐标范围为-0.03到0.03,-SGN
(1)-5SGN
(1)+5
text(-p*0.9,-100,'SGN(f)=(i\pif)^{-1}','FontSize',10);%在图形(-p*0.9,-100)处标记SGN(f)=(i\pif)^{-1},字体大小10
subplot(325);%将图像分为六个子区域,在第5个区域内绘制图形
plot([-50],[00],'-k');%画直线,横坐标为从-5到0,纵坐标为0,黑色
holdon;%保留图形
plot([05],[11],'-k');%画直线,横坐标为从0到5,纵坐标为1,黑色
axis([-55-12]);%横坐标为从-5到5,纵坐标为从-1到2
text(-4,1,'u(t)','FontSize',10);%在图形(-4,-1)处标记u(t),字体大小10
subplot(326);%将图像分为六个子区域,在第6个区域内绘制图形
t=SGN
(1)*0.75;%赋值
plot([00],[0t],'-k');%画直线,横坐标为0,纵坐标为从0到1,黑色
holdon;%保留图形
p=delta_f*1.3;
text(-p,SGN
(1)*0.85,'+\infty','FontSize',10);%在图形(-p,SGN
(1)*0.85)处标记+\infty,字体大小10
plot([-p0],[t*0.95t],'-k');%画图,横坐标为从-p到0,纵坐标为从t*0.95到t,黑色
holdon;%保留图形
plot([p0],[t*0.95t],'-k');%画图,横坐标为p到0,纵坐标为从t*0.95到t,黑色
holdon;%保留图形
plot(-delta_f:
-delta_f:
-N*delta_f,SGN/2,'--k');%画图,横坐标为从-0.001到-0.05,间距为0.001,纵坐标为SGN/2,黑色,虚线
holdon;%保留图形
plot(delta_f:
delta_f:
N*delta_f,-SGN/2,'--k');%画图,横坐标为从0.001到0.05,间距为0.001,纵坐标为-SGN/2,黑色,虚线
p=30*delta_f;%p=0.03
axis([-pp-SGN
(1)/2-5SGN
(1)]);%横坐标为从-p到p,纵坐标为从-SGN
(1)/2-5到SGN
(1)
text(-p*0.9,200,'U(f)=0.5\delta(f)','FontSize',10);%在图形(-p*0.9,200)处标记U(f)=0.5\delta(f),字体大小10
text(-p*0.7,100,'+(i2\pif)^{-1}','FontSize',10);%在图形(-p*0.7,100)处标记+(i2\pif)^{-1},字体大小10
print-djpeg-r0Nine_Signals_CFT2.jpeg;%储存图形
figure(3);%创建图形窗楼3
subplot(321);%将图像分为六个子区域,在第1个区域内绘制图形
N=100;%赋值
s=zeros(1,N);%创建一个1行100列的矩阵
delta_t=0.04;
alpha=0.5;
beta=5;
fori=1:
N
t=(i-1)*delta_t;
s(i)=exp(-alpha*t)*sin(beta*t);
end
%plot(0:
delta_t:
(N-1)*delta_t,s,'-k');
stem(0:
delta_t:
(N-1)*delta_t,s,'.k');
axis([0N*delta_t,-1,1]);%横坐标为从0到4,纵坐标为从-1到1
text(2,0.7,'RickerWavelet','FontSize',10);%在图形(2,0.7)处标记RickerWavelet,字体大小10
subplot(322);%将图像分为六个子区域,在第2个区域内绘制图形
title('SpectrumoftheRickerWavelet');%标题SpectrumoftheRickerWavelet
subplot(323);%将图像分为六个子区域,在第3个区域内绘制图形
alpha=0.5;
delta_t=0.1;
fori=1:
N
s(i)=exp(-alpha*(i-1)*delta_t);
end
plot(0:
delta_t:
(N-1)*delta_t,s,'-k');%画图,横坐标为从0到9.9,间距为0.1,纵坐标为s,黑色
axis([0N*delta_t-0.21]);%横坐标为从0到,纵坐标为从-1到10,
text(7,0.6,'\alpha=0.5','FontSize',12);%在图形(7,0.6)处标记\alpha=0.5,字体大小10
subplot(324);%将图像分为六个子区域,在第4个区域内绘制图形
delta_f=0.02;
M=101;
f1=-delta_f*(M-1)/2;%f1=-1
fori=1:
M
f=f1+(i-1)*delta_f;
S(i)=1/(alpha+sqrt(-1)*2*pi*f);
end
plot(f1:
delta_f:
-f1,real(S),'-k');%画图,横坐标为从-1到1,间距为0.02,纵坐标为real(S),黑色
holdon;%保留图形
plot(f1:
delta_f:
-f1,imag(S),'--k');%画图,横坐标为从-1到1,间距为0.02,纵坐标为img(S),黑色
holdon;%保留图形
subplot(325);%将图像分为六个子区域,在第5个区域内绘制图形
alpha=0.5;
N35=301;
delta_t=0.04;
s35=zeros(1,N35);%创建一个1行301列的矩阵
p=-(N35-1)/2*delta_t;%p=-6
fori=1:
N35
t=abs(p+(i-1)*delta_t);
s35(i)=exp(-alpha*t);
end
plot(p:
delta_t:
-p,s35,'-k');%画图,横坐标为从-6到6,间距为0.04,纵坐标为s35,黑色
axis([p-p-0.21]);%横坐标为从6到-6,纵坐标为从-0.2到1,
text(-5,0.6,'\alpha=0.5','FontSize',12)%在图形(-5,0.6)处标记\alpha=0.5,字体大小10
subplot(326);%将图像分为六个子区域,在第6个区域内绘制图形
delta_f=0.01;
N36=101;
S36=zeros(1,N36);%创建一个1行101列的矩阵
f1=-delta_f*(N36-1)/2;%f1=0.5
fori=1:
N36
f=f1+(i-1)*delta_f;
S36(i)=2*alpha/(alpha*alpha+4*pi*pi*f*f);
end
plot(f1:
delta_f:
-f1,S36,'-k');%画图,横坐标为从-0.5到0.5,间距为0.0,纵坐标为S36,黑色
print-djpeg-r0Nine_Signals_CFT3.jpeg;%储存图片
二、能够利用Matlab熟悉地画图,内容包括:
X、Y坐标轴上的label,每幅图上的title,绘画多条曲线时的legend,对图形进行适当的标注等。
(1)在一副图上画出多幅小图;
Untitled.m
;
(2)画出一组二维图形;
Untitled1.m
(3)画出一组三维图形
Untitled2.m
(4)画出复数的实部与虚部。
Untitled3.m
(5)完成对一个源程序进行详细注释
如下:
%时间域线性褶积的计算
clear%清除工作空间
closeall%关闭所有的图形窗口
x=[3,1,2]';%可以随意修改此数组的长度
y=[4,1,2,3]';%可以随意修改此数组的长度
N1=length(x);%N1=数组x的长度3
N2=length(y);%N2=数组x的长度4
NN=N1+N2-1;%NN=3+4-1
xy=zeros(1,NN);%xy为一行六列的零矩阵
A1=zeros(NN,N2);%A1为六行四列的零矩阵
forj=1:
N2%写出A1矩阵0000
fori=j:
j+N1-1%1000
A1(i,j)=x(i-j+1);%2100
end%0210
end%0021
xy1=A1*y;%xy1为A1与y矩阵的乘积即x与y的线性褶积
三、计算普通褶积与循环褶积,分别使用时间域与频率域两种方法进行正、反演计算,指出循环褶积计算时所存在的边界效应现象;编写一个做相关分析的源程序
源程序:
1、线性褶积的时间域算法
aa.m
运行结果:
Rxy=
17
15
17
11
2.循环褶积的时间域算法bb.m
xy2=
12
7
15
13
7
6
3、循环褶积的频率域算法cc.m
运行结果:
xy3=
12
7
15
13
7
6
4、循环褶积的边界效应
循环褶积计算时所存在的边界效应现象:
当L的值小于length(x)+length(y)-1的时候,循环褶积求出的结果与线性褶积求出的结果不相等,因为循环褶积是从离散序列中截取对应的长度作分析,截取的有效长度必须大于等于length(x)+length(y)-1才能得出正确结果。
5、相关分析dd.m
运行结果:
Rxy=
17
15
17
11
四、设计一个病态(矩阵)系统,分析其病态程度;找出对应的解决
方法(提示:
添加白噪因子)。
ee.m
运行结果:
ans=
0
0
0
0
BX=
1.4996
1.4986
3.4996
3.5006
BY=
Inf
Inf
Inf
Inf
五、设计一个一维滤波处理程序(1、分别做低通、高通、带通、带阻等理想滤波器进行处理;2、窗函数)
1.低通ff.m
2.高通gg.m
3.带通hh.m
4.带阻ii.m
窗函数jj.m
六、设计一个二维滤波处理程序(分别做低通、高通等处理)。
1kk.m运行结果:
2.ll.m
运行结果:
七、验证时间域的循环褶积对应的是频率域的乘积;线性褶积则不然
mm.m
运行结果:
X1=
24.0000
20.0000
52.0000
34.0000
26.0000
24.0000
X2=
24
20
52
34
26
24
XX=
1.0e-013*
0.1066
0.2132
0.0711
0
0
0.1776
Y1=
24
20
52
34
26
24
Y2=
180.0000
-27.0000
-3.0000
24.0000
-3.0000
-27.0000
>>
八、请用通俗、易懂的语言说明数字信号处理中的一种性质、一条定理或一个算例(顺便利用Matlab对其进行实现)。
对数字线形性质说明:
比如我们买水果,苹果和香蕉的价钱一样,那么买5斤苹果和6斤香蕉的总价钱是各分价之和,也可以把苹果和香蕉一起称量最后计算价钱。
对DFT的线性性质进行验证nn.m
运行结果:
M=
Columns1through2
7.121314.3799+8.6515i
Columns3through4
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 报告