《电子论文-Matlab与神经网络工具箱.doc》由会员分享,可在线阅读,更多相关《电子论文-Matlab与神经网络工具箱.doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流电子论文-Matlab与神经网络工具箱.精品文档.神经网络讲义1. 自我介绍:姓名,Email地址2. 登记学生名单:l 非电信系学生凭选课单上课;l 有选课单未上课的,老师有权给0分。3. 讲授计划:第一课:绪论第二课:介绍Matlab及其神经网络工具包第三课:神经元与网络结构第四课:感知机(Perceptron)第五课:线性神经网络(Adaline)第六课:后向传播网络(Bckpropagation)第七课:自学习规则第八课:自组织网络、Hopfield网络第九课:期末考试4. 授课方式:讲授与练习相结合。l 授课主要以Matlab为工具
2、,在第四、五、六、八课均有课后作业。l 每次作业占两个课时。完成后以电子邮件形式将word文档发到信箱;标题写“神经网络作业”,写明如何使用该文件。教师通过上机检查。5. 考试方式:l 平时作业:50;课后作业,以软件为主;l 期末考试:50;开卷考试,以概念为主。6. 参考书目:l 人工神经网络,郑君里,杨行峻主编,1992年9月高教出版社第1版;l 神经网络与模糊控制,张乃尧,阎平凡编著,1998年10月清华大学出版社第1版;l 基于Matlab的系统分析与设计神经网络,楼顺天,施阳主编,1999年9月西安电子科技大学出版社第1版;l 英文文献:第一讲绪论1. 神经网络的定义神经网络是用非
3、常大量的简单计算处理单元(即神经元)构成的非线性系统,它具有学习能力、记忆能力、计算能力以及各种智能处理能力,它在不同程度和层次上模仿人脑神经系统的信息处理、存储及检索功能。利用它完成各项信号处理或人工智能任务时在许多方面可以胜过普通的冯诺依曼计算机。2. 本课程的研究内容人工神经网络是一门新兴的交叉学科。不同领域的学者对此有着不同的理解,不同的研究内容并且采取不同的研究方法。对于从事电路与系统、信号处理、通信等领域的研究人员,侧重于利用人工神经网络来解决各项特定的智能处理任务,诸如:识别、分类、联想、优化、推理以及发现规律等。本课程的研究内容仅限于此。3. 本课程的研究途径由于人工神经网络的
4、研究正处于迅速发展阶段,在研究思路、教学方法、处理对象以及结构和硬件构成等方面存在着种种差异很大的学说和流派,相应的文献与资料的数量迅速增加。因此,要将这一领域的主要研究内容和方法扼要、完整地整理出来必然有很大地困难。按照本课程地需要,主要介绍以下三种重要地研究途径。第一种是按照物理模型构成地神经网络,其中包括采用非概率神经元模型地Hopfield神经网络。第二种是以自适应信号处理理论为基础发展起来地,其中最著名地就是前向多层神经网络及其递推(BP)学习方法。第三种是按照自组织原则构成地神经网络,其中有代表性的是自适应谐振理论(ART)神经网络和TKohonen提出的自组织特征映射神经网络。这
5、三种途径各有其有缺点。从算法的系统性和完整性看,第一、二种优于第三种。而从模仿人的认知过程和智能处理功能看,后者又优于前者。从立即导向一种实用系统而言,第二种相对困难较少。4. 神经网络的研究热点1) 在神经网络研究中采用模糊算法,构成模糊人工神经网络;2) 用混沌(Chaos)理论研究人工神经网络;3) 加强与其它有关学科的交叉,特别是心理学、神经生理学、生物化学与生物物理学、以及人工智能科学等等;4) 用小波理论研究神经网络,形成小波神经网络;5) 人工神经网络的可编程问题;6) 利用分子器件实现人工神经网络:指硬件实现。第二讲Matlab与神经网络工具箱1. Matlab简介具有Fort
6、ran和C高级计算机语言知识的读者可能已经注意到,如果用它们去进行程序设计,尤其当涉及矩阵运算或画图时,编程会很麻烦。比如说,若想求解一个线性代数方程组AX=B=X=A1B,用户得首先编写一个主程序,然后编写一个子程序去读入各个矩阵的元素,之后再编写一个子程序,求解相应的方程,最后输出结果。一般说来,求解线性方程组这样一个简单的功能需要100多条源程序。Matlab的首创者Cleve Moler博士在数值分析,特别是在是指线性代数的领域中很有影响。1980年前后,他在New Mexico大学讲授线性代数课程时,发现用其它高级语言编程极为不便,便构思并开发了Matlab(Matrix Labor
7、atory,即矩阵实验室)。在Matlab下,矩阵的运算变得异常的容易,后来的版本中又增添了图象处理及多媒体、因特网、数据库等功能。Matlab出现以后一直在美国的New Mexico等大学作为教学辅助软件使用,并作为面向公众的免费软件广为流传。Matlab于1984年推出了正式版本。后来Moler组建了一个名为MathWorks的软件开发公司(http:/ www. M)专门扩展并改进Matlab。该公司于1992年推出具有划时代意义的Matlab 4.0版。可以配合Microsoft Windows一起使用。1998年推出5.3版。2000年11月6日推出最新版本Matlab 6.0。Ma
8、tlab 6.0有30个工具箱包,包括控制系统工具箱(Control System Toolbox),信号处理工具箱(Signal Processing toolbox),系统辨识工具箱(System Identification toolbox),鲁棒控制工具箱(Robust Control toolbox),分析于综合工具箱(-analysis and synthesis toolbox),定量反馈理论工具箱(QFT toolbox),神经网络工具箱(Neural Network toolbox),最优化工具箱(Optimisation toolbox),数据库工具箱(Database t
9、oolbox),网络工具箱(Matlab WebServer)等。现在的Matlab已经不仅仅是一个“矩阵实验室”了,它已经形成了一种具有广泛应用前景的全新的计算机高级语言。严格的说,Matlab并不是一种计算机语言,因为用它编写出来的程序并不能脱离Matlab环境而执行,但从功能上说,Matlab已经完全具备了计算机语言的结构和性能,因此我们也习惯的称之为Matlab语言。Matlab 5.3以上版本提供了C/C+的接口,通过另外一个工具MatCom,能用Visual C调用Matlab编写的程序,从而大大减少C程序的编写难度。此工具我已经用过,效果不错。2. Matlab的基本操作1) M
10、atlab的安装关键是选择合适的工具箱和相应的帮助文件。2) 帮助文件(helpdesk)两种:(1)pdf格式:系统详细介绍了Matlab的基本结构,各个命令的使用。工具包的相关技术、命令,非常详实,简单、易学,共100多M的容量。 (2)html格式:主要是命令,各种基本命令及工具箱命令的搜索,及相关命令调用等。3) 演示(demo)详尽演示矩阵运算、图形显示、工具箱的使用等。4) 退出:exit 或quit命令3. Matlab的基本语句结构Matlab实际上可以认为是一种解释性语言,用户可以在Matlab工作环境下键入一个命令,也可以由它定义的语言编写应用程序,这样Matlab软件对此
11、命令或程序中各条命令进行翻译,然后在Matlab环境下对它进行计算,最后返回结果。1) 基本的赋值语句变量名列表=表达式如:A=1,2,3;4,5,6;7,8,0(列于旁边,以后要用)l 等号右边的表达式可以用分号结束,也可以用逗号或换行号结束。用分号结束表示左边的变量结果将不在屏幕显示出来,否则左边返回矩阵的内容全部显示出来。l Matlab区分大小写,Abc,ABC,abc表示不同的矩阵名,但实际编程时应尽量避免这样的命名方式。l 在矩阵A中,同一行中的内容用逗号分隔,而采用分号来表示换行。按这种格式输入后,矩阵A的内容将按照下面的格式显示出来:A=1,2,3;4,5,6;7,8,0123
12、A= 456780如果在上面赋值的式子末尾加一个分号,则矩阵的内容就不在屏幕上显示了。所以用户可以通过是否在语句末加分号的方式来决定运算的结果是否显示出来,这样就可以使得不必要的中间结果部分不被显示出来。一般情况下,用于同行中分隔的逗号是可以由空格来代替的。其实,Matlab的矩阵输入格式并不是很严格,矩阵A还可以由下面的两种方式来输入:A=1 2 3;4 5 6;A=1 2 3;4,5,7 8 0; 6;7 8,0;()为续行号。在一个语句相当长时,可以采用续行号将一条语句分割成几行表示。2) Matlab的保留字符串(1) 判断0元素用的误差限eps,其默认值为eps=2.220410-1
13、6(2) pi表示圆周率(3) Inf表示无穷大。Matlab允许的最大数据为1.79769310308;一个数据大于此数则认为是Inf。1/0产生Inf。即使在Matlab中保留了若干字符串,它们还可以重新进行赋值。如果用户想将判0的误差限扩大10倍,则可以采用eps=10eps命令来进行修正。4. 矩阵的基本运算矩阵A有n行m列,称A矩阵为nm矩阵。1) 矩阵加减法运算:C=A+B 和C=AB。l 若A、B的维数相同,则可以执行加减法,得到矩阵C;l 若A、B的维数不匹配,则Matlab将自动给出错误信息,提示两个矩阵的维数不匹配。2) 矩阵的转置:AT123 1 4 7实矩阵转置A=45
14、6AT=2 5 8 780 3 6 05+i2i 1 5i6i复矩阵转置A= 6i 4 9i A*=2I 4 1 9i在Matlab下,矩阵A的转置(包括复矩阵的转置)均可以简单地由A求出。3) 矩阵乘法12 55 19 21A= 34 B=78 则C=AB=43 47在这里并不需要指定A、B的维数。如果A、B的维数相容,则可以准确无误地获得矩阵C。如果二者维数不相容,则给出错误信息,通知用户这两个矩阵是不可乘的。4) 矩阵的点乘1232 3 4A=456B= 5 6 7 780 8 9 0 36 4218若C=AB,则C= 81 9651 54 6984 2 612若C=A.B,则C= 20
15、 3042 56 72 0可知,前者是普通矩阵乘积,后者是两个矩阵对应元素之间的乘积。5) 矩阵的除法Matlab定义了矩阵的除法运算,其意义相当于矩阵的求逆运算。如:Ax=B式中A和B为相容维数的矩阵,则x亦为矩阵,则x=A1BA1可由函数inv(A)直接求出,即x=inv(A)B,也可简单地写成x=A/B。6) 单个矩阵元素的赋值与运算Matlab允许用户对一个矩阵地单个元素进行赋值和操作。 1 2 3如:A(2,3)=100则A变成 4 5100 7 8 0 表示将矩阵A的第二行第三列的元素赋为100。若给出的行数或列数大于原来矩阵的范围,则Matlab将自动扩展原来的矩阵,并将扩展后未
16、赋值的元素置为0。 -1 2 3 0 0如:A(4,5)=8则A变成 4 5100 0 0 7 8 0 0 0 0 0 0 0 8Matlab还允许对子矩阵进行定义和处理。A(:,j)表示A矩阵的第j列元素;A(i,:)表示A矩阵的第i列全部元素。A(:,1)=1,4,7A(2,:)=4,5,6下节将讲l Matlab的控制语句(循环,条件);l Matlab的绘图功能;l 神经网络工具箱的函数列表。先复习上节内容:l Matlab简介;l Matlab基本操作:helpdesk,demo,quit,help;l Matlab基本语句:赋值语句;l Matlab的基本运算:加、减、乘、点乘、除
17、、转置、单个矩阵元素的运算。5. Matlab的控制语句与其它高级语言一样,Matlab也提供了条件转移语句、循环语句等一些常用的控制语句,从而使得Matlab语言的编程显得十分灵活。1) Matlab的循环语句结构Matlab中可以使用两种循环语句:for语句和while语句。这两种的基本格式和C语言中的循环语句相似。(1) for语句的基本格式for循环变量i=表达式S1:表达式S3:表达式S2循环语句组end表达式S1为循环变量的循环起始值,表达式S2为循环终止值判断,表达式S3为步长。在C语言中,循环体的内容是以大括号括起来的,而在Matlab语言中,循环体的内容是以循环语句和end语
18、句括起来的,所以在使用Matlab时应注意这一点。for循环体的程序框图:例1:求mysum=0for i=1:1:100mysum=mysumi;end在Matlab编程中,如果表达式S3的值为1,则可以省略。上句可以简化为for i=1:100,对于上一例子,Matlab有更好的编程方法:i=1:100mysum=sum(i);利用Matlab的内部函数,速度快很多。(2) while语句的结构while (条件式) 循环语句组endwhile语句的框图:对于上例,如果改用while循环,可写为:sum=0;i=1;while (i100) sum=sumi, i=i1;end当然,Mat
19、lab提供的for,while允许多层嵌套,而且它们之间也可以相互嵌套,这和C语言是一致的。2) Matlab的条件转移语句结构(1) 基本格式:if(条件式)条件块语句组end结构框图:当给出的条件成立时,则执行该条件块结构中的语句内容,执行完之后,继续向下执行;若条件不成立,则跳出条件块而直接向下执行。例2:求出满足10000的最小m。 mysum=0; form=1:10000 if (mysum10000)break; end mysum=mysumm; end这里使用了break命令,其作用就是中止上一级的for语句循环过程。(2) 绝对转移由于Matlab没有提供绝对转移的指令,所
20、以这样的功能可通过if和while的组合来完成。见例3。例3:如果用户想对一个问题进行回答,而这个问题要求用户键入y或n两个字符之一。否则就认为输入的字符有误,要求用户重新输入,直至输入y或n为止。程序:ikey=0;/首先赋给中间变量ikey一个初值0 while(ikey=0)/循环条件为ikey=0S1=input ( Is the answer correct? y/n?, S);if (S1= y|S1= n)ikey=1;end end在这一程序段中使用了带有 S选项的input()函数,其意义是要求用户输入一个字符串。如果不使用附加变量ikey,上面的程序段可修改成: while
21、(1) S1=input( Is the answer correct?y/n?, S); if (S1= y|S1= n)break;end end在例3中,if条件式内判断两个表达式是否相等时使用的是=符号,而不是=号,这和C语言的写法一致。(3) 复杂的条件结构if(条件式)条件块语句组1else条件语句组2endif(条件式1)条件块语句组1elseif (条件式2)条件语句组2end第一节课到此。6. Matlab的编程基础1) Matlab允许的文件类型(1) Matlab编写的程序分为M函数和M文件,其后缀名均为.m。M文件可直接执行,M函数必须由其它语句调用。M函数由funct
22、ion语句引导,有输入、输出变量列表。(2) Matlab允许用户调用可执行文件.exe。其调用方式是在下键入“!”,再接可执行文件的文件名。用C或Fortran写出程序,生成可执行文件,可用上面的方式直接调用。这种方式直观,但速度慢,不是特别规范。(3) Matlab通过Mex功能可以实现对C或Fortran语言编写的程序的调用。利用Matlab指定的格式书写Matlab与Fortran或C的接口程序,然后用它给出的连接程序进行连接,最后获得一个后缀为MEX的可执行文件。通过Matlab运行、调用MEX文件即可。但这会使程序的可读性大大降低,所以不是特别必要,最好不使用MEX功能。2) Ma
23、tlab变量的管理Size (A)得到A的维数,包括行数和列数,此时A是矩阵;Length(A)得到A的长度,此时A是向量;Who查看当前工作空间有哪些变量名;Whos了解这些变量的具体细节,包括名称(name),大小(size),元素数(element),字节数(bytes),等。Clear删除变量;Save 文件名变量列表其它选项 :将工作空间的变量保存到文件中。 assii:ASCII码格式Load 文件名:将save命令存储起来的数据再从文件调入工作空间。7. Matlab的绘图功能Matlab提供了非常强大的绘图功能,由于时间所限,不具体介绍,只列出主要的绘图函数。1) 建立和控制图
24、形窗口figure建立新的图形窗口clf清除当前图形close关闭图形2) 基本X-Y图形plot线性图形title图形标题xlabelX轴标记ylableY轴标记text文本注释grid网格线hold保持当前图形subplot在一个图形窗口画多个坐标图。例:subplot(2,3,2);plot(X)表示在2行3列的大图形中的第2号图中画X的形状。8. 神经网络工具箱常用函数列表1) 重要的感知器神经网络函数:初始化:initp训练:trainp仿真:simup学习规则:learnp2) 线性神经网络函数:初始化:initlin设计:solvelin仿真:simulin离线训练:trainw
25、h在线自适应训练:adaptwh学习规则:learnwh3) BP网络函数:Initff:初始化不超过3层的前向网络;Simuff:仿真不超过3层的前向网络;Trainbp,trainbpx,trainlm:训练BP(Trainbp:最慢;trainbpx:次之;trainlm:速度最快,但需要更多的存储空间。)Learnbp: 学习规则4) 自组织网络初始化:initsm仿真:simuc训练:trainc:利用竞争规则训练trainsm:利用Kohonen规则训练5) 反馈网络(Hopfield网络)仿真:simuhop设计:solvehopsolvehop设计Hopfield网络solve
26、lin设计线性网络rands产生对称随机数learnbp反向传播学习规则learnhHebb学习规则learnp感知层学习规则learnwhWidrowHoff学习规则initlin线性层初始化initp感知层初始化initsm自组织映射初始化plotsm绘制自组织映射图trainbp利用反向传播训练前向网络trainp利用感知规则训练感知层trainwh利用WidrowHoff规则训练线性层trainsm利用Kohonen规则训练自组织映射9. Matlab编程举例练习1:当矩阵的次数很高时,求解矩阵的逆矩阵一般很困难。分块矩阵求逆法:A= A11 A12A21 A22上面的矩阵是一个分块矩
27、阵,这时B=A1= B11 B12B21 B22其中,B22=(A22A21A111A12)-1, B12=A111A12B22 B21=B22A21A111, B11=A111B12A21A111。根据上述算法,计算: A=2142 1 4 30 13 0 1 2342 3 4的逆矩阵, 428 6 3 12 60 2 9 0 3 468 6 9 12分块维数n1取3。 允许用inv()求A111答案:A= input( Enter matrix A= ); n,m=size(A); n1=input( Enter the size of the partition n1= ); if (n
28、1 n) disp( n should be smaller than intzstr(n) elseif (n1=n),B=inv(A) else A11=A(1:n1,1:n1); A12=A(1:n1,n11,n); A21=A(n11:n,1:n1); A22=A(n11:n,n11:n); iA11=inv(A11); B22=inv(A22A21iA11A12); B12=iA11A12B22; B21=B22A21iA11;B11=iA11B12A21iA11; B=B11B12;B21B22 end讲评:答案B= 0.06430.1714-0.02140.02140.0571-
29、0.0071-0.3 0 0.3 -0.1 0 0.10.1929-0.0857-0.06430.0643-0.0286-0.0214-0.0429-0.11430.01430.02140.0571-0.00710.2000 0 -0.2 -0.1 0 0.1-0.12860.05710.04290.0643-0.0286-0.0214问题:1 Matlab语句的结尾宜多使用;以避免出现不必要的中间结果。2 有信件,无内容;3 应将文档改为*.m格式,便于检验;4 输入矩阵有误;5 将m文件写成m函数;6 所有的m文档均以附件形式发送;7 Matlab的参考书:最好是Matlab自带的pdf文档,其次是西电出的一套Matlab书籍。