1学号:信号与系统实验报告学生姓名班级电子BF院部物理与电子学院专业电子科学与技术任课老师王晓明指导老师王晓明二0一四——二0一五学年第二学期2实验项目名称:实验四:信号的表示与信号的运算实验成绩:实验日期:2015.6.14实验室:6404一、实验目的学习使用MATLAB产生基本信号、绘制信号波形、实现信号的基本运算,为信号分析和系统分析奠定基础。二、相关知识点1.连续信号的产生2.离散信号的产生及基本运算三、实验原理、方法和手段MATLAB提供了许多函数用于产生常用的基本信号:如阶跃信号、脉冲信号、指数信号、正弦信号和周期矩形波信号等。这些基本信号是信号处理的基础。1.连续信号的产生(1)阶跃信号产生阶跃信号的MATLAB程序如下:t=-2:0.02:6;x=(t=0);plot(t,x);axis([-2,6,0,1.2]);(2)指数信号产生随时间衰减的指数信号的MATLAB程序如下:t=0:0.001:5;x=2*exp(-1*t);plot(t,x);(3)正弦信号利用MATLAB提供的函数cos和sin可产生正弦和余弦信号。产生一个幅度为2,频率为4Hz,相位为/6的正弦信号的MATLAB程序如下:f0=4;w0=2*pi*f0;t=0:0.001:1;x=2*sin(w0*t+pi/6);3plot(t,x);(4)矩形脉冲信号函数rectpulse(t,w)可产生高度为1、宽度为w、关于t=0对称的矩形脉冲信号。产生高度为1、宽度为4、延时2秒的矩形脉冲信号的MATLAB程序如下:t=-2:0.02:6;x=rectpuls(t-2,4);plot(t,x);(5)抽样信号可使用函数sinc(x)计算抽样信号,函数sinc(x)的定义为,产生的MATLAB程序如下:t=-10:1/500:10;x=sinc(t/pi);plot(t,x);2.离散信号的产生(1)单位脉冲序列和单位阶跃序列函数zeros(1,n)可以生成单位脉冲序列,产生1行n列的由0组成的矩阵。产生单位脉冲序列的MATLAB程序如下:k=-4:20;x=[zeros(1,7),1,zeros(1,17)];stem(k,x)函数ones(1,n)可以生成单位阶跃序列,产生1行n列的由1组成的矩阵。产生单位阶跃序列的MATLAB程序如下:k=-4:20;x=[zeros(1,7),ones(1,18)];stem(k,x)(2)指数序列产生离散指数序列的MATLAB程序如下:k=-5:15;x=0.3*(1/2).^k;stem(k,x);(3)正弦序列产生正弦序列的MATLAB程序如下:k=-10:10;omega=pi/3;x=0.5*sin(omega*k+pi/5);tttx/)sin()(xxxπ/)πsin()(csin4stem(k,x);(4)白噪声序列白噪声序列在信号处理中是常用的序列。函数rand可产生在[0,1]区间均匀分布的白噪声序列,函数randn可产生均值为0,方差为1的高斯分布白噪声。N=20;k=0:N-1;x=rand(1,N)stem(k,x);3.离散序列的基本运算信号的运算是数字信号处理的重要内容。对输入信号按指定的算法进行运算以提取有用信息,而这些算法可以分解为若干基本运算。离散信号的基本运算主要包括:信号的加、乘、移位、翻转、卷积、相关等。这些运算的MATLAB实现方法如下表:5四、实验条件计算机一台,MATLAB软件。五、实验步骤及结果测试1.利用MATLAB产生下列信号并作图。(1)()3(1),15xtutt(2)0.12()sin(),0303txtett(3)()cos(100)cos(2000),0.10.1xtttt(4)1,55[]-15150,kxkk,其它(5)[](0.9)[sin(0.25)cos(0.25)],2020kxkkkk解:1.(1)MATLAB程序如下:t=-1:0.01:5;x=-3*(t=1);plot(t,x);(2)MATLAB程序如下:6t=0:0.001:30;x=exp(-0.1*t).*sin(2/3*t);plot(t,x);图(1)图(2)(3)MATLAB程序如下:t=-0.1:0.01:0.1;w0=100;w1=2000;x=cos(w0*t)+cos(w1*t);plot(t,x);(4)MATLAB程序如下:k=-14:15;x=[zeros(1,9),ones(1,11),zeros(1,10)];stem(k,x)(5)MATLAB程序如下:k=-19:0.001:20;a=0.9;w1=0.25*pi;w2=0.25*pi;x=a.^k.*[sin(w1*k)+cos(w2*k)];stem(k,x);7图(3)图(4)图(5)2.已知无限长序列[]0.5[]kxkuk(1)计算信号的总能量;(2)分别计算序列前10点、前20点和前30点的能量及占总能量的百分比。解:MATLAB程序如下:k=0:50;x=(0.5).^k;E=sum(abs(x).^2);fprintf('E=%2.16f\n',E);k1=0:10;x1=(0.5).^k1;E1=sum(abs(x1).^2);p1=E1/E;fprintf('p1=%2.16f\n',p1);k2=0:20;x2=(0.5).^k2;E2=sum(abs(x2).^2);p2=E2/E;fprintf('p2=%2.16f\n',p2);k3=0:30;x3=(0.5).^k3;E3=sum(abs(x3).^2);p3=E3/E;fprintf('p3=%2.16f\n',p3);程序运行后在命令窗口输出结果如下:8E=1.3333333333333333p1=0.9999997615814209p2=0.9999999999997726p3=1.00000000000000003.已知序列:[][2,2,1,1,4,2;2,1,0,1,2,3],[]2,1,1;0,1,2]xkkhkk(1)计算离散序列的卷积和y[k]=x[k]*h[k],并绘出其波形;(2)计算离散序列的互相关函数[][][]xykRkxkykn,并绘出其波形;(3)序列的相关与序列的卷积有何关系?解:(1)MATLAB程序如下:x=[2,2,1,-1,4,2];h=[2,-1,1];c=conv(x,h);N=length(c);stem(0:N-1,c);(2)MATLAB程序如下:x=[2,2,1,-1,4,2];y=[4,2,2,-1,10,-1,2,2];R=xcorr(x,y);N=length(R);stem(0:N-1,R);(3)][*][][kykxkRxy图(1)图(2)94、数字信号处理的应用之一是从含有加性噪声的信号中去除噪声。现有被噪声污染的信号x[k]=s[k]+d[k],式中:[]cos(0.08)skk为原始信号,d[k]为均匀分布的白噪声(1)分别产生50点的序列s[k]和白噪声序列d[k],将二者叠加生成x[k],并在同一张图上绘出x[k],s[k]和d[k]的序列波形;(2)均值滤波可以有效的去除叠加在低频信号上的噪声。已知3点滑动平均数字滤波器的单位脉冲响应为h[k]=[1,1,1;k=0,1,2],计算y[k]=x[k]*h[k],在同一张图上绘出前50点y[k]、s[k]和x[k]的波形,比较序列y[k]和s[k]。解:(1)MATLAB程序如下:R=51;A=1;w0=0.08*pi;d=rand(1,R)-0.5;k=0:R-1;s=A*cos(w0*k);x=s+d;figure(1);plot(k,d,'r-.',k,s,'b--',k,x,'g-');xlabel('Timeindexk');legend('d[k]','s[k]','x[k]');(2)MATLAB程序如下:n=50;k=0:n-1;A=1;w0=0.08*pi;s=A*cos(w0*k);subplot(3,1,1);stem(k,s);title('s[k]');d=rand(1,n);x=s+d;subplot(3,1,2);stem(k,x);title('x[k]');h=[1,1,1];y=conv(x,h);subplot(3,1,3);stem([0:length(y)-1],y);title('y[k]');10图(1)图(2)比较y[k]和s[k]可知,y[k]中的噪声信号被抑制六、思考题1.两个连续信号的卷积定义是什么?两个序列的卷积定义是什么?卷积的作用是什么?conv函数只输出了卷积结果,没有输出对应的时间向量,如何使时间向量和卷积结果对应起来?2.能够利用MATLAB产生单位冲激信号吗?3.产生连续信号时,首先要定义时间向量t=0:T:Tp。其中T和Tp是什么意思?答:1.两个连续信号的卷积定义是:y(t)=x(t)*h(t)=x(τ)h(t-τ).两个序列的卷积定义是:y[k]=x[n]h[k-n]。卷积的作用:使得一个LTI系统对任意的的输入响应可以用系统对单位脉冲响应来表示,这样LTI系统就完全刻画了系统的特性。时间向量和卷积结果对应起来:必须重新定义卷积后函数的时间轴。2.能。3.T是表示步距,Tp是终止值。11