资源描述
信号与系统 课程设计指导
信号与系统
——课程设计指导
目 录
题目1 MATLAB中有关信号类的研究…………………………………………………2
题目2 信号波形仿真………………………………………………………………………4
题目3 MATLAB在建模与仿真的应用介绍……………………………………………6
题目4 利用MATLAB框图对系统进行仿真……………………………………………8
题目5 连续与离散小波变换的应用调查和小波的分类………………………………16
题目6 图像分析中的信号分析…………………………………………………………19
课程设计题目一:《MATLAB中有关信号类的研究》
在已学课程《MATLAB程序设计及应用》和面向对象编程的基础之上,对MATLAB中类的定义,创建,运用,特点进行研究,以进一步熟练掌握MATLAB。
1. MATLAB中类的定义;
2. 对象的创建及应用;
3. 封装性,继承性,多态性在MATLAB信号类中的体现,MATLAB信号类与其他OO程序设计语言中其他类的比较;
4. 写出3000字以上的报告 举例应详尽,恰当。
类和类的定义
在面向对象的程序设计中,有经常接触类、对象等专业名词;到底什么是类、什么是对象呢?在程序又是怎样运用呢?类是面向对象程序设计的核心,它实际是一种新的数据类型,也是实现抽象类型的工具,因为类是通过抽象数据类型的方法来实现的一种数据类型。类是对某一类对象的抽象;而对象是某一种类的实例,因此,类和对象是密切相关的。没有脱离对象的类,也没有不依赖于类的对象。
什么是类
类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。这有点像C语言中的结构,唯一不同的就是结构没有定义所说的“数据相关的操作”,“数据相关的操作”就是我们平常经常看到的“方法”,因此,类具有更高的抽象性,类中的数据具有隐藏性,类还具有封装性。
类的结构(也即类的组成)是用来确定一类对象的行为的,而这些行为是通过类的内部数据结构和相关的操作来确定的。这些行为是通过一种操作接口来描述的(也即平时我们所看到的类的成员函数),使用者只关心的是接口的功能(也就是我们只关心类的各个成员函数的功能),对它是如何实现的并不感兴趣。而操作接口又被称为这类对象向其他对象所提供的服务。
类的定义格式
类的定义格式一般地分为说明部分和实现部分。说明部分是用来说明该类中的成员,包含数据成员的说明和成员函数的说明。成员函数是用来对数据成员进行操作的,又称为“方法”。实现部分是用来对成员函数的定义。概括说来,说明部分将告诉使用者“干什么”,而实现部分是告诉使用者“怎么干”。
面向对象程序设计(Object-Oriented Programming 简称 OOP)之观念能大量简化计算机软件之复杂度﹐让人们更容易发展及维护软件。OOP 的两个最基本观念是﹕类别(Class) 及对象(Object)。俗语常说﹕「见树不见林」或「见林不见树」﹐其中的林就是「类别」﹐而林之组成元素──树就是「对象」了。依传统之程序写法﹐主要之程序设计工作是在于设计指令、叙述及函数等等﹔然而在OOP 之新观念中﹐写程序的主要工作在于──设计类别﹐亦即「造林」之工作。设计各式各样之类别后﹐再做「雕材」的工作﹐对树木做各种运用﹔亦即﹐使用类别之对象﹐而产生有价值之信息。
1. 何谓「面向对象」
现在的「面向对象」(Object-Oriented) 观念﹐在软件开发时﹐甚至写程序时﹐对象(Object)成为脑海里的主角。当您看到程序时﹐心理充满着对象之影子和概念﹐函数和资料变成对象内之一部分﹐是配角而非主角了。程序设计之核心工作在于描述对象、组织对象、安排对象间之沟通(传递讯息)方式。就如同「人」是社会中的主要对象﹐社会是有组织的人群﹐人们之间会互相沟通、协调。
由于软件中的对象观念和实际社会中的对象观念是一致的﹐所以 OOP观念使软件与实际世界间之距离缩短了。此为 OOP技术的重要特点之一。例如﹕函数或程序导向之核心观念──函数﹐在一般人们的心目中﹐并非熟悉之概念﹐只在数学里学到之概念而已。因而让人对软件感到陌生。而在对象导向观念中﹐实际社会之对象﹐例如﹕人、汽车、股票、磁盘驱动器、帐单、房间、学生、教室等皆为软件设计师脑海中的对象﹐也是程序中的对象。因之﹐不论是老板或程序设计师来看程序﹐他们脑海中皆充满对象之影子﹐而这些个体皆为人们生活中﹐真正活生生的东西、实在之物体或大家耳熟能详之概念﹐使得软件之使用者和设计者有一致的心灵、共同之感觉﹐这让使用者对软件更满意﹐设计师更了解使用者之需要。
2. 认识与寻找对象
着手设计一个系统或写一个程序时﹐第一件会出现在脑海中的问题是﹕对象那么多﹐何者是跟此系统或程序有关的呢﹖例如﹕在设计一个销售系统时﹐「顾客」是一重要对象﹐产品及订单也是重要对象﹔至于原料之产地及原料之供货商虽然是明显的对象﹐但不见得与销售系统有关。反之﹐若您所设计的是采购或生产系统时﹐原料、产地及其供货商就跃然成为重要对象了。在寻找对象之过程中也会让您对所要设计的系统有更清楚之认识。
3. 对象之分类与组织
3.1 类别的永恒性
俗语说﹕物与类聚。「物」和「类」说明对象与其所属「类别」(Class) 之关系﹐相似之对象常归为一类。例如﹕一个人是对象﹐人类是由个人所构成之类别。「狗」这种动物是类别﹐我家那只哈巴狗是对象。当您获知公司有 A、B 两位推销员时﹐可得知 A、B 两者皆为对象﹔同时﹐也联想到「推销员」(Salesman)是类别﹐而 A、B 皆是此类别内之对象。
由于类别比对象较具有永恒性﹐在设计软件的过程中﹐当您找到对象时﹐也必须掌握此对象之类别﹐如此软件自然会更具有永恒性﹐亦即软件的寿命会更长。例如﹐一个人从出生到老﹐不超过二百年﹐而「人类」则因对象生生不息而永远昌隆。在学校里﹐King老师会换工作而离开学校﹐但「老师」类别将永远存在。因之﹐个体及其所属的群体──类别﹐皆是 OOP之核心观念。善于利用类别把对象归类﹐并且组织起来﹐是对象导向软件开发的重要技术。在设计软件时﹐通常必须先决定有关的类别﹐并且弄清楚类别之间的关系。兹介绍两种最常见之类别关系﹕「父子关系」和「整体╱部分关系」。
Matlab通过类的说明将数据结构和操作数据的函数封装在一起,在定义了类的一个对象后,该对象将在计算机中获得一块内存区,从概念上讲该内存区中不仅存储该对象的数据,而且存储对象成员函数的代码,通过访问权限的控制,使得只有局部于对象中的代码才可以访问存储于这个对象中的私有数据。面向对象的Matlab用这种方法实现对象的封装特性。
(如Simulink里的元器件库)
面向对象的方法除具有封装特性还具有继承特性。通过建立类之间的继承关系,由一个或多个类可以通过派生建立新的类,由类派生出的类称为派生类,派生出派生类的类称为该派生类的基类,派生类从基类继承数据和函数,同时可以增加新的数据和函数,以及可以重新定义由基类继承的成员函数。从而产生了类的层次性。类的继承是面向对象语言的一个重要机制。
类的派生和继承 继承机制清晰地体现现实世界的结构关系,表达了对象类之间所具有的共同性和差异性。例如一个单位员工具有很多共同特性,员工根据工作性质等分为秘书、经理、临时员工等,每一类除具有员工的一般共性外还有其特有的性质,在临时员工中还可分出顾问这个子类。下层的类继承上层的性质并有其特定的属性。
多态性又被直观地称为一个名字,多个函数
课程设计题目二:《信号波形仿真》
设计要求:
1. 用Matlab的GUI进行设计;
2. 至少仿真10种常用的信号;
3. 界面美观,波形准确;
4. 报告内容全面、条理清楚,字数3000字以上。
首先创建图形用户界面:
用户界面是人,即用户与计算机或计算机程序的接触点或交互方式,是用户与计算机进行信息交流的方式。
图形用户界面或GUI是包含图形对象,如:窗口、图标、菜单和文本的用户界面。以某种方式选择或激活这些对象,通常引起动作或发生变化。最常见的激活方法是用鼠标或其它点击设备去控制屏幕上的鼠标指针的运动。按下鼠标按钮,标志着对象的选择或其它动作。
应用GUI来建立GUI函数。可以用鼠标建立GUI对象,放置GUI对象和指定GUI对象的大小。
常用信号Matlab应用举例
常用信号
Matlab语言表示
正弦信号
ezplot(sin(t));
双曲正切信号
ezplot(tanh(t));
平均分布随机信号
plot(-1:0.01:1,rand(1,201))
正态分布随机信号
plot(-1:0.01:1,randn(1,201))
阶跃信号
t=zeros(1,201);
plot(-1:0.01:1,u(t,101:201));
axis([-1,1,-0.1,1.1])
符号信号
t=zeros(1,201);
plot(-1:0.01:1,2*u(t,101:201)-1);
axis([-1,1,-1.1,1.1])
门函数信号
t=zeros(1,201);
plot(-1:0.01:1,u(t,51:201)-u(t,151:201));
axis([-1,1,-0.1,1.1])
锯齿形波
t=zeros(1,401); plot(-2:0.01:2,u(t,1:100).
*(-1:0.02:7)+u(t,101:200).
*(-3:0.02:5)+u(t,201:300).
*(-5:0.02:3)+u(t,301:401).
*(-7:0.02:1));
axis([-2,2,-1.1,1.1])
矩形波
t=zeros(1,801); plot(-4:0.01:4,u(t,51:150)
+u(t,251:350)
+u(t,451:550)
+u(t,651:750)); axis([-4,4,-0.1,1.1])
指数信号
ezplot(exp(t));
对数信号
ezplot(log(t));
斜变信号
t=zeros(1,201);
plot(-1:0.01:1,(-1:0.01:1).
*u(t,101:201));
axis([-1,1,-0.1,1.1])
单边衰减信号
t=-1:0.01:5;
plot(t,1/(3-1)*
(exp(-t)-exp(-3*t)).*u(t,101:601));
单边减幅正弦信号
t=-1:0.01:5; plot(t,exp(-1*t).*sin(5*t).*u(t,101:601))
冲激序列
t=ones(1,9);
stem(-4:4,t);
axis([-4.1,4.1,0,1.1])
钟形脉冲
ezplot(1/0.1*exp(-pi*(t/0.1)^2)/10);
双边指数脉冲
ezplot(1/(2*0.1)*exp(-1*abs(t)/0.1));
指数脉冲
t=-4:0.01:4;
plot(t,t.*exp(-2*t).*u(t,400:801));
axis([-4,4,0,0.2])
梯形脉冲
t=-3:0.01:3; plot(t,u(t,201:400)
+u(t,100:200).*(-1:0.01:5)
+u(t,401:500).*(abs((-4:0.01:2)-1)));
axis([-3,3,-0.1,1.1])
抽样信号
ezplot(sin(t)/t)
周期半波余弦信号
t=-4:0.01:4;
y=cos(t*pi);
for i=1:801
if(y(i)<0)
y(i)=0;
end;
end;
plot(t,y);
axis([-4,4,-0.1,1]);
周期三角波信号
t=zeros(1,401);
plot(-2:0.01:2,abs(u(t,1:100).
*(-1:0.02:7)+u(t,101:200).*(-3:0.02:5)
+u(t,201:300).*(-5:0.02:3)
+u(t,301:401).*(-7:0.02:1)));
axis([-2,2,-0.1,1.1])
周期对称方波信号
t=zeros(1,801);
plot(-4:0.01:4,(u(t,51:150)
+u(t,251:350)+u(t,451:550)
+u(t,651:750))*2-1);
axis([-4,4,-1.1,1.1])
课程设计题目三:《Matlab在建模与仿真的应用介绍》
设计要求:在已学习Matlab的基础之上,对MATLAB在通信方面的应用进行调查研究,用网页的形式介绍Matlab在建模与仿真的应用。
1. 用网页的形式进行介绍。
2. 网页页面不少于10页,要说明充分。
3. 网页布局合理,必要需要嵌入图片进行说明。
4. 报告内容全面、条理清楚,字数在3000字以上。
在充分对用MATLAB在通信方面的应用进行调查研究的基础上,用FrontPage2000或Dreamwear设计网页
例如:
1. 建模方面的应用
MATLAB是控制系统的一种分析和仿真工具。在国外,尤其是在美国,各著名大学在80年代末就已把MATLAB列入电气工程类专业课程的教学计划。成为大学生和研究生必修课程和实验环境中必须掌握的工具。
与早期的版本相比,目前的版本MATLAB 6.5,在建立向量、数组和矩阵方面,使用更方便,界面更友好。输出结果可视化,深受用户的欢迎。它的应用也由最初的自动控制领域逐步向信号处理、图像处理以及工程问题求解等领域发展。
运行MATLAB会在计算机屏幕创建一个或多个窗口。其中,命令窗口是用户与MATLAB进行交互的主要场所(Matlab Command Window)。
1)数学运算
如同一个计算器,MATLAB 做到与“草稿纸”一样,用户输入式子,便输出结果。
如:>>4*25+6*22+2*99 注:>>代表光标处
ans=
430
有时我们遇到不容易求解问题.如:x**4-12X**3+0X**2+116=0的根,注:**为乘方
>>p=[1 -12 0 25 116]
>>r=roots(p)
r=11.7473
2.7028
-1.2251+1.4672 i
-1.2251-1.4672 i
是不是很方便! MATLAB能为你求解:数组和矩阵的各类运算、多项式的根、乘法、除法、加法、减法、微分、积分和傅立叶变换等运算。
2)数值分析
面对一堆纷繁数据,你不得不花很多精力用高级语言编程序求解,但如果你拥有了MATLAB,这个过程就简单多了。瞧三个城市某月的最高温度变化分析,只需输入简单的几行,就可得出结果.
>>temps1=[
12 15 12 14 12 11 15 8 19 12 14 11 9 8 15 8 10 129 12 12 10 139 10 14 12 13 15 13 12;
8 9 5 86 9 9 10 77 10 8 7 88 9 7 7 88 8 9 12 10 6 7 5 7 10 11 12 ; 18 22 19 23 22 19 15 20 18 18 19 17 23 19 18 20 17 22 19 21 20 17 18 20 22 21 22 18 23 24 22]
>>temps=temps1'
>>d=1:31;
>>plot(d,temps)
>>xlabel(‘每天最高温度’),ylabel(‘摄氏度’)
>>title(‘三个城市每日高温(单位C)’) 同样你可以利用MATLAB函数处理各类数据。
3)绘制图形
MATLAB能轻松绘出二、三维图。
输入如下命令就可得到一个的漂亮图画。
>>y,z)=peaks(30);
>>surfl(x,y,z) %有亮度的曲面图
>>shading interp %插值加色彩
>>colormap pink %单一色彩曲面图
>>grid,xlabel(‘X-axis’),ylabel(‘Y-axis’),zlabel(‘Z-axis’)
>>title('surfl of peaks')
2. 仿真方面的应用
1)自动控制系统仿真
在命令窗口(matlab command window)键入simulink,就出现(SIMULINK) 窗口。以往十分困难的系统仿真问题,用SIMULINK只需拖动鼠标即可轻而易举地解决问题。
(SIMULINK)系统模型库如下所示:
Sources(输入源) Sinks(输出方式) Discrete(离散时间模型) Linkear(线性环节) Nonlinear(非线环节) Connections(连接及接口) Extras(其他环节)。
若想建立一个控制系统结构框图,则选取/New菜单项,出现Untiled编辑窗口,双击模型库中子模块(如:Sources),就出现Sources窗口,其中包括阶跃函数(Step Fcn)、正弦函数(Sin Wave)、白噪声函数、时钟、常数、MATLAB空间变量、信号发生器的图标。
例:观察正弦函数输出波形。
建立结构框图, 点取Sources窗口(Sin Wave)拖动复制到Untiled编辑窗口,然后从Sinks(输出方式)的子模块中点取视波器(Scope)拖动复制到Unitled编辑窗口,用鼠标先点一下起点模块的输出端(三角符号),然后拖动鼠标,这时出现一条带箭头的直线,将它的箭头拉到终点模块的输入端再释放鼠标键,两个模块连接起来。选取Unitled 编辑窗口中Simulation/start,即可通过双击结构框图中视波器(Scope)观察。
2)在线Internet
该软件由Mathworks公司开发,(在 寻求技术支持。
课程设计题目四:《利用Matlab 框图对系统进行仿真》
设计要求:在已学习Matlab的基础之上,对MATLAB在信号与系统里的LTI系统进行仿真。
1. 用Matlab的Simulink进行设计。
2. 至少仿真四种不同的系统。
3. 结果合理。
4. 报告内容全面、条理清楚,字数在3000字以上。
利用Matlab 框图对系统进行仿真举例:
Simulink简介
Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。它支持连续、离散
两者混合的线性和非线性系统,也支持具有多种采样速率的多速率采样系统。
Simulink为用户提供了用方框图建模的图形窗口,采用这种结构绘制系统模型就像用纸和笔画图一样容易,因此更加直观、方便、灵活。
Simulink包括Simulink模型库和各种工具模型库,其中Simulink模型库包含Sink(输出方式)、Source(输入源)、Continuous(连续系统)、Discret(离散系统)、NonLinear(非线性环节)、Math(数学库)、Signals and System(信号与系统库),另外我们还要用到Control System Toolbox库的有关元件。下面仅介绍连续系统的方框图建模和仿真。
利用Simulink创建模型
在Matlab工作窗口键入“Simulink” ,打开Simulink Liberary Browser如图1所示:
图1 Simulink Liberary Browser
单击图标创建一个新的模型,模型的编辑窗口如图2 所示:
图2 新创建的模型窗口
1、 建立系统微分方程组,并根据微分方程绘制系统框图(或信号流图)。设系统微分方程组如下:
其框图如图系统框图3。框图是建立Simulink模型的基础。
图3 系统框图
2、 首先要确定建立系统所需的模块,并将模块加入到系统中。本系统中包括四类模块:
①输入信号模块Ф(t)、ML(t)。Simulink库中包含Source模块库以提供各种输入信号。打开Source库的方法是:点击图1中Simulink项目下的“+”号可以看到其中的模块库如下图所示,点击Source项目下的“+”号则可以看到其中的信号模块:
假如要求图3所示系统关于ML(t)的阶跃响应(Ф(t)=0),则应该选择一个Constant”模块(即Ф(t))和一个“Step”模块(即ML(t))。用鼠标点击上图中的 “Constant”(按住不放),然后拖拽到新建的模型窗口中,则图2中出现了一个Constant模块,如图4所示:
图4 加入constant模块
同理可以加入Step模块。
②加入输出模块。因为希望看到系统的响应波形,所以选用“Sink”库中的“Scope”模块,选取、加入模块的方法与①完全一致。到这里系统模型如图5所示:
图5 加入输入模块、输出模块后的系统模型
③与图3比较可知,还要加入传递函数模块、增益模块和求和模块。传递函数模块位于“Continous”模块库中,“Continous”模块库如图6所示:
图6 “Continous”模块库
增益模块、求和模块都位于“Math”库中,“Math”库如图7所示:
图7“math”库
根据图3把相应的模块放到对应的位置得到图8,至此系统建模的模块选取完成。
图8 系统模型(未连线)
3、 修改模块参数。图2.7.8中显示的模块参数都是默认值,实际的参数还需要修改。以Gain模块为例说明修改参数的方法。双击Gain模块,弹出它的参数窗口如图9:
图9 Gain模块的参数窗口
这里,将Gain改为0.1,单击“ok”,可以看到模型窗口中Gain的值(增益值)变为0.1。
图10 系统模型(修改Gain的增益值后)
同理修改Gain1,Gain2。传递函数模块的修改方法与Gain基本类似,将“Transfer Fcn”的参数修改如下,Numerator表示传递函数的分子,Denominator表示分子。
图11 Transfer Fcn(传递函数)模块的参数窗口
同理,根据图3修改Transfer Fcn1、Transfer Fcn2的参数。“Step”模块参数窗口如图12所示,将其中的参数值修改如下:
图12、Step模块参数窗口
求和模块 的参数窗口如下,将“List of signs”改为“+-”(因为有负反馈)
图13 求和模块的参数窗口
“Constant”模块参数修改如下:
图14 “Constant”模块参数窗口
修改了模块参数的系统模型如图15所示:
图15修改了模块参数后的系统模型
4、 模块间的连线。连线的方法是点击连线的起点按住后拉至连线的终点。连接完毕后的系统模型如图16所示:
图16 连接完毕后的系统模型
5、 下面就可以进行仿真了。单击工具栏中的按钮进行仿真。双击“Scope”模块可观察到输出波形,如图17所示:
图17 系统关于ML(t)=1(t)、Φ(t)=0的响应
6、 将输入模块改为图18所示形式,ML(t)=0、Φ(t)=1(t),单击工具栏中的可得仿真结果如图2.7.19所示:
图18 ML(t)=0、Φ(t)=1(t)时的系统模型
图19 系统关于ML(t)=0、Φ(t)=1(t)的响应
7、 求系统冲激响应。建立系统框图如示图20所示。单位阶跃信号的一次导数为单位冲激信号。由于系统信号源中没有单位冲激信号,所以用单位阶跃信号的导数产生单位冲激信号。
图20 ML(t)=0、Φ(t)=时的系统模型
输出显示如图21所示:
图21 系统关于ML(t)=0、Φ(t)=的响应
图22 ML(t)=、Φ(t)=0时的系统模型
输出为:
图23 系统关于 ML(t)=、Φ(t)=0的响应
课程设计题目五:连续与离散小波变换的应用调查和小波的分类
设计要求:
1. 通过查阅相关文献,了解小波的定义;
2. 连续与离散小波变换的定义;
3. 连续与离散小波变换的应用;
4. 小波分类。
5. 写出3000字以上的报告。
1.小波与小波变换的定义
试考察一下像湖面商微波荡漾的小波(wavelet)ψ(t)。因为是微波,所以其振幅必须局限于一定范围以内。那么,假设这种微波可以进行振幅平方的积分。通过使该波在时间轴商放大a倍的运算以及沿着时间轴仅移动b的运算,构成具有各种标度因子a和b的微波状函数的集合,即:
R表示由实数构成的集合。上式中,若微波ψ(t)在时间轴上放大a倍,则同时在振幅方向上缩小为原来的倍,但由于ψa,b(t)的平方积分值,即能量保持恒定,所以使运算得以简化。
再有,可求出这些微波ψa,b(t)与x(t)的内积,即:
参数a,b分别表示标度因子与位置,对于时间序列来说,分别对应于频率于瞬时。微波状函数与时间序列的内积类似于求出的各瞬时的频率特性。即变成在时间序列中进行时间—频率分析那样的运算。由于微波是小波,所以这样的微波状函数ψ(t)称为小波。另外由x(t)到W(a,b)的变换广义上称为小波变换(wavelet transform)。
2.逆小波变换的定义
小波逆变换就是由系数W(a,b)重构原信号x(t),即存在由
组成的函数族。该函数族决定一个函数,当使用与由构成时间相同的方法来生成
其逆变换族称为逆小波变换(inverse wavelet transform)。另外,称为ψ(t)的对偶小波(dual wavelet)。即使在对偶小波存在的情况下,是否满足存在的唯一性是不确定的。然而,一般对于平方可积分函数ψ(t)来说,其傅立叶变换ψ(t)满足
的条件称为容许条件。若ψ(t)为绝对可积分,则容许条件为ψ(0)=0,即等效于。小波ψ(t)满足容许条件时称为基(本)小波。对于基小波来说,小波ψ(t)的共轭复数ψ*(t)变成对偶小波。因此逆小波变换可表示为
3.离散小波变换的定义
对于基小波变换来说
展开阅读全文