第二讲 Matlab与神经网络工具箱 1. Matlab简介 具有Fortran和C高级计算机语言知识的读者可能已经注意到,如果用它们去进行程序设计,尤其当涉及矩阵运算或画图时,编程会很麻烦。比如说,若想求解一个线性代数方程组AX=B=>X=A-1B,用户得首先编写一个主程序,然后编写一个子程序去读入各个矩阵的元素,之后再编写一个子程序,求解相应的方程,最后输出结果。一般说来,求解线性方程组这样一个简单的功能需要100多条源程序。 Matlab的首创者Cleve Moler博士在数值分析,特别是在是指线性代数的领域中很有影响。1980年前后,他在New Mexico大学讲授线性代数课程时,发现用其它高级语言编程极为不便,便构思并开发了Matlab(Matrix Laboratory,即矩阵实验室)。在Matlab下,矩阵的运算变得异常的容易,后来的版本中又增添了图象处理及多媒体、因特网、数据库等功能。 Matlab出现以后一直在美国的New Mexico等大学作为教学辅助软件使用,并作为面向公众的免费软件广为流传。Matlab于1984年推出了正式版本。后来Moler组建了一个名为MathWorks的软件开发公司(http:// www. Mathworks.com)专门扩展并改进Matlab。该公司于1992年推出具有划时代意义的Matlab 4.0版。可以配合Microsoft Windows一起使用。1998年推出5.3版。2000年11月6日推出最新版本Matlab 6.0。 Matlab 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 toolbox),网络工具箱(Matlab WebServer)等。 现在的Matlab已经不仅仅是一个“矩阵实验室”了,它已经形成了一种具有广泛应用前景的全新的计算机高级语言。严格的说,Matlab并不是一种计算机语言,因为用它编写出来的程序并不能脱离Matlab环境而执行,但从功能上说,Matlab已经完全具备了计算机语言的结构和性能,因此我们也习惯的称之为Matlab语言。 Matlab 5.3以上版本提供了C/C++的接口,通过另外一个工具MatCom,能用Visual C++调用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,(列于旁边,以后要用) l 等号右边的表达式可以用分号结束,也可以用逗号或换行号结束。用分号结束表示左边的变量结果将不在屏幕显示出来,否则左边返回矩阵的内容全部显示出来。 l Matlab区分大小写,Abc,ABC,abc表示不同的矩阵名,但实际编程时应尽量避免这样的命名方式。 l 在矩阵A中,同一行中的内容用逗号分隔,而采用分号来表示换行。按这种格式输入后,矩阵A的内容将按照下面的格式显示出来: A=[1,2,3;4,5,6;7,8,↘ 1 2 3 A= 4 5 6 7 8 0 如果在上面赋值的式子末尾加一个分号,则矩阵的内容就不在屏幕上显示了。所以用户可以通过是否在语句末加分号的方式来决定运算的结果是否显示出来,这样就可以使得不必要的中间结果部分不被显示出来。 一般情况下,用于同行中分隔的逗号是可以由空格来代替的。其实,Matlab的矩阵输入格式并不是很严格,矩阵A还可以由下面的两种方式来输入: >>A=[1 2 3;4 5 6; >>A=[1 2 3;4,5,… 7 8 0]; 6;7 8,0]; (…)为续行号。在一个语句相当长时,可以采用续行号将一条语句分割成几行表示。 / W1 \8 `$ j3 W" H* Y& T
2 [ L( L. U# J+ X) Y9 }* w( z) v3 |2 O
+ K$ `2 B5 X8 G" a# [2 E, b+ D7 A) M+ i
& C2 {+ g! {7 z% r* u# f& U$ ] |