课程设计连续时间信号和系统时域分析及MATLAB实现.docx
《课程设计连续时间信号和系统时域分析及MATLAB实现.docx》由会员分享,可在线阅读,更多相关《课程设计连续时间信号和系统时域分析及MATLAB实现.docx(31页珍藏版)》请在冰豆网上搜索。
课程设计连续时间信号和系统时域分析及MATLAB实现
课程设计--连续时间信号和系统时域分析及MATLAB实现
课程设计任务书
学生姓名:
王伟专业班级:
电子科学与技术1001班
指导教师:
梁小宇工作单位:
信息工程学院
题目:
连续时间信号和系统时域分析及MATLAB实现
课题内容:
一、用MATLAB实现常用连续时间信号的时域波形(通过改变参数,分析其时域特性)。
二、用MATLAB实现信号的时域运算
三、用MATLAB实现信号的时域变换(参数变化,分析波形变化)
1、反转,2、使移(超时,延时),3、展缩,4、倒相,5、综合变化
四、用MATLAB实现信号简单的时域分解
1、信号的交直流分解,2、信号的奇偶分解
五、用MATLAB实现连续时间系统的卷积积分的仿真波形
给出几个典型例子,对每个例子,要求画出对应波形。
六、用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形。
给出几个典型例子,四种调用格式。
七、利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形。
给出几个典型例子,要求可以改变激励的参数,分析波形的变化。
时间安排:
学习MATLAB语言的概况第1天
学习MATLAB语言的基本知识第2、3天
学习MATLAB语言的应用环境,调试命令,绘图能力第4、5天
课程设计第6-9天
答辩第10天
指导教师签名:
年月日
摘要…………………………………………………………………………………Ⅰ
1.绪论………………………………………………………………………………1
2.对课题内容的分析………………………………………………………………2
2.1连续时间信号概述……………………………………………………………2
2.2采样定理………………………………………………………………………2
2.3总体思路…………………………………………………………………2
3.设计内容…………………………………………………………………………2
3.1用MATLAB实现常用连续时间信号的时域波形………………………………2
3.1.1单位阶跃信号和单位冲击信号…………………………………………2
3.1.2正弦信号…………………………………………………………………4
3.1.3指数信号…………………………………………………………………5
3.1.4实指数信号和虚指数信号………………………………………………6
3.2用MATLAB实现信号的时域运算………………………………………………7
3.2.1相加………………………………………………………………………7
3.2.2相乘………………………………………………………………………8
3.2.3数乘………………………………………………………………………9
3.2.4微分……………………………………………………………………10
3.2.5积分……………………………………………………………………12
3.3用MATLAB实现信号的时域变换………………………………………………13
3.4用MATLAB实现信号简单的时域分解………………………………………15
3.4.1交直流分解……………………………………………………………15
3.4.2奇偶分解………………………………………………………………16
3.5用MATLAB实现连续时间系统的卷积积分的仿真波形……………………18
3.6用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形………19
3.7利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形……………………………………………………………………………20
4.心得体会…………………………………………………………………………22
5.参考文献…………………………………………………………………………23
摘要
本文介绍了基于MATLAB的连续时间信号与系统时域分析。
首先利用MATLAB分析了系统的时域特性,分别分析了基于连续时间系统的时域波形、时域运算、时域变换、时域分解,并做出了连续时间系统的卷积积分的仿真波形、连续时间系统的冲激响应、阶跃响应的仿真波形。
在编程过程中分别用到了y=abs()、y=angle()、h=freqs(b,a,w)等函数。
利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,实现连续时间信号和系统时域分析的仿真波形。
关键词:
连续时间系统;时域分析;MATLAB;仿真
Abstract
ThisarticleintroducedbasedontheMATLABrun-ontimesystemfrequencyrangeanalysis.FirsthasanalyzedthesystemfrequencycharacteristicusingMATLAB,analyzedseparatelybasedontherun-ontimesystemlowpassfilter,haspassedthefilter,thebandpassfilterhigh,allpassesthefilterthefrequencyrangecharacteristic,andhasinturnmadeintheirtimedomainimpulseresponseprofile,thefrequencyrangetheamplitude-frequencycharacteristicprofile,thefrequencycharacteristicprofile.Usedy=absseparatelyintheprogrammingprocess(),y=angle(),h=freqs(b,a,w)andsoonthefunctions.Thenhasrealizedtherun-ontimesignalsamplingandrestructuringwithMATLAB,andtakef(t)=Sa(t)astheexample,respectivelybythesampling,andsoonthesampling,hasowedthesamplingthreekindofsituations,drawstheoriginalsignal,thesamplingsignal,therestructuringsignaltimedomainoscillogram.
Keyword:
Run-ontimesystem;Frequencycharacteristic;MATLAB;Restructuring
1绪论
MATLAB是国际上公认的优秀科技应用软件,它的基本功能是数值计算、符号运算、图形控制,它的出现给“信号与系统”课程的计算机辅助教学带来了福音,使利用计算机辅助学生完成“信号与系统”课程的数值计算、信号与系统分析的可视化建模及仿真调试成为可能。
该软件由公司于是1984年推出,经过十几年的发展与完善,目前已成为科技界最流行的应用软件。
它的主要特点是:
(1)高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来。
(2)完备的图形处理功能,实现计算结果和编程的可视化。
(3)友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握。
(4)功能丰富的应用工具箱(如信号处理工具箱),为用户提供了大量方便实用的处理工具。
运用MATLAB对信号与线性系统进行分析与实现的具体方法和过程,其目的在于:
(1)让学生在学习“信号与系统”课程的同时,掌握MATLAB的应用,对MATLAB
语言在低年级学生中的推广应用起到促进作用。
(2)学会应用MATLAB的数值计算功能,将学生从繁琐的数学运算中解脱出来,从而将便多的时间留于对信号与系统的基本分析方法和应用的理解与思考。
(3)让学生将课程中的重点、难点及部分课后练习用MATLAB进行形象、直观的可视化计算机模拟与仿真实现,从而加深对信号与系统基本原理、方法及应用的理解,以培养学生主动获取知识和独立解决问题的能力,为学习后继专业课打下坚实的基础。
本文将以MATLAB为工具,对信号与系统在联系时间系统的频域进行分析。
2对课题内容的分析
2.1连续时间信号概述
在某一时间区间内,除若干个不连续点外,如果任意识可都可给出确定的函数值,则称该信号为连续时间信号,简称为连续信号。
从严格意义上讲,MATLAB数值计算的方法并不能处理连续时间信号,然而,可利用连续信号在等时间间隔的取样值来近似表示连续信号,即当取样时间间隔足够小时,这些离散样值能够被MATLAB处理,并且能较好地近似表示连续信号。
2.2采样定理
对于一个有限频宽信号进行理想采样,当采样频率
时,采样值唯一确定;当此采样信号通过截止频率
的理想低通滤波器后,原始信号可以完全重建。
通常把最低允许的采样频率2
称为奈奎斯特频率,把最大允许的采样间隔
称为奈奎斯特间隔。
2.3总体思路
利用MATLAB强大的图形处理功能、符号运算功能以及数值计算功能,实现连续时间系统时域分析。
其中分析系统的时域特性时用到了y=abs()、y=conv()、h=sconv(b,a,w)等函数。
3设计内容
3.1用MATLAB实现常用连续时间信号的时域波形(通过改变参数,分析其时域特性)
3.1.1单位阶跃信号和单位冲击信号
3.1.2正弦信号
f(t)=Asin(ωt+φ)函数sin调用形式f=A*sin(ω*t+φ)
f(t)=Acos(ωt+φ)函数cos调用形式f=A*cos(ω*t+φ)
程序示例:
Frq=50;%信号频率值
count=0;
fs=1024;N=1024;%采样速率和数据点数
df=0.01;%频率分辨率
t=1/fs:
1/fs:
1024/fs;
x=sin(2*pi*Frq*t);
subplot(2,1,1);
plot(x);
axis([0,1100,-1.2,1.2]);
xlabel('N');
ylabel('振幅');title('sin函数');gridon;
运行结果:
3.1.3指数信号
f(t)=Aest函数exp调用形式f=A*exp(a*t)
程序示例:
clear,t0=0;tf=5;dt=0.05;t1=1;
t=[t0:
dt:
tf];st=length(t);
n1=floor((t1-t0)/dt);
x1=zeros(1,st);
x1(n1)=1/dt;
subplot(2,2,1),stairs(t,x1),gridon
axis([0,5,0,22])
x2=[zeros(1,n1-1),ones(1,st-n1+1)];
subplot(2,2,3),stairs(t,x2),gridon
axis([0,5,0,1.1])
alpha=-0.5;w=10;x3=exp((alpha+j*w)*t);
subplot(2,2,2),plot(t,real(x3)),gridon
subplot(2,2,4),plot(t,imag(x3)),gridon
运行结果:
3.1.4实指数信号和虚指数信号
例:
已知负指数序列jkkekf204014)(π+−=,利用MATLAB绘出其实部和虚部波形。
解:
实现该过程的MATLAB命令程序如下:
clearall;
a=-(1/40)+(pi/20)*i;
k=4;
n=0:
60;
x=k*exp(a*n);
subplot(2,1,1);
stem(n,real(x));
ylabel('幅值f(k)');
title('实部');
subplot(2,1,2);
stem(n,imag(x));
xlabel('时间(k)');
ylabel('幅值f(k)');
title('虚部');
运行结果为:
3.2用MATLAB实现信号的时域运算
信号的时域运算包括信号的相加、相乘、数乘、微分、积分。
(1)信号的相加和相乘:
已知信号
和
,信号相加和相乘记为
;
。
(2)信号的微分和积分:
对于连续时间信号,其微分运算是用diff函数来完成的,其语句格式为:
diff(function,’variable’,n),其中function表示需要进行求导运算的信号,或者被赋值的符号表达式;variable为求导运算的独立变量;n为求导的阶数,默认值为求一阶导数。
连续信号的积分运算用int函数来完成,语句格式为:
diff(function,’variable’,a,b),其中function表示需要进行被积信号,或者被赋值的符号表达式;variable为求导运算的独立变量;a,b为积分上、下限,a和b省略时为求不定积分。
3.2.1相加
例1:
t=0:
0.001:
6;
y1=2*rectpuls(t-3,2);
y2=2*rectpuls(t-3,6);
f1=y1+y2;
plot(t,f1);
gridon;
axis([0705]);
函数f1(t)由两个矩形脉冲信号相加。
运行程序,得如下图波形。
3.2.2相乘
例2:
t=0:
0.001:
6;
y1=2*rectpuls(t-3,2);
y2=2*rectpuls(t-3,6);
f1=y1.*y2;
plot(t,f1);
gridon;
axis([0705]);
函数f1(t)由两个矩形脉冲信号相乘。
运行程序,得如下图波形。
3.2.3数乘
例3:
t=0:
0.001:
6;
y1=2*rectpuls(t-3,2);
y2=2*rectpuls(t-3,6);
f1=2*(y1+y2);
plot(t,f1);
gridon;
axis([07010]);
函数f1(t)由两个矩形脉冲信号相加后的数乘。
运行程序,得如下图波形。
3.2.4微分
例1:
正弦函数的微分运算
symstyf
y=sin(2*t);
f=diff(y,t);
t=0:
0.01:
pi;
ezplot(f,t);
gridon
运行结果为:
例2:
指数函数的微分运算
symstyf
y=1*exp(-0.4*t);
f=diff(y,t);
t=0:
0.01:
10;
ezplot(f,t);
gridon
运行结果为:
3.2.5积分
例1:
指数函数的积分运算
symstyf
y=1*exp(-0.4*t);
f=int(y,t);
t=0:
0.01:
10;
ezplot(f,t);
gridon
运行结果为:
3.3用MATLAB实现信号的时域变换(参数变化,分析波形变化)
信号的时域变换包括信号的反转、使移、展缩、倒相
信号的平移包含信号的左移与右移,信号的翻转包含信号的倒相与折叠,平移和翻转信号不会改变信号
的面积和能量。
信号的尺度变换是对信号
在时间轴上的变化,可使信号压缩或扩展。
将原波形压缩
倍,
将原波形扩大
倍。
设f(t)=(1+t/2)*[&(t+2)-&(t-2)],用MATLAB来求f(t+2),f(t-2),f(-t),f(2t),并绘出其时域波形。
程序如下:
symst
f=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))')
subplot(2,3,1),ezplot(f,[-3,3])
title('f(t)')
y1=subs(f,t,t+2)
subplot(2,3,2),ezplot(y1,[-5,1])
title('f(t+2)')
y2=subs(f,t,t-2)
subplot(2,3,3),ezplot(y2,[-1,5])
title('f(t-2)')
y3=subs(f,t,-t)
subplot(2,3,4),ezplot(y3,[-3,3])
title('f(-t)')
y4=subs(f,t,2*t)
subplot(2,3,5),ezplot(y4,[-2,2])
title('f(2t)')
运行结果:
利用Matlab实现f(t)=e-0.5tε(t)向右移2和向左移2的波形
源程序如下:
clear;
closeall;
t=-5:
0.01:
5;
x=exp(-0.5*t).*stepfun(t,0)
x1=exp(-0.5*(t+2)).*stepfun(t,2);%信号右移两个单位波形
x2=exp(-0.5*(t-2)).*stepfun(t,-2);%信号左移两个单位波形
subplot(311)%输出第一个图形
plot(t,x)
gridon,
title('原信号x(t)')
subplot(312)%输出第二个图形
plot(t,x1)
gridon,
title('右移信号x(t)')
subplot(313)%输出第三个图形
plot(t,x2)
gridon,
title('左移信号x(t)')
xlabel('时间t');
运行结果见下图:
3.4用MATLAB实现信号简单的时域分解
时域分解包括信号的交直流分解和奇偶分解
3.4.1交直流分解
信号的交直流分解即将信号分解成直流分量和交流分量两部分之和,其中直流分量定义为 :
程序如下:
t=-1:
0.001:
1;
f=sin(2*pi*t)+2;
g=mean(f);
h=f-g;
subplot(311);
plot(t,f);
axis([-1 1 0.5 3.5]);
subplot(312);
plot(t,g);
axis([-1 1 1.5 2.5]);
subplot(313);
plot(t,h);
axis([-1 1 -1.5 1.5]);
运行结果为:
3.4.2奇偶分解
程序如下:
symst;
f=sym('sin(t-0.1)+t');
f1=subs(f,t,-t)
g=1/2*(f+f1);
h=1/2*(f-f1);
subplot(311);
ezplot(f,[-8,8]);
subplot(312);
ezplot(g,[-8,8]);
subplot(313);
ezplot(h,[-8,8]);
运行结果为:
3.5用MATLAB实现连续时间系统的卷积积分的仿真波形
例:
已知f1(t)=2t+1,f2(t)=6t计算卷积f1(t)*f2(t)的波形
源程序如下:
s=0.01;
k1=0:
s:
2;
k2=k1;
f1=2*k1+1;
f2=6*k2;
f=conv(f1,f2);%求卷积
f=f*s;
k0=k1
(1)+k2
(1);
k3=length(f1)+length(f2)-2;
k=k0:
s:
k3*s;
subplot(3,1,1);%输出第一个波形
plot(k1,f1);
title('f1(t)');
subplot(3,1,2);%输出第二个波形
plot(k2,f2);
title('f2(t)');
subplot(3,1,3);%输出第三个波形
plot(k,f);
title('f(t)卷积波形');
运行结果:
3.6用MATLAB实现连续时间系统的冲激响应、阶跃响应的仿真波形
(1)调用函数impulse可求解系统冲击响应,调用形式为:
y=impulse(sys,t)
(2)调用函数step可求解阶跃响应,调用形式为:
y=step(sys,t)
例:
某线性时不变系统的方程为
,试求系统的冲激响应和阶跃响应并画出波形。
程序如下:
a=[156];
b=[028];
subplot(2,1,1);
impulse(b,a,10);
gridon
subplot(2,1,2);
step(b,a,10);
gridon
运行结果为:
3.7利用MATLAB实现连续时间系统对正弦信号、实指数信号的零状态响应的仿真波形。
调用函数lsim可求解系统零状态响应,调用形式为:
y=lsim(sys,x,t)
式中:
t表示计算系统响应的抽样点向量;x是系统输入信号向量
例1:
求解系统的零状态响应
y’’(t)+2y’(t)+y(t)=2x’(t),x(t)=e
(t)
解:
MATLAB程序如下:
t1=0:
0.01:
5
a=[1,2,1];b=[2,0];ht=impulse(b,a,t1);
t2=0:
0.01:
5
xt=exp(2*t2)
t3=0:
0.01:
10
Rzs=conv(ht,xt)
subplot(3,1,1),plot(t1,ht);grid;xlabel('t1');ylabel('ht');
subplot(3,1,2),plot(t2,xt);grid;xlabel('t2');ylabel('xt');
subplot(3,1,3),plot(t3,Rzs);grid;xlabel('t3');ylabel('Rzs(t)');
运行波形:
例2:
某线性时不变系统的方程为
,输入
,求系统的零状态响应
。
程序如下:
a=[156];
b=[28];
t=0:
0.01:
9;
f=exp(-t);
y=lsim(b,a,f,t);
plot(t,y)
运行波形:
4.心得体会
MATLAB对自己以后的工作和学习很有帮助。
在刚开始设计时,有点茫然,连设计的题意都不太明白,在逐步的深入学习、了解之后慢慢有所了解。
开始写程序时也是无从下手,是通过查阅一些图书资料和网上资料后开始进入正题。
在这次课程设计中,我通过多方面地搜集资料,成功地用MATLAB编写出基于连续时间信号的各种时域波形及波形的变换与运算,还有各种响应波形的编写与实现。
通过这次的实践,我明白了要将理论与实际相结合的道理,尽管这个过程会有一些辛苦,但通过努力实现后,就能大大深化我对知识的理解程度,增长实践经验。
这表现在我对连续时间系统的频域的理解的加深、MATLAB的功能特性都有了进一步的认识。
总之,我在本次课程设计中学到了很多关于MATLAB的知识,获益良多。
5.参考文献
[1]孙祥,徐流美,吴清.MATLAB7.0基础教程.北京:
清华大学出版社,2006
[2]刘泉,姜雪梅.信号与系统.北京:
高等教育出版社,2006
[3]唐向宏,岳恒立,邓雪峰.MATLAB及在电子信息类课程中的应用.北京:
电子工业出版社,2006
[4]赵静,张瑾,高新科.基于MATLAB的通信系统仿真.北京:
北京航空航天大学出版社.