北京理工大学 信号与系统实验报告

更新时间:2024-05-06 01:53:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

本科实验报告

实验名称:信号与系统实验

课程名称: 数字信号处理 任课教师: 范哲意 实验教师: 何冰松, 范哲意 学生姓名: 学号/班级: 学院: 信息与电子学院 专业: 信息工程 实验时间: 实验地点: 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)命令可以绘制上述信号的时域波形

10.80.60.40.20-0.2-0.4-0.6-0.8-10124567Time(seconds)图1 利用向量表示连续时间信号38910

常用的信号产生函数

函数名 heaviside sin cos sinc exp 功能 单位阶跃函数 正弦函数 余弦函数 sinc函数 指数函数 sin(t)函数名 rectpuls tripuls square sawtooth 功能 门函数 三角脉冲函数 周期方波 周期锯齿波或三角波 10.50-0.5-1-6-4024t图 2 利用符号对象表示连续时间信号-26

2.连续时间信号的时域运算

对连续时间信号的运算包括两信号相加、相乘、微分、积分,以及位移、反转、尺度变换(尺度伸缩)等。

1)相加和相乘

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

2)微分和积分

对于向量表示法表示的连续时间信号,可以通过数值计算的方法计算信号的微分和积分。这里微分使用差分来近似求取的,由时间向量[t1,t2,?,tN]和采样值向量[x1,x2,?,xN]表示的连续时间信号,其微分可以通过下式求得

x'(t)|t?tk?xk?1?xk,k?1,2,?,N?1?t

其中?t表示采样间隔。MATLAB中用diff函数来计算差分xk?1?xk。 连续时间信号的定积分可以由MATLAB的qud函数实现,调用格式为

quad ('function_name',a,b)

其中,function_name为被积函数名,a、b为积分区间。

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

3.离散时间信号的MATLAB表示

离散时间信号仅在一些离散时刻有定义。在MATLAB中离散时间信号需要使用两个向量来表示,其中一个向量用于表示离散的时间点,另一个向量表示在这些时间点上的值。例如对于如下时间信号

x(n)?{?3,2,?1,2,1,?1,2,3}

采用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所示。

x(n)3210-1-2-3-3-2-101234n图3 离散时间信号示例

4.离散时间信号的时域运算

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

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

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

三、实验内容

(1)、利用MATLAB绘制下列连续时间信号的波形:

?0.5tx(t)?(1?e)u(t) 1、

>> t=0:0.001:10;

>> x=(1-exp(-0.5*t)).*(heaviside(t)); >> plot(t,x)

1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0

1

2

3

4

5

6

7

8

9

10

2、x(t)?cos(?t)[u(t)?u(t?2)]

>> t=0:0.001:10;

>> x=cos(pi*t).*(heaviside(t)-heaviside(t-2)); >> plot(t,x)

0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0

1

2

3

4

5

6

7

8

9

10

3、

x(t)?|t|cos(2?t)[u(t?2)?u(t?2)]2

>> t=0:0.001:10;

>> x=abs(t)/2.*cos(pi*t).*(heaviside(t+2)-heaviside(t-2)); >> plot(t,x)

1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 0

1 2 3 4 5 6 7 8 9 10

4、x(t)?e?t|t|sin(2?t)[u(t)?u(t?3)]

2>> t=0:0.001:10;

>> x=exp(-t).*sin(2*pi*t).*(heaviside(t)-heaviside(t-3)); >> plot(t,x)

0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 0

1 2 3 4 5 6 7 8 9 10

(2)、利用MATLAB绘制下列离散时间信号的波形:

1、x(n)?u(n?3) >> x=heaviside(n-3); >>stem(n,x,'filled')

0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0 0 1 2 3 4 5 6 7 8 9 10

nx(n)?(?1/2)u(n) 2、

>> x=(-1/2).^n.*heaviside(n); >> stem(n,x,'filled')

3、x(n)?n[u(n)?u(n?5)] >> x=n.*(heaviside(n)-heaviside(t-5)); >> stem(n,x,'filled')

4 3.5 3 2.5 2 1.5 1 0.5 0 0 1 2 3 4 5 6 7 8 9 10

4、x(n)?sin(n?/2)u(n) >> x=sin(n*pi/2).*heaviside(n); >> stem(n,x,'filled')

0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 0 1 2 3 4 5 6 7 8 9 10

(3)、利用MATLAB生成并绘制连续周期矩形波信号,要求周期为2,峰值为3,显示三个周期波形。

>> t=0:0.001:6; >> x=square(t*pi).*3; >> plot(t,x)

3 2 1 0 -1 -2 -3 0

1 2 3 4 5

6

(4)、已知信号x1(t)?4?t,(0?t?4),用MATLAB绘出下列信号的波形

1、

x3(t)?x1(t)?x2(t)

>> t=0:0.001:10;

>> x1=(-t+4).*(heaviside(t)-heaviside(t-4)); >> x2=sin(2*pi*t); >>x3=x1+x2; plot(t,x3)

5 4 3 2 1 0 -1 0

1 2 3 4 5 6 7 8 9 10

2、x4(t)?x1(t)?x2(t) >> t=0:0.001:10;

>> x1=(-t+4).*(heaviside(t)-heaviside(t-4)); >> x2=sin(2*pi*t); >> x4=x1.*x2; plot(t,x4)

3 2 1 0 -1 -2 -3 -4 0

1 2 3 4 5 6 7 8 9

3、

x5(t)?x1(?t)?x1(t)

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)波形(

x(n)?[0,1,2,3,3,3,3]?),用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');

3322110-43-20240-43-202422110-202460-6-4-202

(6)、有MATLAB编程绘制下列信号的时域波形,观察信号是否为周期信号?若是周期信号,周期是多少?若不是周期信号,请说明原因。

1、

x(t)?1?cos(?4t??3)?2cos(?2t??4)?cos(2?t)

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]);

5 4 3 2 1 0 -1 -2 -3 -10

-8 -6 -4 -2 0 2 4 6 8 10

是周期信号 T=8s

2、x(t)?sin(t)?2sin(?t) >> x=sin(t)+2*sin(pi*t); >> plot(t,x)

3 2 1 0 -1 -2 -3 -20

-15 -10 -5 0 5 10 15 20

不是周期信号

3、

x(n)?2?3sin(2n???)38

n=1:20;

x=2+3*sin(2*n/3*pi-pi/8); stem(n,x,'filled');

是周期信号 T=3s

4、

x(n)?cos(n?n?n?)?sin()?cos()632

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离散系统通常可以由系统差分方程描述,设描述系统的差分方程为:

NM?ak?0ky(n?k)??bx(n?r)r?0r

则在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)、离散时间序列的卷积和

卷积和是离散系统时域分析的基本方法之一,离散时间序列x1(n)和x2(n)的卷积和

x(n)定义如下:

x(n)?x1(n)?x2(n)??x1(k)x2(n?k)x=conv(x1,x2)

MATLAB提供了函数conv来求两个离散序列的卷积和。其调用格式如下:

(2)、连续时间信号的卷积积分

卷积积分是连续系统时域分析的有效方法和工具之一,连续时间信号和的卷积积分定义如下:

用户可根据书上内容自定义一个用于计算卷积积分的通用函数sconv。

三、实验内容

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

>> a=[1 sqrt(2) 1]; >> b=[1]; >> sys=tf(b,a);

>> impulse(sys)

0.6 0.5 0.4 Am

plit0.3 ude

0.2 0.1 0 -0.1 0

Impulse Response

1 2 3 4 5 6 7 8 9 10

Time (seconds)

>> a=[1 sqrt(2) 1]; >> b=[1 0 0]; >> sys=tf(b,a); >> impulse(sys)

0.2 0 -0.2 -0.4 Am

plit-0.6 ude

-0.8 -1 -1.2 -1.4 -1.6 0

1

2

3

4

5

6

7

8

9

Time (seconds)

>> a=[1 1 1]; >> b=[1 0]; >> sys=tf(b,a); >> impulse(sys)

1 0.8 0.6 Am

plit0.4 ude

0.2 0 -0.2 -0.4 0

2 4 6

Time (seconds)

8 10 12

>> a=[1 1 1]; >> b=[1 0 1]; >> sys=tf(b,a); >> impulse(sys) 0.4 0.2 0 Am

plit-0.2 ud

e -0.4 -0.6 -0.8 -1 0

2

4

6

Time (seconds)

8

10

12

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.5 0.4 0.3 Am

plit0.2 ude

0.1 0 -0.1 -0.2 0

2 4 6 8 10 12 14

Time (seconds)

0.35 0.3 0.25 Am

plit0.2 ude

0.15 0.1 0.05 0 0

Step Response

2 4 6 8 10 12 14

Time (seconds)

是稳定系统

>> t=0:0.01:10; >> x=exp(-t); >>lsim(sys,x,t)

1.2 1 0.8 Am

plit0.6 ude

0.4 0.2 0 -0.2 0

Linear Simulation Results

1 2 3 4 5 6 7 8 9 10

Time (seconds)

3、已知描述离散系统的差分方程如下,试采用MATLAB绘出各系统的单位抽样响应,并根据单位抽样响应的时域波形分析系统的稳定性。

① y(n)+3y(n-1)+2y(n-2)=x(n)

>> a=[1 3 2]; >> b=[1]; >> impz(b,a)

不是稳定系统

5、采用MATLAB计算如下两个序列的卷积,并绘出图形

x1(n)?[1,2,1,1]?x2(n)?1,(?2?n?2)

>> x1=[1 2 1 1]; >> x2=[1 1 1 1 1]; >> x=conv(x1,x2) x =

1 3 4 5 5 4 2 1

54.543.532.521.510.50-3-2-101234

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');

程序运行结果如下:

10-110-150-5051015202530354005101520253035400102030405060708090

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)

x1(t)210.81.50.6x2(t)1-2-10t(s)120.4-1-0.5x(t)=x1(t)*x2(t) ?t=0.0010t(s)0.5143210-3-2-10t(s)123

实验三 信号频域分析

一、实验目的

①深入理解信号频谱的概念,掌握信号的频域分析方法。 ②观察典型周期信号和非周期信号的频谱,掌握其频谱特性。

二、实验原理与方法

1、连续周期信号的频谱分析

如果周期信号满足狄里赫利条件,就可以展开为傅里叶级数形式,即

x(t)??ckejkw0tk?????(1)

ck?1?T0x(t)e?jkw0tdtT0(2)

?(?)式中,T0表示基波周期,w0?2?/T0为基波频率,T0表示任一个基波周

期内的积分。

式(1)和式(2)定义为周期信号复指数形式的傅里叶级数,系数ck称为x(t)的傅里叶系数。周期信号的傅里叶级数还可以由三角函数的线性组合来表示,即

x(t)?a0??akcoskw0t??bksinkw0tk?1k?1????(3)

其中:

a0?122?T0x(t)dt,ak??Tx(t)coskw0tdt,bk??Tx(t)sinkw0tdtT0T00T00(4)

式(3)中同频率的正弦项和余弦项可以合并,从而得到三角函数形式的傅里叶级数,即

x(t)?A0??Akcos(kw0t??k)k?1??(5)

其中:

A0?a0,Ak?ak2?bk2,?k??arctanbkak(6)

可见,任何满足狄里赫利条件的周期信号都可以表示成一组谐波关系的复指数函数或三角函数的叠加。一般来说周期信号表示为傅里叶级数时需要无限多项才能完全逼近原信号,但在实际应用中经常采用有限项级数来替代,所选项数越多就越逼近原信号。

2、连续非周期信号的频谱分析

对于非周期连续时间信号,吸纳后的傅里叶变换和傅里叶逆变换定义为

X(w)??x(t)e?jwtdt????(7)

x(t)?12??????X(w)ejwtdw(8)

式(7)和式(8)把信号的时域特性和频域特性联系起来,确立了非周期信号x(t)和频谱X(w)之间的关系。

采用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的数值计算的方法近似计算连续时间傅里叶变换。傅里叶变换X(w)可以由式(9)近似计算

X(w)??x(t)e?????jwtdt?lim?x(k?)e?jwk????0????(9)

当x(t)为时限信号,且?足够小,式(9)可以演变为

X(w)???x(k?)e?jkw?k?ab(10)

而式(10)中求和部分又可以表示成一个行向量和一个列向量的乘积

?x(k?)ek?ab?jkw??e?j?a??w???j?(a?1)??w?e??[x(a?),x((a?1)?),?,x(b?)]???.....????j?b??w???e?(11)

式(11)可以很方便地利用MATLAB实现。

3、离散周期时间信号的频域分析

基波周期为N的周期序列x(n)可以用N个成谐波关系的复指数序列的加权和表示,即

x(n)?k??N??cekjk(2?/N)n(12)

这里k=表示求和仅需包括一个周期内的N项,周期序列在一个周期内的求和与起点无关。将周期序列表示成式(12)的形式,成为离散傅里叶级数,而系数ck则称为离散傅里叶系数。离散傅里叶系数ck可以由式(13)确定。

ck?1x(n)e?jk(2?/N)n?Nk??N?(13)

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

这里,我们用周期N与傅里叶系数ck的乘积来表示周期离散时间信号的频谱,即

X(k)?N?ck?k??N??x(n)e?jk(2?/N)n(14)

X(k)可以利用MATLAB提供的函数fft用来计算,调用格式为

X?fft(x)

该函数返回X(k)一个周期内的值,其中x表示x(n)一个周期内的样本值。

4、离散非周期时间信号的频域分析

非周期序列x(n)可以表示成一组复指数序列的连续和

x(n)?12???X(e2j?)ej?nd?(15)

其中

X(e)?j?n??????x(n)e?j?n(16)

式(16)称为x(n)的离散时间傅里叶变换,式(15)和式(16)确立了非周

j?j?期离散时间信号x(n)及其离散时间傅里叶变换X(e)之间的关系。X(e)是连续

j?频率?的函数,称为频谱函数,且X(e)是周期的连续频率函数,其周期为2?。

可见,非周期离散时间函数对应于频域中是一个连续的周期的频率函数。

对于有限长的时间序列,式(16)可以表示为

X(e)??x(n)e?j?nj?n?n1nN?e?jn1????jn2??e??[x(n1),x(n2),?,x(nN)]???.....????jnN????e? (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

1.2 1 0.8 0.6 0.4 0.2 0 -0.2 -2

-1.5 -1 -0.5 0 0.5 1 1.5

2

N=15

1.2 1 0.8 0.6 0.4 0.2 0 -0.2 -2

-1.5 -1 -0.5 0 0.5 1 1.5

2

N=50

1.2 1 0.8 0.6 0.4 0.2 0 -0.2 -2

-1.5 -1 -0.5 0 0.5 1 1.5

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

4 3.5 3 2.5 2 1.5 1 0.5 0 -0.5 -1 -6

-4

-2

0 w

2

4

6

>> y=int(exp(-j*w*t),t,-4,4); >> ezplot(y)

(2 sin (4 w) )/ w 2.5 2 1.5 1 0.5 0 -0.5 -1 -1.5 -6

-4

-2

0

w

2

4

6

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;

x(n)10.5001234nX(k)567896420-201234k56789

Q3-1、以周期方波序列为例,说明周期序列与连续周期信号的频谱有何异同。

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

Q3-2、随着周期方波序列占空比的变化,其频谱如何随之变化?

随着占空比越来越大,频谱密度也越来越大。

实验四 LTI系统的频域分析

一、实验目的

①加深对LTI系统频域响应基本概念的掌握和理解 ②学习和掌握LTI系统频域特性的分析方法

二、实验原理和方法

1、连续时间系统的频域响应

系统的频域响应定义为系统单位冲激响应的傅里叶变换,即

H????Y???/X?????

H(?)????h(?)e?j??d?

若LTI连续时间系统的冲激响应为h(t),输入为x(t),根据时域分析可知

Y?t??x?t??h?t?对本式求傅里叶变换得

Y????X???H???

所以,频率响应还可以由零状态相应和输入的傅里叶变换之比得到

H????Y???/X???

H???反映的是系统的固有属性,与外部激励无关,又可以表示为

H(?)?H(?)ej?(?)其中

H(?)称为系统的幅度响应,?(?)被称为系统的相位响应。

对于由下述微分方程描述的LTI连续时间系统

(m)ay(t)?bx?n?m(t)(n)n?0m?0NM

其频率响应H(jw)可以表示为(8-34)所示的jw的有理多项式。

Y(?)bM(j?)M?bM?1(j?)M?1?bM?2(j?)M?2?...?b0H(?)??X(?)aN(j?)N?aN?1(j?)N?1?aN?2(j?)N?2?...?a0

本文来源:https://www.bwwdw.com/article/1zvg.html

Top