1、3.4 基于基于BP算法的多层前馈网络模型算法的多层前馈网络模型n三层三层BP网络网络 o1 ok ol W1 Wk Wl y1 y2 yj ym V1 Vm x1 x2 xi xn-1 xn输入层输入层隐层隐层输出层输出层数学表达数学表达n模型的数学表达模型的数学表达输入向量:输入向量:X=(x1,x2,xi,xn)T隐层输出向量:隐层输出向量:Y=(y1,y2,yj,ym)T输出层输出向量:输出层输出向量:O=(o1,o2,ok,ol)T期望输出向量:期望输出向量:d=(d1,d2,dk,dl)T输入层到隐层之间的权值矩阵:输入层到隐层之间的权值矩阵:V=(V1,V2,Vj,Vm)隐层到输
2、出层之间的权值矩阵:隐层到输出层之间的权值矩阵:W=(W1,W2,Wk,Wl)各个变量之间如何建立联系,来描述整个网络各个变量之间如何建立联系,来描述整个网络?神经网络的学习神经网络的学习n学习的过程:学习的过程:w神经网络在外界输入样本的刺激下不断改变网络的连神经网络在外界输入样本的刺激下不断改变网络的连接权值乃至拓扑结构,以使网络的输出不断地接近期接权值乃至拓扑结构,以使网络的输出不断地接近期望的输出。望的输出。n学习的本质:学习的本质:w对可变权值的动态调整对可变权值的动态调整n学习规则:学习规则:w权值调整规则,即在学习过程中网络中各神经元的连权值调整规则,即在学习过程中网络中各神经元
3、的连接权变化所依据的一定的调整规则。接权变化所依据的一定的调整规则。nBPBP算法是一种学习规则算法是一种学习规则)()()()(ttd,t,trjjjXXWWBP算法的基本思想算法的基本思想n学习的类型:有导师学习学习的类型:有导师学习n核心思想:核心思想:w将输出误差将输出误差以某种形式以某种形式通过隐层向输入层逐层反传通过隐层向输入层逐层反传n学习的过程:学习的过程:w信号的正向传播信号的正向传播 误差的反向传播误差的反向传播将误差分摊给各层的所有将误差分摊给各层的所有单元各层单元的误单元各层单元的误差信号差信号修正各单元权修正各单元权值值BP算法的学习过程算法的学习过程n正向传播:正向
4、传播:w输入样本输入层各隐层输出层输入样本输入层各隐层输出层n判断是否转入反向传播阶段:判断是否转入反向传播阶段:w若输出层的实际输出与期望的输出(教师信号)不符若输出层的实际输出与期望的输出(教师信号)不符n误差反传误差反传w误差以某种形式在各层表示修正各层单元的权值误差以某种形式在各层表示修正各层单元的权值n网络输出的误差减少到可接受的程度网络输出的误差减少到可接受的程度进行到预先设定的学习次数为止进行到预先设定的学习次数为止建立权值变化量与误差之间的关系建立权值变化量与误差之间的关系n输出层与隐层之间的连接权值调整输出层与隐层之间的连接权值调整n隐层和输入层之间的连接权值调整隐层和输入层
5、之间的连接权值调整jkjkwEwj=0,1,2,m;k=1,2,l (3.4.9a)ijijvEvi=0,1,2,n;j=1,2,m (3.4.9b)式中负号表示梯度下降,常数式中负号表示梯度下降,常数(0,1)表示比例系数,反映了表示比例系数,反映了训练速率。可以看出训练速率。可以看出BP算法属于算法属于学习规则类,这类算法常被学习规则类,这类算法常被称为误差的梯度下降称为误差的梯度下降(Gradient Descent)算法。算法。初始化 V、W、Emin,、q=1,p=1,E=0输入样本,计算各层输出:m21jfyTjj,.,),(XVl21kfoTjk,.,),(YW计算误差:P1pl
6、1k2kkod21E)(计算各层误差信号:l21koo1odkkkk,.,)(okm21jyy1wjjl1kjkokyj,.,)(调整各层权值:m10jl21kjyokjkwjkw,.,.,n10 xm21jxvviyjijij,.,.,Y p 增 1,q 增 1 pP?N N E=0,p=1 EEmin Y 结束BP算法的程序实现算法的程序实现(1)初始化;初始化;PppPRMEEE11(4)计算各层误差信号;计算各层误差信号;(5)调整各层权值;调整各层权值;(6)检查是否对所有样本完成一次检查是否对所有样本完成一次 轮训;轮训;(7)检查网络总误差是否达到精检查网络总误差是否达到精 度要
7、求。度要求。(2)输入训练样本对输入训练样本对X Xp、d dp计算各层输出;计算各层输出;(3)计算网络输出误差;计算网络输出误差;BP算法的程序实现算法的程序实现初始化 V、W计数器 q=1,p=1输入第一对样本计算各层输出计算误差:P1pl1k2kkod21E)(Y p 增 1 pP?N用 E 计算各层误差信号 调整各层权值 q 增 1 N ErmsEmin E=0,p=1 Y 结束 然后根据总误差计算各层的然后根据总误差计算各层的误差信号并调整权值。误差信号并调整权值。P1pl1k2pkpkod21E)(总 另一种方法是在所有样本输另一种方法是在所有样本输入之后,计算网络的总误差:入之
8、后,计算网络的总误差:多层前馈网的主要能力多层前馈网的主要能力(1)非线性映射能力非线性映射能力 多层前馈网能学习和存贮大量输入多层前馈网能学习和存贮大量输入-输出模式映射输出模式映射关系,而无需事先了解描述这种映射关系的数学方程。关系,而无需事先了解描述这种映射关系的数学方程。只要能提供足够多的样本模式对供只要能提供足够多的样本模式对供BP网络进行学习训网络进行学习训练,它便能完成由练,它便能完成由n维输入空间到维输入空间到m维输出空间的非线维输出空间的非线性映射。性映射。多层前馈网的主要能力多层前馈网的主要能力(2)泛化能力泛化能力 当向网络输入训练时未曾见过的非样本数据时,当向网络输入训
9、练时未曾见过的非样本数据时,网络也能完成由输入空间向输出空间的正确映射。这网络也能完成由输入空间向输出空间的正确映射。这种能力称为多层前馈网的泛化能力。种能力称为多层前馈网的泛化能力。(3)容错能力容错能力 输入样本中带有较大的误差甚至个别错误对网络的输入样本中带有较大的误差甚至个别错误对网络的输入输出规律影响很小。输入输出规律影响很小。误差曲面与误差曲面与BP算法的局限性算法的局限性 误差函数的可调整参误差函数的可调整参数的个数数的个数nw等于各层权值等于各层权值数加上阈值数,即:数加上阈值数,即:)1()1(mlnmnw 误差误差E是是nw+1维空间中维空间中一个形状极为复杂的曲面,一个形
10、状极为复杂的曲面,该曲面上的每个点的该曲面上的每个点的“高度高度”对应于一个误差值,每个点对应于一个误差值,每个点的坐标向量对应着的坐标向量对应着nw个权值,个权值,因此称这样的空间为误差的因此称这样的空间为误差的权空间。权空间。误差曲面的分布误差曲面的分布BP算法的局限性算法的局限性n曲面的分布特点曲面的分布特点-算法的局限性算法的局限性n(1)存在平坦区域存在平坦区域-误差下降缓慢,影响收敛速度误差下降缓慢,影响收敛速度n(2)存在多个极小点存在多个极小点-易陷入局部最小点易陷入局部最小点 曲面分布特点曲面分布特点1:存在平坦区域:存在平坦区域n平坦误差的梯度变化小平坦误差的梯度变化小 接
11、近于零接近于零okjokikywE存在平坦区域的原因分析存在平坦区域的原因分析n 接近于零的情况分析接近于零的情况分析n造成平坦区的原因:造成平坦区的原因:各节点的净输入过大各节点的净输入过大 f(x)1.0 0.5x0)1()(kkkkokoood30mjjjkywok对应着误差的某个谷点对应着误差的某个谷点 平坦区平坦区 曲面分布特点曲面分布特点2:存在多个极小点:存在多个极小点 n误差梯度为零误差梯度为零n多数极小点都是局部极小,即使是全局极小往多数极小点都是局部极小,即使是全局极小往往也不是唯一的。往也不是唯一的。单权值单权值双权值双权值曲面分布特点曲面分布特点2:存在多个极小点:存在
12、多个极小点nBP算法算法w以误差梯度下降为权值调整原则以误差梯度下降为权值调整原则n误差曲面的这一特点误差曲面的这一特点w使之无法辨别极小点的性质使之无法辨别极小点的性质n导致的结果:导致的结果:w因而训练经常陷入某个局部极小点而不能自拔,从而因而训练经常陷入某个局部极小点而不能自拔,从而使训练无法收敛于给定误差。使训练无法收敛于给定误差。标准标准BP算法的改进引言算法的改进引言n误差曲面的形状固有的误差曲面的形状固有的n算法的作用是什么?算法的作用是什么?w调整权值,找到最优点调整权值,找到最优点n那么如何更好地调整权值?那么如何更好地调整权值?w利用算法使得权值在更新的过程中,利用算法使得
13、权值在更新的过程中,走走合适的路径,合适的路径,比如跳出平坦区来提高收敛速度,跳出局部最小点等等比如跳出平坦区来提高收敛速度,跳出局部最小点等等n如何操作?如何操作?w需要在进入平坦区或局部最小点时进行一些判断,通过需要在进入平坦区或局部最小点时进行一些判断,通过改变某些参数来使得权值的调整更为合理。改变某些参数来使得权值的调整更为合理。标准的标准的BP算法内在的缺陷:算法内在的缺陷:易形成局部极小而得不到全局最优;易形成局部极小而得不到全局最优;训练次数多使得学习效率低,收敛速度慢;训练次数多使得学习效率低,收敛速度慢;隐节点的选取缺乏理论指导;隐节点的选取缺乏理论指导;训练时学习新样本有遗
14、忘旧样本的趋势。训练时学习新样本有遗忘旧样本的趋势。针对上述问题,国内外已提出不少有效的改进针对上述问题,国内外已提出不少有效的改进算法,下面仅介绍其中算法,下面仅介绍其中3种较常用的方法。种较常用的方法。3.5 标准标准BP算法的改进算法的改进n改进改进1:增加动量项:增加动量项n改进改进2:自适应调节学习率:自适应调节学习率n改进改进3:引入陡度因子引入陡度因子改进改进1:增加动量项:增加动量项n提出的原因:提出的原因:w标准标准BP算法只按算法只按t时刻误差的梯度降方向调整,时刻误差的梯度降方向调整,而没有考虑而没有考虑t时刻以前的梯度方向时刻以前的梯度方向w从而常使训练过程发生振荡,收
15、敛缓从而常使训练过程发生振荡,收敛缓慢。慢。n方法:方法:)1()(ttWXW为动量系数,一般有为动量系数,一般有(0 0,1 1)n实质:实质:w从前一次权值调整量中取出一部分迭加到本次权值调整从前一次权值调整量中取出一部分迭加到本次权值调整量中量中n作用:作用:w动量项反映了以前积累的调整经验,对于动量项反映了以前积累的调整经验,对于t时刻的调整时刻的调整起阻尼作用。起阻尼作用。w当误差曲面出现骤然起伏时,可减小振荡趋势,提高训当误差曲面出现骤然起伏时,可减小振荡趋势,提高训练速度。练速度。改进改进1:增加动量项:增加动量项改进改进2:自适应调节学习率:自适应调节学习率n提出的原因:提出的
16、原因:w标准标准BP算法中,学习率算法中,学习率也称为步长,确定一也称为步长,确定一个从始至终都合适的最佳学习率很难。个从始至终都合适的最佳学习率很难。w平坦区域内,平坦区域内,太小会使训练次数增加;太小会使训练次数增加;w在误差变化剧烈的区域,在误差变化剧烈的区域,太大会因调整量过大太大会因调整量过大而跨过较窄的而跨过较窄的“坑凹坑凹”处,使训练出现振荡,处,使训练出现振荡,反而使迭代次数增加。反而使迭代次数增加。改进改进2:自适应调节学习率:自适应调节学习率n基本思想:基本思想:w自适应改变学习率,使其根据环境变化增大或减小。自适应改变学习率,使其根据环境变化增大或减小。n基本方法:基本方
17、法:w设一初始学习率,若经过一批次权值调整后使总误差设一初始学习率,若经过一批次权值调整后使总误差,则本次调整无效,且,则本次调整无效,且=(1)。改进改进3:引入陡度因子引入陡度因子n提出的原因:提出的原因:w误差曲面上存在着平坦区域。误差曲面上存在着平坦区域。w权值调整进入平坦区的原因是神经元输出进入了转移函权值调整进入平坦区的原因是神经元输出进入了转移函数的饱和区。数的饱和区。n基本思想:基本思想:w如果在调整进入平坦区后,设法压缩神经元的净输入,如果在调整进入平坦区后,设法压缩神经元的净输入,使其输出退出转移函数的不饱和区,就可以改变误差函使其输出退出转移函数的不饱和区,就可以改变误差
18、函数的形状,从而使调整脱离平坦区。数的形状,从而使调整脱离平坦区。o 1 =1 1 21 net 0改进改进3:引入陡度因子引入陡度因子n基本方法:基本方法:w在原转移函数中引入一个陡度因子在原转移函数中引入一个陡度因子w当发现当发现E接近零而接近零而d-o仍较大时,可判断已进入仍较大时,可判断已进入平坦区,此时令平坦区,此时令1;w当退出平坦区后,再令当退出平坦区后,再令=1。/11neteo改进改进3:引入陡度因子引入陡度因子 作用分析:作用分析:w1:net坐标压缩了坐标压缩了倍,神经倍,神经元的转移函数曲线的敏感区段元的转移函数曲线的敏感区段变长,从而可使绝对值较大的变长,从而可使绝对
19、值较大的net退出饱和值。退出饱和值。w=1:转移函数恢复原状,对绝转移函数恢复原状,对绝对值较小的对值较小的net具有较高的灵敏具有较高的灵敏度。度。w应用结果表明该方法对于提高应用结果表明该方法对于提高BP算法的收敛速度十分有效。算法的收敛速度十分有效。o 1 =1 1 21 net 0n基于基于BP算法的多层前馈网络模型算法的多层前馈网络模型nBP算法的实现算法的实现w基本思想基本思想w推导过程推导过程w程序实现程序实现nBP学习算法的功能学习算法的功能nBP学习算法的局限性学习算法的局限性nBP学习算法的改进学习算法的改进3.6 BP网络设计基础网络设计基础n一一、训练样本集的准备、训
20、练样本集的准备w1.输入输出量的选择输入输出量的选择w2.输入量的提取与表示输入量的提取与表示w3.输出量的表示输出量的表示n二、输入输出数据的归一化二、输入输出数据的归一化n三、网络训练与测试三、网络训练与测试1 输出量的选择输出量的选择n 输出量输出量:代表系统要实现的功能目标代表系统要实现的功能目标 系统的性能指标系统的性能指标 分类问题的类别归属分类问题的类别归属 非线性函数的函数值非线性函数的函数值一一 、训练样本集的准备、训练样本集的准备输入量的选择输入量的选择n输入量选择的两条基本原则输入量选择的两条基本原则w必须选择那些对输出影响大且能够检测或提取的必须选择那些对输出影响大且能
21、够检测或提取的变量变量w各输入变量之间互不相关或相关性很小各输入变量之间互不相关或相关性很小一一 、训练样本集的准备、训练样本集的准备输入输出量的性质输入输出量的性质n从输入、输出量的性质来看,可分为两类:一类从输入、输出量的性质来看,可分为两类:一类是数值变量,一类是语言变量。是数值变量,一类是语言变量。w数值变量数值变量的值是数值确定的连续量或离散量。的值是数值确定的连续量或离散量。w语言变量语言变量是用自然语言表示的概念,其是用自然语言表示的概念,其“语言值语言值”是是用自然语言表示的事物的各种属性。用自然语言表示的事物的各种属性。当选用语言变量作为网络的输入或输出变量时,需当选用语言变
22、量作为网络的输入或输出变量时,需将其语言值转换为离散的数值量。将其语言值转换为离散的数值量。一一 、训练样本集的准备、训练样本集的准备2.2.输入量的提取与表示输入量的提取与表示XC=(111100111)T XI=(111100111)T XT=(111100111)T(1)文字符号输入文字符号输入一一 、训练样本集的准备、训练样本集的准备x(t)xn x1 t 0 1 2 3 4 5 n(2)曲线输入)曲线输入TpnpipppxxxxX),.,.,(21p=1,2,P一一 、训练样本集的准备、训练样本集的准备(3)函数自变量输入函数自变量输入w一般有几个输入量就设几个分量,一般有几个输入量
23、就设几个分量,1个输入分量对应个输入分量对应1个输入层节点。个输入层节点。(4)图象输入图象输入w在这类应用中,一般先根据识别的具体目的从图象中在这类应用中,一般先根据识别的具体目的从图象中提取一些有用的特征参数,再根据这些参数对输入的提取一些有用的特征参数,再根据这些参数对输入的贡献进行筛选,这种特征提取属于图象处理的范畴。贡献进行筛选,这种特征提取属于图象处理的范畴。一一 、训练样本集的准备、训练样本集的准备3.3.输出量的表示输出量的表示(1)“n中取中取1”表示法表示法 “n中取中取1”是令输出向量的分量数等于类别数,输入是令输出向量的分量数等于类别数,输入样本被判为哪一类,对应的输出
24、分量取样本被判为哪一类,对应的输出分量取1,其余,其余 n-1 个分个分量全取量全取0。例如,用。例如,用 0001、0010、0100 和和 1000可分别表可分别表示优、良、中、差示优、良、中、差4个类别。个类别。(2)“n-1”表示法表示法 如果用如果用n-1个全为个全为0的输出向量表示某个类别,则可的输出向量表示某个类别,则可以节省一个输出节点。例如,用以节省一个输出节点。例如,用000、001、010和和100也也可表示优、良、中、差可表示优、良、中、差4个类别。个类别。(3)数值表示法数值表示法 对于渐进式的分类,可以将语言值转化为二值之间对于渐进式的分类,可以将语言值转化为二值之
25、间的数值表示。数值的选择要注意保持由小到大的渐进关的数值表示。数值的选择要注意保持由小到大的渐进关系,并要根据实际意义拉开距离。系,并要根据实际意义拉开距离。一一 、训练样本集的准备、训练样本集的准备二、输入输出数据的归一化二、输入输出数据的归一化 归一化也称为或标准化,是指通过变换处理将归一化也称为或标准化,是指通过变换处理将网络的输入、输出数据限制在网络的输入、输出数据限制在0,1或或-1,1区间区间内。内。进行归一化的主要原因:进行归一化的主要原因:归一化的方法:归一化的方法:进行归一化的主要原因:进行归一化的主要原因:n网络的各个输入数据常常具有不同的网络的各个输入数据常常具有不同的物
26、理意义物理意义和不同的量纲和不同的量纲,归一化给各输入分量以同等重要,归一化给各输入分量以同等重要的地位;的地位;nBP网的神经元均采用网的神经元均采用Sigmoid转移函数,变换后转移函数,变换后可防止因净输入的绝对值过大而使神经元输出可防止因净输入的绝对值过大而使神经元输出饱饱和和,继而使权值调整进入误差曲面的平坦区;,继而使权值调整进入误差曲面的平坦区;nSigmoid转移函数的输出在转移函数的输出在01或或-11之间。之间。教师教师信号信号如不进行归一化处理,势必使数值大的输出如不进行归一化处理,势必使数值大的输出分量分量绝对误差绝对误差大,数值小的输出分量绝对误差小。大,数值小的输出
27、分量绝对误差小。二、输入输出数据的归一化二、输入输出数据的归一化归一化的方法:归一化的方法:将输入输出数据变换为将输入输出数据变换为0,1区间的值常用以下变换式区间的值常用以下变换式minmaxminxxxxxii其中,其中,xI代表输入或输出数据,代表输入或输出数据,xmin代表数据变化的代表数据变化的最小值,最小值,xman代表数据的最大值。代表数据的最大值。将输入输出数据变换为将输入输出数据变换为-1,1区间的值常用以下变换式区间的值常用以下变换式2minmaxxxxmid)(minmax21xxxxxmidii其中,其中,xmid代表数据变化范围中间值。代表数据变化范围中间值。二、输入
28、输出数据的归一化二、输入输出数据的归一化三、网络训练与测试三、网络训练与测试 网络的性能好坏主要看其是否具有很好的泛化能网络的性能好坏主要看其是否具有很好的泛化能力,对泛化能力的测试不能用训练集的数据进行,而要力,对泛化能力的测试不能用训练集的数据进行,而要用训练集以外的测试数据来进行检验。用训练集以外的测试数据来进行检验。x2 *x1三、网络训练与测试三、网络训练与测试 在隐节点数一定的情况下,为获得好的泛化能力,在隐节点数一定的情况下,为获得好的泛化能力,存在着一个最佳训练次数。存在着一个最佳训练次数。均 方 误差 测 试 数 据 训 练 数 据 训 练 次 数三、网络训练与测试三、网络训
29、练与测试三、网络训练与测试三、网络训练与测试 MATLAB是一个功能十分强大的工程计算及数值分析软件是一个功能十分强大的工程计算及数值分析软件u在在20世纪世纪70年代末期,线性代数领域颇有名望的年代末期,线性代数领域颇有名望的Cleve Moler博士利用博士利用Fortran语言、基于特征值计算的软件包语言、基于特征值计算的软件包EISPACK和线性代数软件包和线性代数软件包LINPACK,开发了集命令、,开发了集命令、解释、科学计算于一身的交互式软件解释、科学计算于一身的交互式软件MATLAB.u1983年,工程师年,工程师John Little接触到接触到Matlab并深受其影响,并深
30、受其影响,于是与于是与Cleve Moler、Stev Bangert合作用合作用C开发了第二代开发了第二代Matlab专业版,增加了数据可视化功能。专业版,增加了数据可视化功能。u1984年年MathWorks公司成立,公司成立,MATLAB被推向市场,经被推向市场,经过多年发展,在数值性软件市场占据了主导地位,已经发过多年发展,在数值性软件市场占据了主导地位,已经发展成为多学科多种工作平台的功能强大的工程计算及数值展成为多学科多种工作平台的功能强大的工程计算及数值分析软件软件,被誉为分析软件软件,被誉为“巨人肩上的工具巨人肩上的工具”MATLAB基础基础2.1 MATLAB概述概述 uMA
31、TLAB 即即 Matrix Laboratory(矩阵实验室),主要用于(矩阵实验室),主要用于矩矩阵运算阵运算,具有丰富的矩阵运算函数,使之在求解诸如信号处理、,具有丰富的矩阵运算函数,使之在求解诸如信号处理、系统识别、自动控制、非线性系统、模糊控制、优化技术等、神系统识别、自动控制、非线性系统、模糊控制、优化技术等、神经网络、小波分析等领域的问题时,显得简捷、高效、方便。经网络、小波分析等领域的问题时,显得简捷、高效、方便。u有大量事先定义的数学函数,并且有很强的用户自定义函数有大量事先定义的数学函数,并且有很强的用户自定义函数的能力;的能力;u有强大的绘图功能,可方便地输出复杂的二维、
32、三维图图形;有强大的绘图功能,可方便地输出复杂的二维、三维图图形;u能与其它语言编写的程序结合,具有输入输出格式化数据的能能与其它语言编写的程序结合,具有输入输出格式化数据的能力;力;u有在多个应用领域解决难题的工具箱;有在多个应用领域解决难题的工具箱;uSimulink是一个基于图形界面的动态系统建模与仿真工具;是一个基于图形界面的动态系统建模与仿真工具;u具有符号运算能力。具有符号运算能力。变量浏览器变量浏览器历史命令历史命令记录窗记录窗MATLAB 工作窗工作窗 当前目路当前目路sumlink快捷按钮快捷按钮学习学习 MATLABn什么是 MATLAB?nMATLAB 能干什么?n掌握
33、MATLAB n应用实例什么是什么是 MATLAB?1.MATLAB 代表代表MATrix LABoratoryn它的首创者是美国新墨西哥大学计算机系的系主任它的首创者是美国新墨西哥大学计算机系的系主任Cleve MolerCleve Moler博士,他在教授线性代数课程发现其博士,他在教授线性代数课程发现其他语言很不方便,篇构思开发了他语言很不方便,篇构思开发了MATLABMATLAB。最初采用。最初采用FORTRANFORTRAN语言编写,语言编写,2020世纪世纪8080年代后出现了年代后出现了MATLABMATLAB的第二版,全部采用的第二版,全部采用C C语言编写语言编写.n1984
34、1984年年MolerMoler博士和一批数学家及软件专家创建了博士和一批数学家及软件专家创建了MathWorksMathWorks公司,专门开发公司,专门开发MATLABMATLAB。n19931993年出现了微机版,到年出现了微机版,到20032003年是年是6.56.5版版2.一种演草纸式的科学计算语言一种演草纸式的科学计算语言3.MATLAB 是一高性能的技术计算语言是一高性能的技术计算语言.w强大的数值计算和工程运算功能强大的数值计算和工程运算功能w符号计算功能符号计算功能w强大的科学数据可视化能力强大的科学数据可视化能力 w多种工具箱多种工具箱 MATLAB 能干什么?能干什么?M
35、ATLAB可以进行:可以进行:n数学计算、算法开发、数据采集数学计算、算法开发、数据采集n建模、仿真、原型建模、仿真、原型 n数据分析、开发和可视化数据分析、开发和可视化n科学和工程图形应用程序的开发,包括图形用户界科学和工程图形应用程序的开发,包括图形用户界面的创建。面的创建。MATLAB广泛应用于:广泛应用于:n数值计算、图形处理、符号运算、数学建模、系统数值计算、图形处理、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。辨识、小波分析、实时控制、动态仿真等领域。nMATLAB开发环境:进行应用研究开发的交互式平台开发环境:进行应用研究开发的交互式平台nMATLAB 数学
36、与运算函数库:用于科学计算的函数数学与运算函数库:用于科学计算的函数nMATLAB 语言:进行应用开发的编程工具语言:进行应用开发的编程工具n图形化开发:二维、三维图形开发的工具图形化开发:二维、三维图形开发的工具n应用程序接口应用程序接口(API):用于与其他预言混编:用于与其他预言混编n面向专门领域的工具箱:小波工具箱、神经网络工具面向专门领域的工具箱:小波工具箱、神经网络工具箱、信号处理工具箱、图像处理工具箱、模糊逻辑工箱、信号处理工具箱、图像处理工具箱、模糊逻辑工具箱、优化工具箱、鲁棒控制工具箱等几十个不同应具箱、优化工具箱、鲁棒控制工具箱等几十个不同应用的工具箱。用的工具箱。MATL
37、AB的构成的构成开发环境开发环境 包括:命令窗口、图形窗口、编辑窗口、帮助窗口包括:命令窗口、图形窗口、编辑窗口、帮助窗口The MATLAB Language MATLAB 语言的特点语言的特点wMatlab的基本数据单元是不需指定维数的矩阵。的基本数据单元是不需指定维数的矩阵。wMatlab的所有计算都是通过双精度进行的,在的所有计算都是通过双精度进行的,在内存中的数都是双精度的。内存中的数都是双精度的。wdouble 是一个双精度浮点数,每个存储的双精是一个双精度浮点数,每个存储的双精度数用度数用64位。位。wchar用于存储字符,每个存储的字符用用于存储字符,每个存储的字符用16位。位
38、。程序程序M文件与文件与m函数函数图形显示图形显示流程控制流程控制其它输出其它输出函数函数语句语句变量变量各种运算符各种运算符MATLABMATLAB的程序构成:的程序构成:常变量及其命名规则常变量及其命名规则n变量名可以有数字、字母、下划线构成;变量名可以有数字、字母、下划线构成;n变量的首字符必须是字母;变量的首字符必须是字母;n区分变量名的大小写区分变量名的大小写n每个变量名最长只能包含每个变量名最长只能包含19个字符。个字符。Matlab中预定义变量中预定义变量nAns 分配最新计算表达式的值,这个表达式并没有分配最新计算表达式的值,这个表达式并没有给定一个名字给定一个名字nEps 返
39、回机器精度返回机器精度nRealmax 返回计算机能处理的最大浮点数返回计算机能处理的最大浮点数nRealmin 返回计算机能处理的最小的非零浮点数返回计算机能处理的最小的非零浮点数nPi ,3.14159265nInf 定义为定义为1/0。当出现被零除时,。当出现被零除时,Matlab就返回就返回inf,并不中断执行而继续计算并不中断执行而继续计算nNaN 定义为定义为“Not a Number”,这个非数值要么是,这个非数值要么是类型,要么是类型,要么是inf/inf向量的创建向量的创建n在在matlab的命令窗口键入以下字符的命令窗口键入以下字符n a=1 2 3 4 5 6 9 8 7
40、n a=n 1 2 3 4 5 6 9 8 7n 希望得到元素从希望得到元素从0到到20,步距为,步距为2的一个向量,的一个向量,只需键入以下命令即可只需键入以下命令即可n t=0:2:20n t=n 2 4 6 8 10 12 14 16 18 20 矩阵的创建矩阵的创建 输入矩阵时每一行元素有分号或者回车键输入矩阵时每一行元素有分号或者回车键分隔。例如分隔。例如:n n B=1 2 3 4;5 6 7 8;9 10 11 12n B=n 1 2 3 4n 5 6 7 8n 9 10 11 12各各种种运运算算符符Matlab语言最基本的赋值语句结构为:语言最基本的赋值语句结构为:变量名列表
41、变量名列表=表达式表达式注注1:整个赋值语句以;结束,则不在屏幕上返回结:整个赋值语句以;结束,则不在屏幕上返回结果,否则立即返回结果。果,否则立即返回结果。注注2:多个语句可在同一行,用逗号分开。:多个语句可在同一行,用逗号分开。注注3:表达是太长可以用续行符号:表达是太长可以用续行符号语句语句函数函数 nMatlab由包括许多标准函数,每个函数都由包括许多标准函数,每个函数都完成某一特定功能的代码组成。完成某一特定功能的代码组成。nMatlab也允许用户编写自己所需的函数,也允许用户编写自己所需的函数,其扩展名为其扩展名为.m,其中必须以关键字,其中必须以关键字function开头开头.流
42、程控制流程控制n循环语句循环语句 for,whilen条件转移条件转移 if end,if elseif else endn开关语句开关语句 switch casen注是语句注是语句%n中断语句中断语句 breakn暂停语句暂停语句 pausen回显语句回显语句 echo on/off1 1、for循环语句循环语句基本格式基本格式for for 循环变量起始值:步长:终止值循环变量起始值:步长:终止值 循环体循环体 endend步长缺省值为步长缺省值为1 1,可以在正实数或负实数范围,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终内任意指定。对于正数,循环变量的值大于终止值时
43、,循环结束;对于负数,循环变量的值止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。循环结构可以嵌套小于终止值时,循环结束。循环结构可以嵌套使用。使用。2、while循环语句循环语句基本格式基本格式while 表达式表达式 循环体循环体 end若表达式为真,则执行循环体的内容,执行后再判断若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继表达式是否为真,若不为真,则跳出循环体,向下继续执行。续执行。While循环和循环和for循环的区别在于,循环的区别在于,while循环结构的循环体被执循环结构的循环体被执行的次数不是确定的,而行的次数不
44、是确定的,而for结构中循环体的执行次数是确定的。结构中循环体的执行次数是确定的。3、if,else,elseif语句语句(1)if 逻辑表达式逻辑表达式 执行语句执行语句 end(2)if 逻辑表达式逻辑表达式 (3)if 逻辑表达式逻辑表达式1 执行语句执行语句1 执行语句执行语句1 else elseif 逻辑表达式逻辑表达式2 执行语句执行语句2 执行语句执行语句2 end end 4、switch语句语句 switch 表达式(可以是标量或字符串)表达式(可以是标量或字符串)case 值值1 语句语句1 case 值值2 语句语句2 .otherwise 语句语句3 end MATL
45、AB程序的基本组成结构程序的基本组成结构说明说明清除命令:清除清除命令:清除workspace中的变量和图形(中的变量和图形(clear,close)定义变量:包括全局变量的声明及参数值的设定定义变量:包括全局变量的声明及参数值的设定逐行执行命令:指逐行执行命令:指MATLAB提供的运算指令或工具箱提供的运算指令或工具箱 提供的专用命令提供的专用命令控制循环控制循环:包含包含for,if then,switch,while等语句等语句 逐行执行命令逐行执行命令 end绘图命令:将运算结果绘制出来绘图命令:将运算结果绘制出来n当然更复杂程序还需要调用子程序,或与当然更复杂程序还需要调用子程序,或
46、与simulink以及其他以及其他应用程序结合起来。应用程序结合起来。2、程序、程序M文件文件n以以.m格式进行存取,包含一连串的格式进行存取,包含一连串的MATLAB指令和必要的指令和必要的注解。需要在工作空间中创建并获取变量,也就是说处理的注解。需要在工作空间中创建并获取变量,也就是说处理的数据为命令窗口中的数据,没有输入参数,也不会返回参数。数据为命令窗口中的数据,没有输入参数,也不会返回参数。n程序运行时只需在工作空间中键入其名称即可。程序运行时只需在工作空间中键入其名称即可。MATLABMATLAB的程序类型的程序类型MATLAB的程序类型有三种,一种是在命令窗口下执行的的程序类型有
47、三种,一种是在命令窗口下执行的脚本脚本M文件;另外一种是可以存取的文件;另外一种是可以存取的M文件,也即程序文文件,也即程序文件;最后一种是函数(件;最后一种是函数(function)文件。)文件。1、脚本、脚本M文件文件在命令窗口中输入并执行,它所用的变量都要在工作空间在命令窗口中输入并执行,它所用的变量都要在工作空间中获取,不需要输入输出参数的调用,退出中获取,不需要输入输出参数的调用,退出MATLAB后就后就释放了。释放了。(1)函数定义行(关键字)函数定义行(关键字function)nfunctionout1,out2,.=filename(in1,in2,.)n输入和输出(返回)的参
48、数个数分别由输入和输出(返回)的参数个数分别由nargin和和nargout两个两个MATLAB保留的变量来给出。保留的变量来给出。(2)第一行帮助行,即)第一行帮助行,即H1行行n以(以(%)开头,作为)开头,作为lookfor指令搜索的行指令搜索的行(3)函数体说明及有关注解)函数体说明及有关注解n以(以(%)开头,用以说明函数的作用及有关内容)开头,用以说明函数的作用及有关内容(4)函数体语句)函数体语句n函数体内使用的除返回和输入变量这些在函数体内使用的除返回和输入变量这些在function语句中直接语句中直接引用的变量以外的所有变量都是局部变量,即在该函数返回之引用的变量以外的所有变
49、量都是局部变量,即在该函数返回之后,这些变量会自动在后,这些变量会自动在MATLAB的工作空间中清除掉。如果希的工作空间中清除掉。如果希望这些中间变量成为在整个程序中都起作用的变量,则可以将望这些中间变量成为在整个程序中都起作用的变量,则可以将它们设置为全局变量。它们设置为全局变量。3 3、函数文件、函数文件 与在命令窗口中输入命令一样,函数接受输入参数,然后与在命令窗口中输入命令一样,函数接受输入参数,然后执行并输出结果。用执行并输出结果。用helphelp命令可以显示它的注释说明。命令可以显示它的注释说明。GraphicsMATLAB提供了丰富的绘图功能提供了丰富的绘图功能help gra
50、ph2d可得到所有画二维图形的命令可得到所有画二维图形的命令help graph3d可得到所有画三维图形的命令可得到所有画三维图形的命令1 1、基本的绘图命令、基本的绘图命令plot(x1,y1,option1,x2,y2,option2,)x1,y1x1,y1给出的数据分别为给出的数据分别为x,yx,y轴坐标值,轴坐标值,option1option1为选为选项参数,以逐点连折线的方式绘制项参数,以逐点连折线的方式绘制1 1个二维图形;同个二维图形;同时类似地绘制第二个二维图形。时类似地绘制第二个二维图形。这是这是plotplot命令的完全格式,在实际应用中可以根据需命令的完全格式,在实际应用