第 02讲
Matlab与神经网络工具箱电信系 邹江
2.1 Matlab简介
Matlab的首创者 Cleve Moler博士在数值分析,特别是在是指线性代数的领域中很有影响。
Matlab( Matrix Laboratory,即矩阵实验室)
Matlab于 1984年推出了正式版本。后来 Moler组建了一个名为 MathWorks的软件开发公司
( http://www.Mathworks.com) 专门扩展并改进 Matlab。
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 5.3以上版本提供了 C/C++的接口,通过另外一个工具 MatCom,能用 Visual C++ 调用
Matlab编写的程序,从而大大减少 C++ 程序的编写难度。此工具我已经用过,效果不错。
2,2 Matlab的基本操作
2.2.1 Matlab的安装关键是选择合适的工具箱和相应的帮助文件。
2.2.2帮助文件( helpdesk)
两种:( 1) pdf格式
( 2) html格式
2.2.3演示( demo)
2.2.4退出,exit 或 quit命令
2.3 Matlab的基本语句结构
2.3.1 基本的赋值语句变量名列表 =表达式如,A= [1,2,3; 4,5,6; 7,8,0]
等号右边的表达式可以用分号结束,也可以用逗号或换行号结束。
Matlab区分大小写,Abc,ABC,abc表示不同的矩阵名 。
在矩阵 A中,同一行中的内容用逗号分隔,而采用分号来表示换行。
一般情况下,用于同行中分隔的逗号是可以由空格来代替的。
2.3.2 Matlab的保留字符串
判断 0元素用的误差限 eps,其默认值为
eps=2.2204× 10-16
pi表示圆周率
Inf表示无穷大。 Matlab允许的最大数据为
1.797693× 10308;一个数据大于此数则认为是
Inf。 1/0产生 Inf。
即使在 Matlab中保留了若干字符串,它们还可以重新进行赋值。如果用户想将判 0的误差限扩大 10倍,则可以采用 eps=10× eps命令来进行修正。
2.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.× B
2.4.5 矩阵的除法
Matlab定义了矩阵的除法运算,其意义相当于矩阵的求逆运算。
如,Ax=B,x=inv( A)× B,也可简单地写成
x=A/B。
2.4.6 单个矩阵元素的赋值与运算
Matlab允许用户对一个矩阵地单个元素进行赋值和操作。
Matlab还允许对子矩阵进行定义和处理。
A(,,j) 表示 A矩阵的第 j列元素;
A( i,,) 表示 A矩阵的第 i列全部元素 。
A(,,1) =[1,4,7]
A( 2,,) =[4,5,6]
2.5 Matlab的控制语句
2.5.1 Matlab的循环语句结构
for语句和 while语句
for语句的基本格式
for 循环变量 i=表达式 S1,表达式 S3,表达式 S2
循环语句组
end
在 C语言中,循环体的内容是以大括号 {}括起来的,而在
Matlab语言中,循环体的内容是以循环语句和 end语句括起来的,所以在使用 Matlab时应注意这一点。
求取S 1 的值=> i
i +S 3 => i
循环体语句求取S 2 的值
i 在S 1,S 2 之间是否结束循环
for循环体的程序框图
while语句的结构
while ( 条件式 )
循环语句组
end
while语句的框图条件式成立?
执行循环体内容是否循环结束
2.5.2 Matlab的条件转移语句结构
基本格式:
if( 条件式 )
条件块语句组
end
条件式成立?
执行循环体内容是结构框图
绝对转移由于 Matlab没有提供绝对转移的指令,所以这样的功能可通过 if和 while的组合来完成。见例 3。
复杂的条件结构
if( 条件式)
条件块语句组 1
else
条件语句组 2
end
条件语句1 语句2
是 否
if( 条件式 1)
条件块语句组 1
elseif ( 条件式 2)
条件块语句组 2
………
end
条件1
条件2
条件n
语句n语句1 语句2 语句n+1
是是
2.6 Matlab的编程基础
2.6.1 Matlab允许的文件类型
Matlab编写的程序分为 M函数和 M文件,其后缀名均为,m。
Matlab允许用户调用可执行文件,exe。 其调用方式是在 >>下键入,!,,再接可执行文件的文件名。
Matlab通过 Mex功能可以实现对 C或 Fortran语言编写的程序的调用。
2.6.2 Matlab变量的管理
Size( A) 得到 A的维数,包括行数和列数,此时 A是矩阵;
Length( A) 得到 A的长度,此时 A是向量;
Who 查看当前工作空间有哪些变量名;
Whos 了解这些变量的具体细节,包括名称 ( name),大小 ( size),
元素数 ( element),字节数 ( bytes) 等
Clear 删除变量;
Save 文件名 变量列表 其它选项,将工作空间的变量保存到文件中 。
- assii,ASCII码格式
Load 文件名:将 save命令存储起来的数据再从文件调入工作空间 。
2.7 Matlab的绘图功能
2.7.1 建立和控制图形窗口
figure 建立新的图形窗口
clf 清除当前图形
close 关闭图形
2.7.2 基本 X-Y图形
plot 线性图形
title 图形标题
xlabel X轴标记
ylable Y轴标记
text 文本注释
grid 网格线
hold 保持当前图形
subplot 在一个图形窗口画多个坐标图。
例,subplot( 2,3,2); plot( X) 表示在 2行 3
列的大图形中的第 2号图中画 X的形状。
2.8神经网络工具箱常用函数列表
2.8.1重要的感知器神经网络函数初始化,initp
训练,trainp
仿真,simup
学习规则,learnp
2.8.2线性神经网络函数初始化,initlin
设计,solvelin
仿真,simulin
离线训练,trainwh
在线自适应训练,adaptwh
学习规则,learnwh
2.8.3 BP网络函数
Initff,初始化不超过 3层的前向网络;
Simuff,仿真不超过 3层的前向网络;
Trainbp,trainbpx,trainlm:
训练 BP( Trainbp,最慢; trainbpx,次之;
trainlm,速度最快,但需要更多的存储空间 。 )
Learnbp,学习规则
2.8.4自组织网络初始化,initsm
仿真,simuc
训练,trainc,利用竞争规则训练
trainsm,利用 Kohonen规则训练
2.8.5反馈网络( Hopfield网络)
仿真,simuhop
设计,solvehop
2.9 Matlab编程举例作业,2002年 5月 8日分块矩阵求逆法,A= A11 A12
A21 A22
上面的矩阵是一个分块矩阵,这时
B=A- 1= B11 B12
B21 B22
其中,B22=( A22- A21A11- 1A12) -1,B12=- A11- 1A12B22
B21=- B22A21A11- 1,B11=A11- 1- B12A21A11- 1。
根据上述算法,计算:
A= 2 1 4 - 2 - 1 - 4
3 0 - 1 - 3 0 1
2 3 4 - 2 - 3 - 4
4 2 8 6 3 12
6 0 - 2 9 0 - 3
4 6 8 6 9 12
的逆矩阵。(分块维数 n1取 3)
【允许用 inv() 求 A11- 1】