模式识别实验讲义
目 录
MATLAB 基础 ...................................... 1 实验一 感知器算法实验 ............................ 6 实验二 模式聚类算法实验 .......................... 8 实验三 图像识别实验 ............ 错误!未定义书签。1
MATLAB 基础
1.矩阵定义
由m行n列构成的数组称为(m×n)阶矩阵。
用\方括号定义矩阵,其中方括号内\逗号或\空格号分隔矩阵列数值, \分号或\回车键分隔矩阵行数值。 例:a=[a11 a12 a13;a21 a22 a23]或a=[a11,a12,a13;a21,a22,a23]定义了一个2*3阶矩阵a。 a=
a11 a12 a13 a21 a22 a23
aij可以为数值、变量、表达式或字符串,如为数值与变量得先赋值,表达式和变量可以以任何组合形式出现,字符串须每一行中的字母个数相等 ,调用时缺省状态按行顺序取字母,如a(1)为第一行第一个字母。
下标引用:
单下标方式:a(1)= a11 a(4)= a22 (以列的方式排列a11 a21 a12 a22 a13
a23)
双下标方式:a(1,1)= a11 a(2,1)= a21
2.矩阵的加减运算
两矩阵相加减,是对应元素的加减,要求两矩阵具有相同的行数,相同的列数。 MATLAB表达式形式:C=A+B 和 C=A-B ,其中Cij=Aij±Bij。
3 向量乘积和转置
两矩阵A,B相乘,要求两个矩阵的相邻阶数相等,一般情况下不满足交换律。MATLAB表达式形式:C=A*B 其中第i行j列元素Cij为A的第i行的m个元素与B的第j列的n个对应元素的乘积之和。
矩阵的转置就是把矩阵的第I行就j列的元素放在第j行第i列的位置上。在MATLAB中,对于实矩阵的转置用单引号“’”表示:C=A’。
4 图像文件操作
imread()函数从图像文件中读入图像数据, 格式:A=imread(文件名,‘图像文件格式’) 如:A=imread(“lena.bmp”,’bmp’)
A 为无符号8位整数(unit8)。如果文件为灰度函数,则A为一个二维数组,如果文件是一个真彩色RGB图像,则A是一个三维数组(m×n×3)。
imwrite()函数将图像写入图像文件
格式:imwrite(A,文件名,‘图像文件格式’)
1
如:imwrite(A,“lenabak.bmp”,‘bmp’)
imwrite函数将变量A中图像按‘图像文件格式’指定的保存格式写入文件名指定的文件中。如果A是一个无符号8位整数表示的灰度图像或真彩色图像,imwrite直接将数组A中值写入文件。如果A为双精度浮点数,imwrite首先使用uint8(round(255*A))自动将数组中的值变换为无符号8位整数,即将[0,1]范围内的浮点数变换为[0,255]范围内8位整数,然后写入文件。
5 图像显示
imshow()函数用于图像显示 格式:imshow(I,n) imshow(I,[low,high])
格式1,imshow函数可使用n个灰度级显示灰度图像I。如果缺省n,则使用256级灰度。
格式2,imshow函数可将I显示为灰度图像,灰度级范围为[low,high]。
6 MATLAB的M文件
MATLAB中的M文件实际上就是一个由一些MATLAB所允许的语句组成的批处理文件。它是一个ASCII码文本文件,所有文本编辑器都可对它进行编辑,但一般我们在MATLAB的集成环境中编辑修改并运行。
在MATLAB的命令主窗口中点击File->New->M-file,即可打开如图A-3所示的MATLAB编辑/调试窗口。根据用户需要键入MATLAB各种命令语句,即可完成系统M文件的输入。注意%后的内容为注释内容。
程序控制:
(1) for 循环语句 格式如下:
for t=表达式1:表达式2:表达式3 语句体 end
其中,表达式1的循环的初值,表达式2的值为步长,表达式3的值为循环的终值。如果表达式2省略,则默认步长为1。 例: for n=1:5 for m=1:n
r(n,m)= m*n end end
(2)while 循环语句 格式如下: while 表达式 语句体
2
end
当表达式的值为真时,执行语句体;当表达式的值为假时,终止该循环。
(3)if 条件判断语句 格式如下: if 逻辑表达式1 语句体1
elseif逻辑表达式2 语句体2
elseif逻辑表达式3 语句体3 ?? else 语句体 end
(4)switch 语句 switch 表达式 case 值1 语句体1 case 值2 语句体2 ?? otherwise 语句体 end
(5)子函数
每个函数文件可以包含多个函数。在函数文件的第一行定义的函数为主函数,当调用文件名时,调用主函数。在函数文件中,除第一行定义的函数外,其余的函数称为子函数。子函数只能被该文件里的其他函数和主函数调用。 function output = fact(n)
% FACT Calculate factorial of a given positive integer. output = 1; for i = 1:n,
output = output*i; end
(6)MATLAB中的运算符和特殊字符说明 符号 + - .* * ^ 符号用途说明 加 减 点乘 详细说明help arith 矩阵相乘 矩阵求幂 3