信号与系统实验报告

实验一   信号的表示与信号的运算

姓名  罗治民   班级电子12--BF学号 14122502289日期 2014.6.9       成绩        

一、实验条件:计算机一台、MATLAB软件。

二、实验目的:学习使用MATLAB产生基本信号、回执信号波形、实现信号的基本运算,为信号分析何系统分析奠定基础。

三、实验原理:MATLAB提供了许多函数用于产生常用的基本信号:
(1)阶跃信号:  t=-2:0.02:6;  x=(t>=0); plot(t,x); axis([-2,6,0,1.2]);
(2)指数信号: t=0:0.001:5; x=2*exp(-1*t); plot(t,x);             
(3)正弦信号: f0=4; w0=2*pi*f0; t = 0: 0.001: 1;  x = 2*sin(w0*t+ pi/6);

plot(t,x);
(4)矩形脉冲信号: t=-2:  0.02: 6;  x=rectpuls(t-2,4);  plot(t,x);

(1)单位脉冲序列:k= -4: 20;  x=[zeros(1,7),1,zeros(1,17)];  stem(k,x);
(2)单位阶跃序列:k= -4:20;  x=[zeros(1,7),ones(1,18)];  stem(k,x);
(3)指数序列:k = -5:15;  x = 0.3*(1/2).^k;   stem(k,x);
(3)正弦序列:k=-10:10;omega=pi/3;x=0.5*sin(omega*k+ pi/5); stem(k,x);
 信号的基本运算                                   

 四、实验步骤及结果测试
1.利用MATLAB长生下列信号并作图。
 (1)  x(t)=-3u(t-1),-1<t<5
      程序:t=-1:0.02:5;

         x=-3*(0<=(t-1));

        plot(t,x);                  

       axis([-2.1,6.2,-3.1,0.1])                              
 (2)  x(t)=,0<t<30
      程序:t=0:0.02:30;

         x=exp(-0.1*t).*sin(2/3*t);

  plot(t,x)                           

      axis([-0.2,30.2,-1.1,1.1])

 (3)  x(t)= 
     程序:t=-0.1:0.00001:0.1;

            x=cos(100*t)+cos(2000*t);

            plot(t,x)
 (4)  x[k]= 
        程序:k=-14:15;

        x=[zeros(1,9),ones(1,11),zeros(1,10)];

        stem(k,x)
(5)   x[k]=(0.9)[sin(0.25πk)+cos(0.25πk)] ,-20<k20
       程序:k=-19:20;

           x=((0.9).^k).*[sin(0.25*pi*k)+cos(0.25*pi*k)];

stem(k,x)
2.已知无限长序列

(1)计算信号的总能量;k=0:10000000; x=(0.5).^k; E=sum(abs(x).^2);fprintf('E=%2.16f\n',E)

结果:E=1.3333333333333333
    

(2)分别计算序列前10点、前20点和前30点的能量及占总能量的百分比。
       解:k=0:10000000; x=(0.5).^k; E=sum(abs(x).^2);

 k=0:10; x=(0.5).^k;  E1=sum(abs(x).^2);

k=0:20; x=(0.5).^k;  E2=sum(abs(x).^2);

 k=0:30; x=(0.5).^k;   E3=sum(abs(x).^2);

fprintf('E1=%2.16f\nE2=%2.16f\nE3=%2.16f\n',E1,E2,E3)

fprintf('E1/E=%2.16f\nE2/E=%2.16f\nE3/E=%2.16f\n',E1/E,E2/E,E3/E)结果:E1=1.3333330154418945

E2=1.3333333333330302

E3=1.3333333333333333

E1/E=0.9999997615814209

E2/E=0.9999999999997726

E3/E=1.0000000000000000
3.已知序列:

(1)计算离散序列的卷积和y[k]=x[k]*h[k],并绘出其波形;
解:   k=-2:3; x=[2,2,1,-1,4,2];
       k=0:2; h=[2,-1,1];

          y=conv(x,h);

          k=-2:5;

          stem(k,y);
    


(2)计算离散序列的互相关函数,并绘出其波形;
       解: k=-2:3; x=[2,2,1,-1,4,2];

        k=0:2; h=[2,-1,1];

       R=xcorr(x,h); k=-5:5;stem(k,R);
          

(3)序列的相关与序列的卷积有何关系?
解:根据序列的相关与序列的卷积的定义表达式可知,x[k] 与y[k]的序列相关为R[K]=x[k]*y[-k].
4.数字信号处理的应用之一是从含有加性噪声的信号中去除噪声。现有被噪声污染的信号  x[k]=s[k]+d[k],式中:为原始信号,d[k]为均匀分布的白噪声

(1)分别产生50点的序列s[k]和白噪声序列d[k],将二者叠加生成x[k],并在同一张图上绘出x[k],s[k]和d[k]的序列波形;
   解:  k=0:49;

    s=cos(0.08*pi*k);  stem(k,s,'g*');  hold on;

    d=rand(1,50);  stem(k,d,'b+');  hold on;

    x=s+d;   stem(k,x,'r');  hold on;

    legend('s','d','x');
(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]。
  解:  k=0:49;

   s=cos(0.08*pi*k);  stem(k,s,'g*');  hold on;

   d=rand(1,50);

   x=s+d;  stem(k,x,'r');  hold on;

   k=0,1,2;  h=[1,1,1];  y=conv(x,h);

   k=0:51;  stem(k,y,'b+');  hold on;

   legend('s','x','y');

    



五、思考题:
1. 两个连续信号的卷积定义是什么?两个序列的卷积定义是什么?卷积的作用是什么?conv函数只输出了卷积结果,没有输出对应的时间向量,如何使时间向量和卷积结果对应起来?
  解: 连续信号卷积定义是 y(t)=x(t)*h(t)= ,两个序列的卷积定义是  y[k]=.
    把信号分解成冲激信号(单位脉冲)之和,借助系统的冲激响应好h(t)(单位脉冲响应h[k]),求系统的零状态响应。
     卷积结果是y(t)的起点是x(t)与h(t)的起点之和,y(t)的终点是x(t)与h(t)的终点之和。

3. 产生连续信号时,首先要定义时间向量t = 0:T:Tp。  其中T和Tp是什么意思?
        解: T表示步长,Tp表示向量终点。



 

第二篇:数字信号处理系统响应及系统稳定性实验报告

 

实验课程名称:数字信号处理

实验项目名称:系统响应及系统稳

应用FFT对信号进行频谱分析

IIR数字滤波器设计及软件实现

班       级:应用电子技术教育专业一班

姓       名:       徐秋霞  

学       号:      40806266

   


         实验一系统响应及系统稳定性 

实验目的

(1)掌握求系统响应的方法

(2)掌握时域离散系统的时域特性

(3)分析、观察及检验系统的稳定性

一、       实验原理

在时域中,本实验仅在时域求解。在计算机上用递推法求差分方程的解,最简单的方法是采用MATLAB语言的工具箱函数filter函数。也可以用MATLAB语言的工具箱函数conv函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响。

三、实验步骤

习题一第14题(2):

1.      新建.m文件ex114-2;

2.      程序代码:

xn=[ones(1,12) 2 1 1 0.5 1 1 1 1.5 ones(1,12)];

hn=[0.2 0.2 0.2 0.2 0.2];

yn=conv(hn,xn);

n=0:length(yn)-1;

subplot(2,2,1);stem(n,yn,'.')

title('(a)y(n)波形');xlabel('n');ylabel('y(n)')

3.      运行结果:

习题一第15题:

1.          新建.m文件ex115;

2.          程序代码:

xn=[1,2,3,4,2,1,zeros(1,10)];

B=[1,0,2];A=[1,0.5];

yn=filter(B,A,xn)

n=0:length(yn)-1;

subplot(3,2,1);stem(n,yn,'.');axis([0,15,-2,8])

title('系统的零状态响应');xlabel('n');ylabel('y(n)')

3.          运行程序:

习题一第16题:

1.  新建.m文件ex116;

2.  程序代码:

B1=1;A1=[1,-0.6,0.08];

B2=[2,0,-1];A2=[1,-0.7,0.1];

xn=[1,zeros(1,30)];

xi=filtic(B1,A1,0);

hn1=filter(B1,A1,xn,xi);

n=0:length(hn1)-1;

subplot(3,2,1);stem(n,hn1,'.')

title('(a)系统1的系统单位脉冲响应');xlabel('n');ylabel('h(n)')

xn=ones(1,30);

sn1=filter(B1,A1,xn,xi);

n=0:length(sn1)-1;

subplot(3,2,2);stem(n,sn1,'.')

title('(b)系统1的系统单位阶跃响应');axis([0,30,0,3]);xlabel('n');ylabel('s(n)')

xn=[1,zeros(1,30)];

xi=filtic(B2,A2,0);

hn2=filter(B2,A2,xn,xi);

n=0:length(hn2)-1;

subplot(3,2,5);stem(n,hn2,'.')

title('(c)系统2的系统单位脉冲响应');axis([0,30,-1,2]);xlabel('n');ylabel('h(n)')

xn=ones(1,30);

sn2=filter(B2,A2,xn,xi);

n=0:length(sn2)-1;

subplot(3,2,6);stem(n,sn2,'.')

title('(d)系统2的系统单位阶跃响应');xlabel('n');ylabel('s(n)')

3.  运行结果:

实验10.1

1.  新建.m文件ex10.1;

2.  程序代码:

B=[0.05,0.05];A=[1,-0.9];

xn=[1,zeros(1,57)];

xi=filtic(B,A,0);

hn=filter(B,A,xn,xi);

n=0:length(hn)-1;

subplot(2,2,1);stem(n,hn,'.')

title('(a)系统单位脉冲响应');xlabel('n');ylabel('h(n)')

x1n=[1 1 1 1 1 1 1 1 zeros(1,50)];

x2n=ones(1,128);

y1n=filter(B,A,x1n);

subplot(2,2,2);stem(n,y1n,'.')

title('(b)系统对R8(n)的响应y1(n)');axis([0,60,0,0.7]);xlabel('n');ylabel('y1(n)')

y2n=filter(B,A,x2n);n=0:length(y2n)-1;

subplot(2,2,4);stem(n,y2n,'.')

title('(c)系统对u(n)的响应y2(n)');axis([0,130,0,1.2]);xlabel('n');ylabel('y2(n)')

x1n=[1 1 1 1 1 1 1 1];

h1n=[ones(1,10) zeros(1,10)];

h2n=[1 2.5 2.5 1 zeros(1,10)];

y21n=conv(h1n,x1n);

y22n=conv(h2n,x1n);

n=0:length(h1n)-1;

subplot(2,2,1);stem(n,h1n,'.');axis([0,20,0,1.2]);xlabel('n');ylabel('h1(n)')

title('(d)系统单位脉冲响应h1(n)')

n=0:length(y21n)-1;

subplot(2,2,2);stem(n,y21n,'.');xlabel('n');ylabel('y21(n)')

title('(e)h1(n)与R8(n)的卷积y21(n)')

n=0:length(h2n)-1;

subplot(2,2,3);stem(n,h2n,'.');xlabel('n');ylabel('h2(n)')

title('(f)系统单位脉冲响应h2(n)')

n=0:length(y22n)-1;

subplot(2,2,4);stem(n,y22n,'.');xlabel('n');ylabel('y22(n)')

title('(g)h2(n)与R8(n)的卷积y22(n)')

A=[1,-0.9];B=[0.05,0.05];

un=ones(1,256);

n=0:255;

xsin=sin(0.014*n)+sin(0.4*n);

A=[1,-1.8237,0.9801];B=[1/100.49,0,-1/100.49];

y31n=filter(B,A,un);

y32n=filter(B,A,xsin);

subplot(2,1,1);stem(n,y31n,'.');

title('(h)谐振器对u(n)的响应y31(n)');

axis([0,260,-0.06,0.06]);xlabel('n');ylabel('y31(n)')

subplot(2,1,2);stem(n,y32n,'.');

title('(i)谐振器对正弦信号的响应y32(n)');

axis([0,260,-1,1]);xlabel('n');ylabel('y31(n)')

3.  运行结果:

四、实验心得及体会:

通过本次实验我初步了解到MATLAB这个软件的基本使用方法,运行环境。通过这款软件使我们的学习更加方便,增加了我的知识面以及对电脑软件有了更多的了解。

实验中,我掌握了filter和conv函数的基本用法,前者可计算知道输入信号的前提下求解输出响应的序列,后者则可通过输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。

相关推荐