第02讲Matlab与神经网络工具箱2.1Matlab简介matlab语言是由美国的CleverMoler博士于1980年开发的;设计者的初衷是为解决“线性代数”课程的矩阵运算问题,Matlab(MatrixLaboratory,即矩阵实验室);Matlab于1984年推出了正式版本;2000年11月6日推出最新版本Matlab6.0。2004年,MATLAB7.0版Matlab6.0有30个工具箱包,包括控制系统工具箱(ControlSystemToolbox)信号处理工具箱(SignalProcessingtoolbox)系统辨识工具箱(SystemIdentificationtoolbox)鲁棒控制工具箱(RobustControltoolbox)μ分析于综合工具箱(μ-analysisandsynthesistoolbox)定量反馈理论工具箱(QFTtoolbox)神经网络工具箱(NeuralNetworktoolbox)最优化工具箱(Optimisationtoolbox)数据库工具箱(Databasetoolbox)网络工具箱(MatlabWebServer)等。严格的说,Matlab并不是一种计算机语言,因为用它编写出来的程序并不能脱离Matlab环境而执行,但从功能上说,Matlab已经完全具备了计算机语言的结构和性能,因此我们也习惯的称之为Matlab语言。Matlab5.3以上版本提供了C/C++的接口,通过另外一个工具MatCom,能用VisualC++调用Matlab编写的程序,从而大大减少C++程序的编写难度。2.2Matlab的基本操作1Matlab的运行方式提供了两种运行方式,即命令行方式和M文件方式。2帮助两种:(1)命令行帮助help(2)联机帮助(工具条上的help选项)(3)演示帮助(help菜单中的Demos选项可以打开演示窗口)3退出:exit或quit命令桌面布局:5个窗口(图示、操作演示)–命令窗口(CommandWindow)–工作空间窗口(Workspace)–当前目录浏览器(CurrentDirectory)–命令历史窗口(CommandHistory)–启动平台(LaunchPad)2.3Matlab的基本语句结构2.3.1基本的赋值语句变量名列表=表达式如:A=[1,2,3;4,5,6;7,8,0]等号右边的表达式可以用分号结束,也可以用逗号或换行号结束。Matlab区分大小写,Abc,ABC,abc表示不同的矩阵名。在矩阵A中,同一行中的内容用逗号分隔,而采用分号来表示换行。一般情况下,用于同行中分隔的逗号是可以由空格来代替的。2.3.2Matlab的变量及特殊变量变量名的大小写是敏感的。变量的第一个字符必须为英文字母,而且不超过31个字符。变量名可以包含下连字符、数字,但不能为空格符、标点。用eps代替在一个数组中的零元素,eps近似为eps=2.2204×10-16pi表示圆周率Inf表示无穷大。Matlab允许的最大数据为1.797693×10308;一个数据大于此数则认为是Inf。1/0产生Inf。NaN—非数,它产生于0×,0/0,/等运算i,j—虚数单位ans—对于未赋值运算结果,自动赋给ans2.4矩阵的基本运算矩阵A有n行m列,称A矩阵为n×m矩阵。2.4.1矩阵加减法运算:C=A+B和C=A-B。2.4.2矩阵的转置:AT在Matlab下,矩阵A的转置(包括复矩阵的转置)均可以简单地由A’求出。2.4.3矩阵乘法C=A×B在这里并不需要指定A、B的维数。2.4.4矩阵的点乘两个矩阵对应元素之间的乘积。C=A.×B2.4.5矩阵的除法Matlab定义了矩阵的除法运算,其意义相当于矩阵的求逆运算。如:Ax=B,x=inv(A)×B,也可简单地写成x=A/B。例、用一个简单命令求解线性系统3x1+x2-x3=3.6x1+2x2+4x3=2.1-x1+4x2+5x3=-1.4A=[31-1;124;-145];b=[3.6;2.1;-1.4];x=A\bx=1.4818-0.46060.3848对于线性系统有Ax=b2.4.6单个矩阵元素的赋值与运算Matlab允许用户对一个矩阵的单个元素进行赋值和操作。Matlab还允许对子矩阵进行定义和处理。A(:,j)表示A矩阵的第j列元素;A(i,:)表示A矩阵的第i行全部元素。A(:,1)=[1,4,7]A(2,:)=[4,5,6]2.5部分常用运算符2.5.1算术运算符+加-减*乘(包括标量乘,矩阵乘,标量与矩阵乘)/除(包括标量除,矩阵除标量,数组除标量)^矩阵求幂(矩阵必须为方阵).*数组相乘./数组相除.^数组求幂注意:.*./表示两个同维数组中的对应元素做乘,除.^表示对数组的每个元素求幂2.5.2关系运算符小于=小于等于大于=大于等于==等于~=不等于运算法则:若关系式成立,结果为1;若关系式不成立,结果为0。2.5..3逻辑运算符&与|或~非运算法则:若逻辑真,结果为1;若逻辑假,结果为0。2.5.4其他常见符号=变量赋值%注释符‘共轭转置符:冒号运算符n:s:m产生n~m,步长为s的序列,s可以为正或负或者小数,默认值为1。2.6Matlab的控制语句2.6.1Matlab的循环语句结构for语句和while语句for语句的基本格式for计数器i=初始值:增量:终止值循环语句组end循环体的内容是以循环语句和end语句括起来的。while语句的结构while(条件式)循环语句组endwhile语句的框图条件式成立?执行循环体内容是否循环结束2.6.2Matlab的条件转移语句结构基本格式:if(条件式)条件块语句组end条件式成立?执行循环体内容是结构框图复杂的条件结构if(条件式)条件块语句组1else条件语句组2end条件语句1语句2是否if(条件式1)条件块语句组1elseif(条件式2)条件块语句组2………end条件1条件2条件n语句n语句1语句2语句n+1是是Switch语句Switch分支条件case条件1语句组1case条件2语句组2….otherwise语句组nend2.6.3Switch语句2.7Matlab的编程基础2.7.1Matlab允许的文件类型Matlab编写的程序分为M函数和M文件,其后缀名均为.m。Matlab允许用户调用可执行文件.exe。其调用方式是在下键入“!”,再接可执行文件的文件名。Matlab通过Mex功能可以实现对C或Fortran语言编写的程序的调用。2.7.2Matlab变量的管理Size(A)得到A的维数,包括行数和列数,此时A是矩阵;Length(A)得到A的长度,此时A是向量;Who查看当前工作空间有哪些变量名;Whos了解这些变量的具体细节,包括名称(name),大小(size),元素数(element),字节数(bytes)等Clear删除变量;Save文件名变量列表其它选项:将工作空间的变量保存到文件中。如savemymat.matx,y,z执行后的结果就是将当前工作空间中的变量x,y,z保存到mymat.mat文件中,Load文件名:将save命令存储起来的数据再从文件调入工作空间。2.8Matlab的绘图功能2.8.1建立和控制图形窗口figure建立新的图形窗口clf清除当前图形(当前的图形窗口)close关闭图形2.8.2基本绘图plot线性图形title图形标题xlabelX轴标记ylableY轴标记text文本注释grid网格线hold保持当前图形subplot在一个图形窗口画多个坐标图。•基本绘图指令1.绘制二维连续函数Matlab中最常用的绘图函数是plot,plot的命令格式有以下几种:(1)plot(y)当y为一向量时,以y的序号作为x轴,按向量y的值绘制曲线。(2)plot(x,y)x,y均为向量时,以x向量作为X轴,向量y作为Y轴绘制曲线。注意:x和y种元素的个数必须相同!2.绘制二维离散序列在Matlab用stem命令实现离散序列的绘制。stem命令的格式有以下几种:(1)stem(y)以x=1,2,3……为各点数据的x坐标,以y向量的各个对应元素为y坐标,在(X,Y)坐标面画一个空心小圆圈。(2)stem(x,y,’filled’)以x向量的各个元素为x坐标,以y向量的各个对应元素为y坐标,在(X,Y)坐标面画一个实心小圆圈,并连接一条线段到X轴。3.8编程举例例一:画出衰减震荡曲线及其包络线t的取值范围是程序如下:teyt3sin330tey]4,0[t=0:pi/50:4*pi;y0=exp(-t/3);y=exp(-t/3).*sin(3*t);plot(t,y,'-r',t,y0,':b',t,-y0,':b')程序运行结果如下:例二.用图形表示连续调制波形及其包络。程序如下:)9sin()sin(ttyt=(0:pi/100:pi)'%长度为101的时间采样列向量y1=sin(t)*[1,-1];%包络线函数值,是(101x2)的矩阵y2=sin(t).*sin(9*t);%长度为101的调制波列向量t3=pi*(0:9)/9y3=sin(t3).*sin(9*t3);plot(t,y1,'r:',t,y2,'b',t3,y3,'bo')axis([0,pi,-1,1])%控制轴的范围2.9神经网络工具箱常用函数列表2.9.1重要的感知器神经网络函数初始化:initp训练:trainp仿真:simup学习规则:learnp2.9.2线性神经网络函数初始化:initlin设计:solvelin仿真:simulin离线训练:trainwh在线自适应训练:adaptwh学习规则:learnwh2.9.3BP网络函数Initff:初始化不超过3层的前向网络;Simuff:仿真不超过3层的前向网络;Trainbp,trainbpx,trainlm:训练BP(Trainbp:最慢;trainbpx:次之;trainlm:速度最快,但需要更多的存储空间。)Learnbp:学习规则2.9.4自组织网络初始化:initsm仿真:simuc训练:trainc:利用竞争规则训练trainsm:利用Kohonen规则训练2.8.5反馈网络(Hopfield网络)仿真:simuhop设计:solvehop