第02讲Matlab与神经网络工具箱Word文件下载.docx
- 文档编号:18183199
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:16
- 大小:87.29KB
第02讲Matlab与神经网络工具箱Word文件下载.docx
《第02讲Matlab与神经网络工具箱Word文件下载.docx》由会员分享,可在线阅读,更多相关《第02讲Matlab与神经网络工具箱Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
2.本课程的研究内容
人工神经网络是一门新兴的交叉学科。
不同领域的学者对此有着不同的理解,不同的研究内容并且采取不同的研究方法。
对于从事电路与系统、信号处理、通信等领域的研究人员,侧重于利用人工神经网络来解决各项特定的智能处理任务,诸如:
识别、分类、联想、优化、推理以及发现规律等。
本课程的研究内容仅限于此。
3.本课程的研究途径
由于人工神经网络的研究正处于迅速发展阶段,在研究思路、教学方法、处理对象以及结构和硬件构成等方面存在着种种差异很大的学说和流派,相应的文献与资料的数量迅速增加。
因此,要将这一领域的主要研究内容和方法扼要、完整地整理出来必然有很大地困难。
按照本课程地需要,主要介绍以下三种重要地研究途径。
第一种是按照物理模型构成地神经网络,其中包括采用非概率神经元模型地Hopfield神经网络。
第二种是以自适应信号处理理论为基础发展起来地,其中最著名地就是前向多层神经网络及其递推(BP)学习方法。
第三种是按照自组织原则构成地神经网络,其中有代表性的是自适应谐振理论(ART)神经网络和T·
Kohonen提出的自组织特征映射神经网络。
这三种途径各有其有缺点。
从算法的系统性和完整性看,第一、二种优于第三种。
而从模仿人的认知过程和智能处理功能看,后者又优于前者。
从立即导向一种实用系统而言,第二种相对困难较少。
4.神经网络的研究热点
1)在神经网络研究中采用模糊算法,构成模糊人工神经网络;
2)用混沌(Chaos)理论研究人工神经网络;
3)加强与其它有关学科的交叉,特别是心理学、神经生理学、生物化学与生物物理学、以及人工智能科学等等;
4)用小波理论研究神经网络,形成小波神经网络;
5)人工神经网络的可编程问题;
6)利用分子器件实现人工神经网络:
指硬件实现。
第二讲Matlab与神经网络工具箱
1.Matlab简介
具有Fortran和C高级计算机语言知识的读者可能已经注意到,如果用它们去进行程序设计,尤其当涉及矩阵运算或画图时,编程会很麻烦。
比如说,若想求解一个线性代数方程组AX=B=>
X=A-1B,用户得首先编写一个主程序,然后编写一个子程序去读入各个矩阵的元素,之后再编写一个子程序,求解相应的方程,最后输出结果。
一般说来,求解线性方程组这样一个简单的功能需要100多条源程序。
Matlab的首创者CleveMoler博士在数值分析,特别是在是指线性代数的领域中很有影响。
1980年前后,他在NewMexico大学讲授线性代数课程时,发现用其它高级语言编程极为不便,便构思并开发了Matlab(MatrixLaboratory,即矩阵实验室)。
在Matlab下,矩阵的运算变得异常的容易,后来的版本中又增添了图象处理及多媒体、因特网、数据库等功能。
Matlab出现以后一直在美国的NewMexico等大学作为教学辅助软件使用,并作为面向公众的免费软件广为流传。
Matlab于1984年推出了正式版本。
后来Moler组建了一个名为MathWorks的软件开发公司(http:
//www.M)专门扩展并改进Matlab。
该公司于1992年推出具有划时代意义的Matlab4.0版。
可以配合MicrosoftWindows一起使用。
1998年推出5.3版。
2000年11月6日推出最新版本Matlab6.0。
Matlab6.0有30个工具箱包,包括控制系统工具箱(ControlSystemToolbox),信号处理工具箱(SignalProcessingtoolbox),系统辨识工具箱(SystemIdentificationtoolbox),鲁棒控制工具箱(RobustControltoolbox),μ分析于综合工具箱(μ-analysisandsynthesistoolbox),定量反馈理论工具箱(QFTtoolbox),神经网络工具箱(NeuralNetworktoolbox),最优化工具箱(Optimisationtoolbox),数据库工具箱(Databasetoolbox),网络工具箱(MatlabWebServer)等。
现在的Matlab已经不仅仅是一个“矩阵实验室”了,它已经形成了一种具有广泛应用前景的全新的计算机高级语言。
严格的说,Matlab并不是一种计算机语言,因为用它编写出来的程序并不能脱离Matlab环境而执行,但从功能上说,Matlab已经完全具备了计算机语言的结构和性能,因此我们也习惯的称之为Matlab语言。
Matlab5.3以上版本提供了C/C++的接口,通过另外一个工具MatCom,能用VisualC++调用Matlab编写的程序,从而大大减少C++程序的编写难度。
此工具我已经用过,效果不错。
2.Matlab的基本操作
1)Matlab的安装
关键是选择合适的工具箱和相应的帮助文件。
2)帮助文件(helpdesk)
两种:
(1)pdf格式:
系统详细介绍了Matlab的基本结构,各个命令的使用。
工具包的相关技术、命令,非常详实,简单、易学,共100多M的容量。
(2)html格式:
主要是命令,各种基本命令及工具箱命令的搜索,及相关命令调用等。
3)演示(demo)
详尽演示矩阵运算、图形显示、工具箱的使用等。
4)退出:
exit或quit命令
3.Matlab的基本语句结构
Matlab实际上可以认为是一种解释性语言,用户可以在Matlab工作环境下键入一个命令,也可以由它定义的语言编写应用程序,这样Matlab软件对此命令或程序中各条命令进行翻译,然后在Matlab环境下对它进行计算,最后返回结果。
1)基本的赋值语句
变量名列表=表达式
如:
A=[1,2,3;
4,5,6;
7,8,0](列于旁边,以后要用)
●等号右边的表达式可以用分号结束,也可以用逗号或换行号结束。
用分号结束表示左边的变量结果将不在屏幕显示出来,否则左边返回矩阵的内容全部显示出来。
●Matlab区分大小写,Abc,ABC,abc表示不同的矩阵名,但实际编程时应尽量避免这样的命名方式。
●在矩阵A中,同一行中的内容用逗号分隔,而采用分号来表示换行。
按这种格式输入后,矩阵A的内容将按照下面的格式显示出来:
7,8,0]↘
123
A=456
780
如果在上面赋值的式子末尾加一个分号,则矩阵的内容就不在屏幕上显示了。
所以用户可以通过是否在语句末加分号的方式来决定运算的结果是否显示出来,这样就可以使得不必要的中间结果部分不被显示出来。
一般情况下,用于同行中分隔的逗号是可以由空格来代替的。
其实,Matlab的矩阵输入格式并不是很严格,矩阵A还可以由下面的两种方式来输入:
>
>
A=[123;
456;
A=[123;
4,5,…
780];
6;
78,0];
(…)为续行号。
在一个语句相当长时,可以采用续行号将一条语句分割成几行表示。
2)Matlab的保留字符串
(1)判断0元素用的误差限eps,其默认值为eps=2.2204×
10-16
(2)pi表示圆周率
(3)Inf表示无穷大。
Matlab允许的最大数据为1.797693×
10308;
一个数据大于此数则认为是Inf。
1/0产生Inf。
即使在Matlab中保留了若干字符串,它们还可以重新进行赋值。
如果用户想将判0的误差限扩大10倍,则可以采用eps=10×
eps命令来进行修正。
4.矩阵的基本运算
矩阵A有n行m列,称A矩阵为n×
m矩阵。
1)矩阵加减法运算:
C=A+B和C=A-B。
●若A、B的维数相同,则可以执行加减法,得到矩阵C;
●若A、B的维数不匹配,则Matlab将自动给出错误信息,提示两个矩阵的维数不匹配。
2)矩阵的转置:
AT
123147
实矩阵转置A=[456]AT=[258]
780360
5+i2-i15-i-6i
复矩阵转置A=[6i49-i]A*=[2+I4]
19+i
在Matlab下,矩阵A的转置(包括复矩阵的转置)均可以简单地由A’求出。
3)矩阵乘法
12551921
A=[34]B=[78]则C=A×
B=[4347]
在这里并不需要指定A、B的维数。
如果A、B的维数相容,则可以准确无误地获得矩阵C。
如果二者维数不相容,则给出错误信息,通知用户这两个矩阵是不可乘的。
4)矩阵的点乘
123234
A=[456]B=[567]
780890
364218
若C=A×
B,则C=[819651]
546984
2612
若C=A.×
B,则C=[203042]
56720
可知,前者是普通矩阵乘积,后者是两个矩阵对应元素之间的乘积。
5)矩阵的除法
Matlab定义了矩阵的除法运算,其意义相当于矩阵的求逆运算。
如:
Ax=B
式中A和B为相容维数的矩阵,则x亦为矩阵,
则x=A-1B
A-1可由函数inv(A)直接求出,即x=inv(A)×
B,也可简单地写成x=A/B。
6)单个矩阵元素的赋值与运算
Matlab允许用户对一个矩阵地单个元素进行赋值和操作。
123
A(2,3)=100则A变成[45100]
780
表示将矩阵A的第二行第三列的元素赋为100。
若给出的行数或列数大于原来矩阵的范围,则Matlab将自动扩展原来的矩阵,并将扩展后未赋值的元素置为0。
-12300
A(4,5)=8则A变成[4510000]
78000
00008
Matlab还允许对子矩阵进行定义和处理。
A(:
,j)表示A矩阵的第j列元素;
A(i,:
)表示A矩阵的第i列全部元素。
,1)=[1,4,7]
A(2,:
)=[4,5,6]
下节将讲
●Matlab的控制语句(循环,条件);
●Matlab的绘图功能;
●神经网络工具箱的函数列表。
先复习上节内容:
●Matlab简介;
●Matlab基本操作:
helpdesk,demo,quit,help;
●Matlab基本语句:
赋值语句;
●Matlab的基本运算:
加、减、乘、点乘、除、转置、单个矩阵元素的运算。
5.Matlab的控制语句
与其它高级语言一样,Matlab也提供了条件转移语句、循环语句等一些常用的控制语句,从而使得Matlab语言的编程显得十分灵活。
1)Matlab的循环语句结构
Matlab中可以使用两种循环语句:
for语句和while语句。
这两种的基本格式和C语言中的循环语句相似。
(1)for语句的基本格式
for循环变量i=表达式S1:
表达式S3:
表达式S2
循环语句组
end
表达式S1为循环变量的循环起始值,表达式S2为循环终止值判断,表达式S3为步长。
在C语言中,循环体的内容是以大括号{}括起来的,而在Matlab语言中,循环体的内容是以循环语句和end语句括起来的,所以在使用Matlab时应注意这一点。
for循环体的程序框图:
例1:
求
mysum=0
fori=1:
1:
100
mysum=mysum+i;
end
在Matlab编程中,如果表达式S3的值为1,则可以省略。
上句可以简化为fori=1:
100,对于上一例子,Matlab有更好的编程方法:
i=1:
mysum=sum(i);
利用Matlab的内部函数,速度快很多。
(2)while语句的结构
while(条件式)
while语句的框图:
对于上例,如果改用while循环,可写为:
sum=0;
i=1;
while(i≤100)
sum=sum+i,i=i+1;
end
当然,Matlab提供的for,while允许多层嵌套,而且它们之间也可以相互嵌套,这和C语言是一致的。
2)Matlab的条件转移语句结构
(1)基本格式:
if(条件式)
条件块语句组
结构框图:
当给出的条件成立时,则执行该条件块结构中的语句内容,执行完之后,继续向下执行;
若条件不成立,则跳出条件块而直接向下执行。
例2:
求出满足
10000的最小m。
mysum=0;
form=1:
10000
if(mysum>
10000)
break;
end
mysum=mysum+m;
end
这里使用了break命令,其作用就是中止上一级的for语句循环过程。
(2)绝对转移
由于Matlab没有提供绝对转移的指令,所以这样的功能可通过if和while的组合来完成。
见例3。
例3:
如果用户想对一个问题进行回答,而这个问题要求用户键入y或n两个字符之一。
否则就认为输入的字符有误,要求用户重新输入,直至输入y或n为止。
程序:
ikey=0;
//首先赋给中间变量ikey一个初值0
while(ikey==0)//循环条件为ikey==0
S1=input(‘Istheanswercorrect?
[y/n]?
’,‘S’);
if(S1=‘y’|S1=‘n’)ikey=1;
end
在这一程序段中使用了带有‘S’选项的input()函数,其意义是要求用户输入一个字符串。
如果不使用附加变量ikey,上面的程序段可修改成:
while
(1)
S1=input(‘Istheanswercorrect?
[y/n]?
if(S1==‘y’|S1==‘n’)break;
在例3中,if条件式内判断两个表达式是否相等时使用的是==符号,而不是=号,这和C语言的写法一致。
(3)复杂的条件结构
条件块语句组1
else
条件语句组2
if(条件式1)
elseif(条件式2)
…………
第一节课到此。
6.Matlab的编程基础
1)Matlab允许的文件类型
(1)Matlab编写的程序分为M函数和M文件,其后缀名均为.m。
M文件可直接执行,M函数必须由其它语句调用。
M函数由function语句引导,有输入、输出变量列表。
(2)Matlab允许用户调用可执行文件.exe。
其调用方式是在>
下键入“!
”,再接可执行文件的文件名。
用C或Fortran写出程序,生成可执行文件,可用上面的方式直接调用。
这种方式直观,但速度慢,不是特别规范。
(3)Matlab通过Mex功能可以实现对C或Fortran语言编写的程序的调用。
利用Matlab指定的格式书写Matlab与Fortran或C的接口程序,然后用它给出的连接程序进行连接,最后获得一个后缀为MEX的可执行文件。
通过Matlab运行、调用MEX文件即可。
但这会使程序的可读性大大降低,所以不是特别必要,最好不使用MEX功能。
2)Matlab变量的管理
Size(A)得到A的维数,包括行数和列数,此时A是矩阵;
Length(A)得到A的长度,此时A是向量;
Who查看当前工作空间有哪些变量名;
Whos了解这些变量的具体细节,包括名称(name),大小(size),元素数(element),字节数(bytes),等。
Clear删除变量;
Save文件名变量列表其它选项:
将工作空间的变量保存到文件中。
-assii:
ASCII码格式
Load文件名:
将save命令存储起来的数据再从文件调入工作空间。
7.Matlab的绘图功能
Matlab提供了非常强大的绘图功能,由于时间所限,不具体介绍,只列出主要的绘图函数。
1)建立和控制图形窗口
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
学习规则:
learnp
2)线性神经网络函数:
initlin
设计:
solvelin
simulin
离线训练:
trainwh
在线自适应训练:
adaptwh
learnwh
3)BP网络函数:
Initff:
初始化不超过3层的前向网络;
Simuff:
仿真不超过3层的前向网络;
Trainbp,trainbpx,trainlm:
训练BP(Trainbp:
最慢;
trainbpx:
次之;
trainlm:
速度最快,但需要更多的存储空间。
)
Learnbp:
学习规则
4)自组织网络
initsm
simuc
trainc:
利用竞争规则训练
trainsm:
利用Kohonen规则训练
5)反馈网络(Hopfield网络)
simuhop
solvehop
solvehop设计Hopfield网络
solvelin设计线性网络
rands产生对称随机数
learnbp反向传播学习规则
learnhHebb学习规则
learnp感知层学习规则
learnwhWidrow-Hoff学习规则
initlin线性层初始化
initp感知层初始化
initsm自组织映射初始化
plotsm绘制自组织映射图
trainbp利用反向传播训练前向网络
trainp利用感知规则训练感知层
trainwh利用Widrow-Hoff规则训练线性层
trainsm利用Kohonen规则训练自组织映射
9.Matlab编程举例
练习1:
当矩阵的次数很高时,求解矩阵的逆矩阵一般很困难。
分块矩阵求逆法:
A=A11A12
A21A22
上面的矩阵是一个分块矩阵,这时
B=A-1=B11B12
B21B22
其中,B22=(A22-A21A11-1A12)-1,B12=-A11-1A12B22
B21=-B22A21A11-1,B11=A11-1-B12A21A11-1。
根据上述算法,计算:
A=214-2-1-4
30-1-301
234-2-3-4的逆矩阵,
4286312
60-290-3
4686912
分块维数n1取3。
『允许用inv()求A11-1』
答案:
A=input(‘EntermatrixA=>
’);
[n,m]=size(A);
n1=input(‘Enterthesizeofthepartitionn1=>
if(n1>
n)
disp([‘nshouldbesmallerthan’intzstr(n)])
elseif(n1==n),B=inv(A)
elseA11=A(1:
n1,1:
n1);
A12=A(1:
n1,n1+1,n);
A21=A(n1+1:
n,1:
A22=A(n1+1:
n,n1+1:
n);
iA11=inv(A11);
B22=inv(A22-A21×
iA11×
A12);
B12=-iA11×
A12×
B22;
B21=-B22×
A21×
iA11;
B11=iA11-B12×
B=[B11B12;
B21B22]
讲评:
答案B=0.06430.1714-0.02140.02140.0571-0.0071
-0.300.3-0.100.1
0.1929-0.0857-0.06430.0643-0.0286-0.0214
-0.0429-0.11430.01430.02140.0571-0.0071
0.20000-0.2-0.100.1
-0.12860.05710.04290.0643-0.0286-0.0214
问题:
1.Matlab语句的结尾宜多使用;
以避免出现不必要的中间结果。
2.有信件,无内容;
3.应将文档改为*.m格式,便于检验;
4.输入矩阵有误;
5.将m文件写成m函数;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第02讲 Matlab与神经网络工具箱 02 Matlab 神经网络 工具箱