首页 计划总结 工作报告 领导讲话 致辞演讲 心得体会大全 应用材料 实用文档 党团建设 专题范文 思想汇报 发言稿 述职报告
  • 党委党建
  • 人大工作
  • 政府政务
  • 政治协商
  • 纪委监委
  • 专题党课
  • 办公厅室
  • 组织人事
  • 意识形态
  • 统战民宗
  • 政法机关
  • 经济发改
  • 财税金融
  • 国土资源
  • 农业农村
  • 工信交通
  • 经贸商务
  • 文广体旅
  • 监督管理
  • 城建环保
  • 科技教育
  • 卫计防疫
  • 人社民政
  • 部队人武
  • 公司企业
  • 群团工会
  • 【北京理工大学信号与系统实验报告】 信号处理硕士收入

    时间:2021-07-15 00:04:34 来源:职场写作网 本文已影响 职场写作网手机站

    本科实验报告 实验名称:
    信号与系统实验 课程名称:
    数字信号处理 实验时间:
    任课教师:
    实验地点:
    4-442 实验教师:
    实验类型:
    □ 原理验证 □ 综合设计 □ 自主创新 学生姓名:
    学号/班级:
    组 号:
    学 院:
    信息与电子学院 同组搭档:
    专 业:
    信息工程 成 绩:
    实验一 信号的时域描述与运算 一、实验目的 ①掌握信号的MATLAB表示及其可视化方法。

    ②掌握信号基本时域运算的MATLAB实现方法。

    ③利用MATLAB分析常用信号,加深对信号时域特性的理解。

    二、实验原理与方法 1. 连续时间信号的MATLAB表示 连续时间信号指的是在连续时间范围内有定义的信号,即除了若干个不连续点外,在任何时刻信号都有定义。在MATLAB中连续时间信号可以用两种方法来表示,即向量表示法和符号对象表示法。

    从严格意义上来说,MATLAB并不能处理连续时间信号,在MATLAB中连续时间信号是用等时间间隔采样后的采样值来近似表示的,当采样间隔足够小时,这些采样值就可以很好地近似表示出连续时间信号,这种表示方法称为向量表示法。表示一个连续时间信号需要使用两个向量,其中一个向量用于表示信号的时间范围,另一个向量表示连续时间信号在该时间范围内的采样值。例如一个正弦信号可以表示如下:
    >> t=0:0.01:10; >> x=sin(t); 利用plot(t,x)命令可以绘制上述信号的时域波形,如图1所示。

    如果连续时间信号可以用表达式来描述,则还可以采用符号表达式來表示信号。例如对于上述正弦信号,可以用符号对象表示如下:
    >> x=sin(t); >> ezplot(X); 利用ezplot(x)命令可以绘制上述信号的时域波形 常用的信号产生函数 函数名 功能 函数名 功能 heaviside 单位阶跃函数 rectpuls 门函数 sin 正弦函数 tripuls 三角脉冲函数 cos 余弦函数 square 周期方波 sinc sinc函数 sawtooth 周期锯齿波或三角波 exp 指数函数 2.连续时间信号的时域运算 对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。

    1)相加和相乘 信号相加和相乘指两信号对应时刻的值相加和相乘,对于两个采用向量表示的可以直接使用算术运算的运算符“+”和“*”来计算,此时要求表示两信号的向量时间范围和采样间隔相同。采用符号对象表示的两个信号,可以直接根据符号对象的运算规则运算。

    2)微分和积分 对于向量表示法表示的连续时间信号,可以通过数值计算的方法计算信号的微分和积分。这里微分使用差分来近似求取的,由时间向量[]和采样值向量[]表示的连续时间信号,其微分可以通过下式求得 其中表示采样间隔。MATLAB中用diff函数来计算差分。

    连续时间信号的定积分可以由MATLAB的qud函数实现,调用格式为 quad ('function_name',a,b) 其中,function_name为被积函数名,a、b为积分区间。

    对于符号对象表示的连续时间信号,MATLAB提供了diff函数和quad函数分别用于求微分和积分。

    3.离散时间信号的MATLAB表示 离散时间信号仅在一些离散时刻有定义。在MATLAB中离散时间信号需要使用两个向量来表示,其中一个向量用于表示离散的时间点,另一个向量表示在这些时间点上的值。例如对于如下时间信号 采用MATLAB可以表示如下:
    >> n=-3:4; >> x=[-3 2 -1 2 1 -1 2 3]; >> stem(n,x,'filled'); >> xlabel('n'); >> title('x(n)'); Stem函数用于绘制离散时间信号波形,为了与我们表示离散时间信号的习惯相同,在绘图时一般需要添加‘filled’选项,以绘制实心的杆状图形。上述命令绘制的信号时域波形如图3所示。

    4.离散时间信号的时域运算 离散时间信号的相加相乘是将两个信号对应的时间点上的值相加或相乘,可以直接使用算术运算的运算符“+”和“*”来计算。

    离散时间信号的位移,则可看作是将表示时间的向量平移,而表示对应时间点上的值的向量不变。

    离散时间信号的反转,则可以看作是将表示时间的向量和表示对应时间点上的值的向量以零点为基准点,一纵轴为对称轴反折,向量的反折可以利用MATLAB的fliplr函数实现。

    三、实验内容 (1)、利用MATLAB绘制下列连续时间信号的波形:
    1、 >> t=0:0.001:10; >> x=(1-exp(-0.5*t)).*(heaviside(t)); >> plot(t,x) 0 1 2 3 4 5 6 7 8 9 10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 2、 >> t=0:0.001:10; >> x=cos(pi*t).*(heaviside(t)-heaviside(t-2)); >> plot(t,x) 0 1 2 3 4 5 6 7 8 9 10 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 3、 >> t=0:0.001:10; >> x=abs(t)/2.*cos(pi*t).*(heaviside(t+2)-heaviside(t-2)); >> plot(t,x) 0 1 2 3 4 5 6 7 8 9 10 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 4、 >> t=0:0.001:10; >> x=exp(-t).*sin(2*pi*t).*(heaviside(t)-heaviside(t-3)); >> plot(t,x) 0 1 2 3 4 5 6 7 8 9 10 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 (2)、利用MATLAB绘制下列离散时间信号的波形:
    1、 >> x=heaviside(n-3); >>stem(n,x,'filled') 0 1 2 3 4 5 6 7 8 9 10 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 2、 >> x=(-1/2).^n.*heaviside(n); >> stem(n,x,'filled') 3、 >> x=n.*(heaviside(n)-heaviside(t-5)); >> stem(n,x,'filled') 0 1 2 3 4 5 6 7 8 9 10 0 0.5 1 1.5 2 2.5 3 3.5 4 4、 >> x=sin(n*pi/2).*heaviside(n); >> stem(n,x,'filled') 0 1 2 3 4 5 6 7 8 9 10 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 (3)、利用MATLAB生成并绘制连续周期矩形波信号,要求周期为2,峰值为3,显示三个周期波形。

    >> t=0:0.001:6; >> x=square(t*pi).*3; >> plot(t,x) 0 1 2 3 4 5 6 -3 -2 -1 0 1 2 3 (4)、已知信号,用MATLAB绘出下列信号的波形 1、 >> t=0:0.001:10; >> x1=(-t+4).*(heaviside(t)-heaviside(t-4)); >> x2=sin(2*pi*t); >>x3=x1+x2; plot(t,x3) 0 1 2 3 4 5 6 7 8 9 10 -1 0 1 2 3 4 5 2、 >> t=0:0.001:10; >> x1=(-t+4).*(heaviside(t)-heaviside(t-4)); >> x2=sin(2*pi*t); >> x4=x1.*x2; plot(t,x4) 0 1 2 3 4 5 6 7 8 9 -4 -3 -2 -1 0 1 2 3 3、 syms t; x1=(4-t)*(heaviside(t)-heaviside(t-4)); x1=(4+t)*(heaviside(-t)-heaviside(t+4)); x5=x1+x2; ezplot(t,x5); 5)、已知离散时间信号x(n)波形(),用MATLAB绘出x(n)、x(-n)、x(n+2)和x(n-2)的波形。

    n=-3:4; x=[0,1,2,3,3,3,3,0]; n1=-fliplr(n); x1=fliplr(x); n2=n+2; n3=n-2; subplot(221); stem(n,x,'filled'); subplot(222); stem(n1,x1,'filled'); subplot(223); stem(n2,x,'filled'); subplot(224); stem(n3,x,'filled'); (6)、有MATLAB编程绘制下列信号的时域波形,观察信号是否为周期信号?若是周期信号,周期是多少?若不是周期信号,请说明原因。

    1、 syms t; x=1+cos(pi/4*t-pi/3)+2*cos(pi/2*t-pi/4)+cos(2*pi*t); ezplot(x,[-20,20]); -10 -8 -6 -4 -2 0 2 4 6 8 10 -3 -2 -1 0 1 2 3 4 5 是周期信号 T=8s 2、 >> x=sin(t)+2*sin(pi*t); >> plot(t,x) -20 -15 -10 -5 0 5 10 15 20 -3 -2 -1 0 1 2 3 不是周期信号 3、 n=1:20; x=2+3*sin(2*n/3*pi-pi/8); stem(n,x,'filled'); 是周期信号 T=3s 4、 n=1:20; x=cos(n*pi/6)+sin(n*pi/3)+cos(n*pi/2); stem(n,x,'filled'); 是周期信号 T=12s 实验二 LTI系统的时域分析 一、实验目的 1、掌握利用MATLAB对系统进行时域分析的方法。

    2、掌握连续时间系统零状态响应、冲激响应和阶跃响应的求解方法。

    3、掌握求解离散时间系统响应、单位抽样响应的方法。

    4、加深对卷积积分和卷积和的理解。掌握利用计算机进行卷积积分和卷积和计算的方法。

    二、实验原理与方法 1、连续时间系统时域分析的MATLAB实现 (1)、连续时间系统的MATLAB表示 LTI连续系统通常可以由系统微分方程描述,设LTI因果系统的微分方程一般式为:
    则在MATLAB里,可以建立系统模型如下:
    b=[bM,bM-......b0]; a=[aN,aN-1......a0]; sys=tf(b,a); 其中,tf是用于创建系统模型的函数,向量a与b的元素是以微分方程求导的降幂次序来排列的,如果有缺项,应用0补齐。

    (2)、连续时间系统的零状态响应 零状态响应是指系统的初始状态为零,仅由输入信号引起的响应。MATLAB提供了一个用于求解零状态响应的函数lism,其调用格式如下:
    lsim(sys,x,t)绘出输入信号及响应的波形,x和t表示输入信号数值向量和时间向量。

    y= lsim(sys,x,t)这种调用格式不绘出波形,而是返回响应的数值向量。

    (3)、连续时间系统的冲激响应与阶跃响应。

    MATLAB提供了函数impluse来求指定时间范围内,由模型sys描述的连续时间系统的单位冲激响应。其调用格式如下:
    impulse(sys)在默认的时间范围内绘出系统冲激响应的时域波形。

    impulse(sys,T)绘出系统在0-T范围内冲激响应的时域波形。

    impulse(sys,ts:tp:te)绘出系统在ts-tp范围内,以tp为时间间隔取样的冲激响应的时域波形。

    [y,t]= impulse(…)该调用格式不绘出单位冲激响应波形,而是返回单位冲激响应的数值向量及其对应的时间向量。

    函数step用于求解单位阶跃响应,函数step同样也有如下几种调用格式:
    step(sys) step(sys,T) step(sys,ts:tp:te) [y,t]=step(…) 2、离散时间系统时域分析的MATLAB实现 (1)、离散时间系统的MATLAB表示。

    LTI离散系统通常可以由系统差分方程描述,设描述系统的差分方程为:
    则在MATLAB里,可以用如下两个向量来表示这个系统:
    b=[b0,b1……,bM] a=[a0,a1……,aN] (2)、离散时间系统对任意输入的响应。

    MATLAB提供求LTI离散系统响应的专用函数fliter,该函数用于求取差分方程描述的离散时间系统在指定时间范围内对输入序列所产生的响应,其调用格式如下:
    y=filter(b,a,x) 其中,x为输入序列,y为输出序列,x,y所对应的时间区间必须相同。

    (3)、离散时间系统的单位抽样响应。

    MATLAB提供了函数impz来求指定时间范围内,由向量b和a描述的离散时间系统的单 位抽样响应。其调用格式如下:
    impz(b,a)在默认的时间范围内绘出系统抽样响应的时域波形。。

    impz(b,a,T)绘出系统在0-N范围内冲激响应的时域波形。

    impz(b,a,ns:ne)绘出系统在ns-ne范围的冲激响应的时域波形。

    [y,n]= impz(…)该调用格式不绘出单位冲激响应波形,而是返回单位冲激响应的数值向量及其对应的时间向量。

    3、卷积和与卷积积分 (1)、离散时间序列的卷积和 卷积和是离散系统时域分析的基本方法之一,离散时间序列和的卷积和定义如下:
    MATLAB提供了函数conv来求两个离散序列的卷积和。其调用格式如下:
    x=conv(x1,x2) (2)、连续时间信号的卷积积分 卷积积分是连续系统时域分析的有效方法和工具之一,连续时间信号和的卷积积分定义如下: 用户可根据书上内容自定义一个用于计算卷积积分的通用函数sconv。

    三、实验内容 1、已知描述模拟低通、高通、带通和带阻滤波器的微分方程如下,试采用MATLAB绘出各系统的单位冲激响应和单位阶跃响应波形。

    >> a=[1 sqrt(2) 1]; >> b=[1]; >> sys=tf(b,a); >> impulse(sys) 0 1 2 3 4 5 6 7 8 9 10 -0.1 0 0.1 0.2 0.3 0.4 0.5 0.6 Impulse Response Time (seconds) Amplitude >> a=[1 sqrt(2) 1]; >> b=[1 0 0]; >> sys=tf(b,a); >> impulse(sys) 0 1 2 3 4 5 6 7 8 9 -1.6 -1.4 -1.2 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 Time (seconds) Amplitude >> a=[1 1 1]; >> b=[1 0]; >> sys=tf(b,a); >> impulse(sys) 0 2 4 6 8 10 12 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 Time (seconds) Amplitude >> a=[1 1 1]; >> b=[1 0 1]; >> sys=tf(b,a); >> impulse(sys) 0 2 4 6 8 10 12 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 Time (seconds) Amplitude 2、已知某系统可以由微分方程描述 y(n)+y(n-1)+y(n-2)=x(n) ①请利用MATLAB绘出该系统冲激响应和阶跃响应的时域波形;

    ②根据冲激响应的时域波形分析系统的稳定性;

    ③如果系统的输入为,求系统的零状态响应; >> a=[1 1 6]; >> b=[1]; >> sys=tf(b,a); >> impulse(sys) >> step(sys) 0 2 4 6 8 10 12 14 -0.2 -0.1 0 0.1 0.2 0.3 0.4 0.5 Time (seconds) Amplitude 0 2 4 6 8 10 12 14 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 Step Response Time (seconds) Amplitude 是稳定系统 >> t=0:0.01:10; >> x=exp(-t); >>lsim(sys,x,t) 0 1 2 3 4 5 6 7 8 9 10 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 Linear Simulation Results Time (seconds) Amplitude 3、已知描述离散系统的差分方程如下,试采用MATLAB绘出各系统的单位抽样响应,并根据单位抽样响应的时域波形分析系统的稳定性。

    ① y(n)+3y(n-1)+2y(n-2)=x(n) >> a=[1 3 2]; >> b=[1]; >> impz(b,a) 不是稳定系统 5、采用MATLAB计算如下两个序列的卷积,并绘出图形 >> x1=[1 2 1 1]; >> x2=[1 1 1 1 1]; >> x=conv(x1,x2) x = 1 3 4 5 5 4 2 1 6、已知某LTI离散系统,其单位抽样响应h(n)=sin(0.5n),n>=0,系统的输入为x(n)=sin(0.2n),n>=0,计算当n=0,1,2,…,40时系统的零状态响应y(n),绘出x(n),h(n)和y(n)时域波形。

    >>n=0:40; >>h=sin(0.5*n); >>x=sin(0.2*n); >>y=conv(h,x); >>subplot(311); >>stem(n,h,'filled'); >>subplot(312); >>stem(n,x,'filled'); >>subplot(313); >>stem(y,'filled'); 程序运行结果如下:
    7、已知两个连续信号,是采用MATLAB求这两个信号的卷积 Sconv.m function [x,t]=sconv(x1,x2,t1,t2,dt) x=conv(x1,x2); x=x*dt; t0=t1(1)+t2(1); l=length(x1)+length(x2)-2; t=t0:dt:(t0+l*dt); end >>dt=0.001; >>t1=(-2):dt:2; >>t2=(-1):dt:1; >>x1=2.*(heaviside(t1+2)-heaviside(t1-2)); >>x2=heaviside(t2+1)-heaviside(t2-1); >>subplot(221); >>plot(t1,x1); >>xlabel('t(s)'); >>title('x_1(t)'); >>subplot(222); >>plot(t2,x2); >>xlabel('t(s)'); >>title('x_2(t)'); >> [x,t]=sconv(x1,x2,t1,t2,dt); >>subplot(212); >>plot(t,x); >>xlabel('t(s)'); >>title('x(t)=x_1(t)*x_2(t) 实验三 信号频域分析 一、实验目的 ①深入理解信号频谱的概念,掌握信号的频域分析方法。

    ②观察典型周期信号和非周期信号的频谱,掌握其频谱特性。

    二、实验原理与方法 1、连续周期信号的频谱分析 如果周期信号满足狄里赫利条件,就可以展开为傅里叶级数形式,即 (1) (2) 式中,表示基波周期,为基波频率,表示任一个基波周期内的积分。

    式(1)和式(2)定义为周期信号复指数形式的傅里叶级数,系数称为的傅里叶系数。周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即 (3) 其中:
    (4) 式(3)中同频率的正弦项和余弦项可以合并,从而得到三角函数形式的傅里叶级数,即 (5) 其中:
    (6) 可见,任何满足狄里赫利条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。一般来说周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。

    2、连续非周期信号的频谱分析 对于非周期连续时间信号,吸纳后的傅里叶变换和傅里叶逆变换定义为 (7) (8) 式(7)和式(8)把信号的时域特性和频域特性联系起来,确立了非周期信号和频谱之间的关系。

    采用MATLAB可以方便地求取非周期连续时间信号的傅里叶变换,这里我们介绍常用的集中方法。

    (1)、符号运算法 MATLAB的符号数学工具箱提供了直接求解傅里叶变换和反变换的函数,fourier函数和ifourier函数,基本调用格式为 X=fourier(x) X=ifourier(X) 默认的时域变量为t,频域变量为w。

    (2)、数值积分法 除了采用符号运算的方法外,我们还可以利用MATLAB的quad函数,采用数值积分的方法来进行连续信号的频谱分析,quad函数是一个用来计算数值积分的函数。利用quad函数可以计算非周期连续时间信号的频谱。Quad函数的一般调用格式为:
    y=quad(fun,a,b) y=quad(fun,a,b,TOL,TRACE,p1,p2,…) 其中fun指定被积函数,可以采用inline命令来创建,也可以通过传递函数句柄的形式来指定,a、b表示定积分的下限和上限,TOL表示允许的相对或绝对积分误差,TRACE表示以被积函数的点绘图形式来跟踪该函数的返回值,如果TOL和TRACE为空矩阵,则使用缺省值,“p1,p2,…”表示被积函数出时间t之外所需的其他额外输入参数。

    (3)、数值近似法 我们还可以利用MATLAB的数值计算的方法近似计算连续时间傅里叶变换。傅里叶变换可以由式(9)近似计算 (9) 当为时限信号,且足够小,式(9)可以演变为 (10) 而式(10)中求和部分又可以表示成一个行向量和一个列向量的乘积 (11) 式(11)可以很方便地利用MATLAB实现。

    3、离散周期时间信号的频域分析 基波周期为N的周期序列可以用N个成谐波关系的复指数序列的加权和表示,即 (12) 这里k=<N>表示求和仅需包括一个周期内的N项,周期序列在一个周期内的求和与起点无关。将周期序列表示成式(12)的形式,成为离散傅里叶级数,而系数则称为离散傅里叶系数。离散傅里叶系数可以由式(13)确定。

    (13) 傅里叶系数也称为的频谱系数,而且可以证明是以N为周期的离散频率序列。这说明了周期的离散时间函数对应于频域为周期的离散频率。

    这里,我们用周期N与傅里叶系数的乘积来表示周期离散时间信号的频谱,即 (14) 可以利用MATLAB提供的函数fft用来计算,调用格式为 该函数返回一个周期内的值,其中x表示一个周期内的样本值。

    4、离散非周期时间信号的频域分析 非周期序列可以表示成一组复指数序列的连续和 (15) 其中 (16) 式(16)称为的离散时间傅里叶变换,式(15)和式(16)确立了非周期离散时间信号及其离散时间傅里叶变换之间的关系。是连续频率的函数,称为频谱函数,且是周期的连续频率函数,其周期 为。可见,非周期离散时间函数对应于频域中是一个连续的周期的频率函数。

    对于有限长的时间序列,式(16)可以表示为 (17) 式(17)可以方便地利用MATLAB实现。

    1、已知x(t)是周期矩形脉冲信号。

    ①计算该信号的傅里叶级数;

    ②利用MATLAB绘出由前N次谐波合成的信号波形,观察随着N的变化合成信号波形的变化规律;

    >> t=-2:0.01:2; >> N=input('N='); N=5 >> x=zeros(size(t)); >> for n=1:2:N x=x+(4/(pi*n))*sin(2*pi*n*(t+0.25)); end >> x=(x+1)/2; >> plot(t,x) N=5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 N=15 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 N=50 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 -0.2 0 0.2 0.4 0.6 0.8 1 1.2 ③利用MATLAB绘出周期矩形脉冲信号的频谱,观察参数T和变化时对频谱波形的影响。

    >> c0=0; >> n2=1:N; >> c2=-4*j*sin(n2*pi/2)/pi^2./n2.^2; >> cn=[c1 c0 c2]; >> n=-N:N; >> stem(n,abs(cn),'filled') Q1-1、什么是吉伯斯现象?产生吉伯斯现象的原因是什么? 将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选取的项数越多,在所合成的波形中出现的峰起越靠近原信号的不连续点。当选取的项数很大时,该峰起值趋于一个常数,大约等于总跳变值的9%。这种现象称为吉伯斯现象。原因是在不连续点附近所有的正弦信号均具有相同的变化趋势,该趋势在有限项内无法被消除。

    Q1-2、以周期矩形脉冲信号为例,说明周期信号的频谱有什么特点。

    周期信号的频谱是具有周期性的一系列的脉冲信号。

    Q1-3、周期矩形脉冲信号的有效频带宽度与信号的时域宽度之间有什么关系? 时域宽度越大,有效频带宽度越小。

    Q1-4、随着矩形脉冲信号参数的变化,其频谱结构如何变化? 频谱包络形状不变,过零点不变,普贤间隔随着T变大而缩小。

    2、已知x(t)是如图所示的矩形脉冲信号。

    ①求该信号的傅里叶变换;

    ②利用MATLAB绘出矩形脉冲信号的频谱,观察矩形脉冲信号宽度变化时对频谱波形的影响;

    ③让矩形脉冲信号的面积始终等于1,改变矩形脉冲宽度,观察矩形脉冲信号时域波形和频谱随矩形脉冲宽度的变化趋势。

    syms t w >> y=int(2*exp(-j*w*t),t,-2,2); >> ezplot(y) (2 s in(2 w ))/w -6 -4 -2 0 2 4 6 -1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4 w >> y=int(exp(-j*w*t),t,-4,4); >> ezplot(y) -6 -4 -2 0 2 4 6 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 w ( 2 sin ( 4 w )) / w Q2-1、比较矩形脉冲信号和周期矩形脉冲信号的频谱,两者之间有何异同? 矩形脉冲信号频谱为连续函数,周期矩形脉冲信号的频谱为一系列的脉冲。

    Q2-2、根据矩形脉冲宽度变化时频谱的变化规律,说明信号的有效频带宽度与其时域宽度之间有什么关系? 信号有效频带宽度越大,时域宽度越小。

    3、已知x[n]是如图所示的周期方波序列。

    利用MATLAB绘制周期方波序列的频谱波形,改变参数N和N1的大小,观察频谱波形的变化趋势。

    >>N1=input('N1='); >>N=input('N='); >>n1=0:N1; >>x1=ones(size(n1)); >>n2=N1+1:N-N1-1; >>x2=zeros(size(n2)); >>n3=N-N1:N; >>x3=ones(size(n3)); >>n=0:N; >>x=[x1 x2 x3]; >>X=fft(x); >>subplot(211); >>stem(n,x,'filled'); >>xlabel('n'); >>title('x(n)'); >>subplot(212); >>stem(n,X,'filled'); >>xlabel('k'); >>title('X(k)'); 程序运行结果如下:
    N1=2;N=9; Q3-1、以周期方波序列为例,说明周期序列与连续周期信号的频谱有何异同。

    周期序列的频谱向外越来越大,连续周期信号频谱则是中间向两边越来越小。

    Q3-2、随着周期方波序列占空比的变化,其频谱如何随之变化? 随着占空比越来越大,频谱密度也越来越大。

    实验四 LTI系统的频域分析 一、实验目的 ①加深对LTI系统频域响应基本概念的掌握和理解 ②学习和掌握LTI系统频域特性的分析方法 二、实验原理和方法 1、连续时间系统的频域响应 系统的频域响应定义为系统单位冲激响应的傅里叶变换,即 若LTI连续时间系统的冲激响应为h(t),输入为x(t),根据时域分析可知 对本式求傅里叶变换得 所以,频率响应还可以由零状态相应和输入的傅里叶变换之比得到 反映的是系统的固有属性,与外部激励无关,又可以表示为 其中称为系统的幅度响应,被称为系统的相位响应。

    对于由下述微分方程描述的LTI连续时间系统 其频率响应H(jw)可以表示为(8-34)所示的jw的有理多项式。

    MATLAB的信号处理工具箱提供了专门的函数freqs,用来分析连续时间系统的频率响应,该函数有下列几种调用格式:
    [h,w]=freqs(b,a)计算默认频率范围内200个频率点上的频率响应的取样值,这200个频率点记录在w中。

    h=freqs(b,a,w) b、a分别为表示H(jw)的有理多项式中分子和分母多项式的系数向量,w为频率取样点,返回值h就是频率响应在频率取样点上的数值向量。

    [h,w]=freqs(b,a,n)计算默认频率范围内n个频率点上的频率响应的取样值,这n个频率点记录在w中。

    Freqs(b,a…) 这种调用格式不返回频率响应的取样值,而是以对数坐标的方式绘出系统的幅频响应飞相频响应。

    2、 离散时间系统的频率响应 LTI离散时间系统的频率响应定义为单位抽样响应h(n)的离散时间傅里叶变换。

    对于任意的输入信号x(n),输入与输出信号的离散时间傅里叶变换有如下关系 因此,系统的频率响应还可以表示为 当系统输入信号为x(n)时,系统的输出 由式(8-38)可知,虚指数信号通过LTI离散时间系统后信号的频率不变,信号的幅度由系统频率响应的幅度值确定,所以)表示了系统对不同频率信号的衰减量。

    一般情况下离散系统的频率响应是复值函数,可用幅度和相位表示。

    若LTI离散系统可以由如下差分方程描述。

    则由式(8-37)描述的离散时间系统的频率响应可以表示为的有理多项式。

    MATLAB的信号处理工具箱提供了专门的函数freqz,用来分析连续时间系统的频率响应,该函数有下列几种调用格式:
    [H,w]=freqs(b,a,n)计算0-pi范围内n个频率点上的频率响应的取样值 H=freqs(b,a,w) b、a分别为表示H(jw)的有理多项式中分子和分母多项式的系数向量,w为频率取样点,返回值h就是频率响应在频率取样点上的数值向量。

    [H,w]=freqs(b,a,n)计算默认频率范围内n个频率点上的频率响应的取样值,这n个频率点记录在w中。

    Freqs(b,a…) 这种调用格式不返回频率响应的取样值,而是以对数坐标的方式绘出系统的幅频响应. 三、实验内容 1、已知一个RLC电路构造的二阶高通滤波器。

    (1)、计算该电路系统的频率响应及高通截止频率;

    (2)、利用MATLAB绘制幅度响应和相位响应曲线,比较系统的频率特性与理论计算的结果是否一致。

    >>b=[1 0 0]; >>a=[1 10 50]; >> [H,w]=freqs(b,a); >>subplot(211); >>plot(w,abs(H)); >>set(gca,'xtick',[0,10]); >>set(gca,'ytick',[0 0.4 0.707 1]); >>xlabel('\omega(rad/s)'); >>ylabel('Magnitude'); >>title('|H(j\omega)|'); >>grid on; >>subplot(212); >>plot(w,angle(H)); >>set(gca,'xtick',[0,10]); >>xlabel('\omega(rad/s)'); >>ylabel('Phase'); >>title('\phi(j\omega)'); >>grid on; 2、已知一个RC电路 (1)、对不同的RC值,用MATLAB绘出系统的幅度响应曲线,观察实验结果,分析RC电路具有什么样的频率特性?系统的频率特性随着RC值的改变,有何变化规律? C=input('C='); R=input('R=') A=C*R; b=[1]; a=[A 1]; [H,w]=freqs(b,a); plot(w,abs(H)); plot(w,angle(H)); C=0.05F R=10欧姆 C=1F R=5欧姆 (2)、系统的输入信号x(t)=cos(100t)+cos(3000t),t=0-0.2s,该信号包含了一个低频分量和一个高频分量。试确定适当的RC值,滤掉信号中的高频分量。并绘出滤波前后的时域信号波形及系统的频率响应曲线。

    b=[1]; a=[0.001 1]; sys=tf(b,a); t=0:0.001:0.2;x=cos(100*t)+cos(3000*t); lsim(sys,x,t); 3、已知离散系统的系统框图 (1)、写出M=8时系统的差分方程及系统函数;

    (2)、利用MATLAB计算系统的单位抽样响应;

    a=[1]; b=[1 1 1 1 1 1 1 1 1]; impz(b,a,0:20); (3)、试利用MATLAB绘出其系统的零极点分布图、幅频和相频特性曲线,并分析该系统具有怎样的频率特性。

    b=[1 1 1 1 1 1 1 1 1]; a=[1]; zplane(b,a) b=[1 1 1 1 1 1 1 1 1]; a=[1]; [H,w]=freqz(b,a); plot(w/pi,abs(H)); plot(w/pi,angle(H)/pi); set(gca,'xtick',[0,10]); 4、已知一离散时间LTI系统的频率响应,输入信号为x(n)=cos(0.3∏n)+0.5cos(0.8∏n),计算系统对于x(n)的响应y(n)。

    n=-20:20; x=cos(0.3*pi*n)+0.5*cos(0.8*pi*n); subplot(211); stem(n,x,'filled'); y=2*cos(0.3*pi*n); subplot(212); stem(n,y,'filled'); 信号分析:为低通网络。

    实验五 连续时间系统的复频域分析 一、实验目的 ①掌握拉普拉斯变换及其反变换的定义,并掌握MATLAB实现方法。

    ②学习和掌握连续时间系统系统函数的定义及复频域分析方法。

    ③掌握系统零极点的定义,加深理解系统零极点分布与系统特性的关系。

    二、实验原理与方法 1、拉普拉斯变换 连续时间信号的拉普拉斯变换定义为 (1) 拉普拉斯反变换定义为 (2) 在MATLAB中,可以采用符号数学工具箱的laplace函数和ilaplace函数进行拉氏变换和反拉氏变换。

    L=laplace(F)符号表达式F的拉氏变换,F中时间变量为t,返回变量为s的结果表达式。

    L=laplace(F,t)用t替换结果中的变量s。

    F=ilaplace(L)以s为变量的符号表达式L的拉氏反变换,返回时间变量为t的结果表达式。

    F=ilaplace(L,x)用x替换结果中的变量t。

    除了上述ilaplace 函数,还可以采用部分分式法,求解拉普拉斯逆变换,具体原理如下:
    当 X (s)为有理分式时,它可以表示为两个多项式之比:
    (3) 式(3)可以用部分分式法展成一下形式 (4) 通过查常用拉普拉斯变换对,可以由式(1-2)求得拉普拉斯逆变换。

    利用 MATLAB 的residue 函数可以将 X (s)展成式(1-2)所示的部分分式展开式,该函数的调用格式为:[r,p,k] = residue(b,a) 其中b、a 为分子和分母多项式系数向量,r、p、k 分别为上述展开式中的部分分式系数、极点和直项多项式系数。

    2、连续时间系统的系统函数 连续时间系统的系统函数是系统单位冲激响应的拉氏变换 (5) 此外,连续时间系统的系统函数还可以由系统输入和系统输出信号的拉氏变换之比得到 (6) 单位冲激响应反映了系统的固有性质,而从复频域反映了系统的固有性质。由式(6)描述的连续时间系统,其系统函数为s的有理函数 (7) 3、连续时间系统的零极点分析 系统的零点是指式(7)的分子多项式为零的点,极点指使分母多项式为零的点,零点使系统的值为零,极点使系统函数的值无穷大。通常将系统函数的零极点绘在s平面上,零点用表示,极点用表示,这样得到的图形称为零极点的分布图。

    由零极点的定义可知,零点和极点分别指式(7)的分子多项式和分母多项式的根。利用MATLAB求多项式的根可以通过函数roots来实现,该函数的调用格式为:
    r=roots(c) c为多项式的系数向量,返回值r为多项式的根向量。

    分别对式(7)的分子多项式和分母多项式求根即可得到零极点。

    此外,在MATLAB中还提供了更简便的方法来求取零极点和绘制系统函数的零极点分布图,即利用pzmap函数,该函数的调用格式为:
    pzmap(sys)绘出由系统模型sys描述的系统的零极点分布图。

    [p,z]=pzmap(sys) 这种调用方法返回极点和零点,而不绘出零极点分布图。其中sys为系统传函模型,由t命令sys=tf(b,a)实现,b、a为传递函数的分子多项式和分母多项式的系数向量。

    MATLAB还为用户提供了两个专用函数tf2zp和zp2tf来实现系统传递函数模型和零极点增益模型的转换,其调用格式为:
    [z,p,k]=tf2zp(b,a) [b,a]=`zp2tf(z,p,k) 其中b、a为传递函数的分子多项式和分母多项式的系数向量,返回值z为零点列向量,p为极点列向量,k为系统函数零极点形式的增益。

    研究系统函数的零极点分步不仅可以了解系统冲激响应的形式,还可以了解系统的频率特性以及判断系统的稳定性。

    (1)零极点分布于冲激响应的关系 系统的极点位置决定着系统冲激响应h(t)的波形,冲激响应的幅值是由系统函数的零点和极点共同决定的,系统的零点位置只影响冲激响应的幅度和相位,不影响波形。

    (2)零极点分步与系统频率响应的关系 系统函数的零极点分布不仅决定了系统函数H(s),也决定了系统的频率响应H(),根据系统的零极点分布情况,可以由几何矢量法分析系统的频率响应。

    (3)零极点分布与系统稳定性的关系 稳定性是系统的固有性质,与激励信号无关,由于系统函数H(s)包含了系统的所有固有的性质,因而可以根据系统函数的零极点分布判断系统的稳定性。因果系统稳定的充要条件是H(s)的全部极点位于s平面的左半平面。

    三、实验内容 (1)、已知系统的冲激响应,输入信号,试采用复频域的方法求解系统的响应,编写MATLAB程序实现。

    使用卷积定理求解,先分别求的拉氏变换然后求出输出,最后对进行拉普拉斯反变换即可得到系统的响应。

    >>f1=sym('heaviside(t)-heaviside(t-2)'); >>f2=sym('heaviside(t)'); >>F1=laplace(f1); >>F2=laplace(f2); >>F=F1*F2; f=ilaplace(F); 结果:
    F = -(exp(-2*s)/s - 1/s)/s f = t - heaviside(t - 2)*(t - 2) 故系统响应为 (2)、已知因果连续时间系统的系统函数分别如下,试采用MATLAB画出其零极点分布图,求解系统的冲激响应h(t)和频率响应H(w)并判断系统是否稳定。

    1. >> b=[1]; >> a=[1 2 2 1]; >> sys=tf(b,a); >> pzmap(sys); 稳定 -1.4 -1.2 -1 -0.8 -0.6 -0.4 -0.2 0 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 Pole-Zero Map Real Axis (seconds -1 ) Imaginary Axis (seconds -1 ) 故系统冲激响应为:
    h(t)=(exp(-1)+(-0.5-0.2887*i).*exp(-0.5+0.866*i)+(-0.5+0.2887*i).*exp(-0.5-0.866*i)).*heaviside(t) 频率响应:
    >>b=[1]; >>a=[1 2 2 1]; >> [H w]=freqs(b,a); >>subplot(211); >>plot(w,abs(H)); >>plot(w,angle(H)); 2. >> sys=tf(b,a); >> pzmap(sys); >> b=[1 01 ]; >> b=[1 0 1]; >> a=[1 2 -3 3 3 2]; >> sys=tf(b,a); >> pzmap(sys) -3.5 -3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 Pole-Zero Map Real Axis (seconds -1 ) Imaginary Axis (seconds -1 ) 则有系统的零点为z=±i,极点为p=-3.1704,0.9669±0.9540i,-0.3817±0.4430i, 故系统冲激响应为:
    h(t)=(0.0769.*exp(-3.1704.*t)+(-0.03-0.0881.*i).*exp((0.9669+0.954.*i).t)+(-0.03+ 0.0881.*i).*exp((0.9669 - 0.9540.*i).*t)+(-0.0085 - 0.1436.*i).*exp((-0.3817 + 0.4430.*i).*t)+(-0.0085+0.1436i).*exp((-0.3817-0.4430.*i).t)).*heaviside(t); 频率响应:
    >>b=[1 0 1]; >>a=[1 2 -3 3 3 2]; >> [H,w]=freqs(b,a); >>plot(w,abs(H)); >>plot(w,angle(H)); 由于该因果系统的所有极点不全位于S 平面的左半平面,所以系统是不稳定的。

    (3)、已知连续时间系统函数的极点位置分别如下所示(设系统无零点),试用MATLAB绘制6中不同情况下,系统函数的零极点分布图,并绘制相应冲激响应的时域波形,观察并分析系统函数极点位置对冲激响应时域特性的影响。

    p=0 >>H=sym('1/s'); >>h=ilaplace(H); ezplot(h); >>b=[1]; >>a=[1 0]; >>sys=tf(b,a) pzmap(sys); 结果:
    h = 1 p=-2 >>H=sym('1/(s+2)'); >>h=ilaplace(H); >>ezplot(h); >>b=[1]; >>a=[1 2]; >>sys=tf(b,a) pzmap(sys); 结果:
    h = exp(-2*t) p=2 >>sym('1/(s-2)'); >>h=ilaplace(H); >>ezplot(h); >>b=[1]; >>a=[1 -2]; >>sys=tf(b,a) >>subplot(212); >>pzmap(sys); 结果:
    h = exp(2*t) r = 1 >>H=sym('1/(s^2+4)'); >>h=ilaplace(H); >>ezplot(h); >>b=[1]; >>a=[1 0 4]; >>sys=tf(b,a) >>pzmap(sys); 结果:
    h = sin(2*t)/2 >>H=sym('1/(s^2+2*s+17)'); >>h=ilaplace(H); >>ezplot(h); >>b=[1]; a=[1 2 17]; >>sys=tf(b,a) >>pzmap(sys); 结果:
    h = (sin(4*t)*exp(-t))/4 >>H=sym('1/(s^2-2*s+17)'); >>h=ilaplace(H); >>ezplot(h); >>b=[1]; >>a=[1 -2 17]; >>sys=tf(b,a) >>pzmap(sys); 结果:
    h = (sin(4*t)*exp(t))/4 由以上六例,可以总结出,在无零点的情况下:
    当极点唯一且在原点时,h(t)为常数;

    当极点唯一且是负实数时,h(t)为递减的指数函数;

    当极点唯一且是正实数时,h(t)为递增的指数函数;

    当H(s)有两个互为共轭的极点时,h(t)有一因子;

    当H(s)有两个互为共轭的极点且他们位于右半平面时,h(t)还有一因子;

    当H(s)有两个互为共轭的极点且他们位于左半平面时,h(t)还有一因子;

    (4)、已知3个连续时间系统函数 上述三个系统具有相同的极点,只是零点不同,试用MATLAB分别绘制系统的零极点分布图及相应冲激响应的时域波形,观察并分析系统函数零点位置对冲激响应时域特性的影响。

    (1) >> b=[1]; >> a=[1 2 17]; >> sys=tf(b,a); >> impulse(sys) 0 1 2 3 4 5 6 -0.1 -0.05 0 0.05 0.1 0.15 0.2 0.25 Impulse Response Time (seconds) Amplitude >> b=[1 8]; >> a=[1 2 17]; >> sys=tf(b,a); >> impulse(sys) 0 1 2 3 4 5 6 -1 -0.5 0 0.5 1 1.5 2 Impulse Response Time (seconds) Amplitude >> b=[1 -8]; >> a=[1 2 17]; >> sys=tf(b,a); >> impulse(sys) 0 1 2 3 4 5 6 -2 -1.5 -1 -0.5 0 0.5 1 Impulse Response Time (seconds) Amplitude 由以上三例可以看出,当极点不变时,零点分布只影响系统时域响应的幅度相 位,对时域响应模式没有影响。即不会改变是衰减振荡还是增长振荡。

    实验六 离散时间系统的Z域分析 一、实验目的 ①掌握z变换及其反变换的定义,并掌握MATLAB实现方法。

    学习和掌握离散时间系统系统函数的定义及z域分析方法。

    ③掌握系统零极点的定义,加深理解系统零极点分布于系统特性的关系。

    二、实验原理与方法 1、z变换 序列x(n)的z变换定义为 Z反变换定义为 在MATLAB中,可以采用了符号数学工具箱的ztrans函数和iztrans函数计算z变换和z反变换:
    Z=ztrans(F)求符号表达式F的z变换。

    F=iztrans(Z)求符号表达式Z的z反变换。

    2、离散时间系统的系统函数 离散时间系统的系统函数H(z)定义为单位抽样响应h(n)的z变换 此外,连续时间系统的系统函数还可以由系统输入和输出信号的z变换之比得到 由上式描述的离散时间系统的系统函数可以表示为 3、离散时间系统的零极点分析 离散时间系统的零点和极点分别指使系统函数分子多项式和分母多项式为零的点,在MATLAB中可以通过函数roots来求系统函数分子多项式和分母多项式的根,从而得到系统的零极点。

    此外,还可以利用MATLAB的zplane还是来求解和绘制离散系统的零极点分布图,zplane函数的调用格式为:
    zplane(b,a) b、a为系统函数的分子、系统函数的几点分母多项式的系数向量(行向量)。

    Zplane(z,p) z、p为零极点序列(列向量)。

    系统函数是描述系统的重要物理量,研究系统函数的零极点分布不仅可以了解系统单位抽样响应的变化,还可以了解系统的频率特性响应以及判断系统的稳定性:
    ①系统函数的极点位置决定了系统单位抽样响应h(n)的波形,系统函数零点位置只影响冲激响应的幅度和相位,不影响波形。

    ②系统的频率响应取决于系统函数的零极点,根据系统的零极点分布情况,可以通过向量法分析系统的频率响应。

    ③因果的离散时间系统稳定的充要条件是H(z)的全部几点都位于单位圆内。

    1、已知因果离散时间系统的系统函数分别为 (1) (2) 试采用MATLAB绘出其零极点分布图,求解系统的冲激响应h(n)和频率响应,并判断系统是否稳定。

    (1) >>b=[1 2 1]; >>a=[1 0.5 0.005 0.3]; >>zplane(b,a); >> [r,p,k]=residue(b,a); r p k >>impz(b,a,0:10); >>plot(w,abs(H)); >>plot(w,angle(H)); r = 0.0098 + 0.0000i 0.4951 - 1.1965i 0.4951 + 1.1965i p = -0.8809 + 0.0000i 0.1905 + 0.5516i 0.1905 - 0.5516i 是稳定的 (2) >>b=[1 -1 0 2]; >>a=[3 3 -1 3 -1]; >>zplane(b,a); >> [r,p,k]=residue(b,a); >>subplot(222); >>impz(b,a,0:10); >> [H,w]=freqs(b,a); >>subplot(223); >>plot(w,abs(H)); >>xlabel('\omega(rad/s)'); >>ylabel('Magnitude');; >>title('|H(j\omega)|;') >>grid on; >>subplot(224); >>plot(w,angle(H)); >>xlabel('\omega(rad/s)'); >>ylabel('Phase'); >>title('\phi(\omega)'); >>grid on; r = 0.2263 + 0.0000i -0.2071 + 0.2555i -0.2071 - 0.2555i 0.5213 + 0.0000i p = -1.6462 + 0.0000i 0.1614 + 0.7746i 0.1614 - 0.7746i 0.3234 + 0.0000i 不稳定 2、已知离散时间系统系统函数的零点z和极点p分别为:
    (1)z=0,p=0.25 (2)z=0,p=1 (3)z=0,p=-1.25 (4)z=0,, (5)z=0,, (6)z=0,, 试用MATLAB绘制上述6种不同情况下,系统函数的零极点分布图,并绘制相应单位抽样响应的时域波形,观察分析系统函数极点位置对单位抽样响应时域特性分影响和规律。

    (1)z=0,p=0.25 MATLAB代码及运行结果如下:
    >>b=[1 0]; >>a=[1 0.25]; >>subplot(211); >>zplane(b,a); >>subplot(212); impz(b,a,0:10); (2)z=0,p=1 >>b=[1 0]; >>a=[1 1]; >>subplot(211); >>zplane(b,a); >>subplot(212); impz(b,a,0:10); (3)z=0,p=-1.25 >>b=[1 0]; >>a=[1 1.25]; >>subplot(211); >>zplane(b,a); >>subplot(212); impz(b,a,0:10); (4)z=0,, >>b=[1 0]; >>a=[1 0.4*3^0.5 0.64]; >>subplot(211); >>zplane(b,a); >>subplot(212); impz(b,a,0:10); (5)z=0,, >>b=[1 0]; >>a=[1 -2*cos(pi/8) 1]; >>subplot(211); >>zplane(b,a); >>subplot(212); impz(b,a,0:10); (6)z=0,, >>b=[1 0]; >>a=[1 -1.2*2*cos(0.75*pi) 1.44]; >>subplot(211); >>zplane(b,a); >>subplot(212); impz(b,a,0:10); 3、已知离散时间系统的系统函数分别为:
    (1) (2) 上述两个系统具有相同的极点,只是零点不同,试用MATLAB分别绘制上述两个系统的零极点分布图及响应的时域波形,观察分析系统函数零点位置对单位抽样响应时域特性的影响。

    (1) >>z=[0 -2]'; >>p=[0.8*exp(j*pi/6) 0.8*exp(-j*pi/6)]'; zplane(z,p); (2) >>z=[0 2]'; >>p=[0.8*exp(j*pi/6) -0.8*exp(j*pi/6)]'; zplane(z,p);