模式识别实验讲义.docx
- 文档编号:27886551
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:17
- 大小:77.16KB
模式识别实验讲义.docx
《模式识别实验讲义.docx》由会员分享,可在线阅读,更多相关《模式识别实验讲义.docx(17页珍藏版)》请在冰豆网上搜索。
模式识别实验讲义
模式识别实验讲义
唐志芳编
信息与通信学院
目录
MATLAB基础1
实验一感知器算法实验6
实验二模式聚类算法实验8
实验三图像识别实验11
MATLAB基础
1.矩阵定义
由m行n列构成的数组称为(m×n)阶矩阵。
用"[]"方括号定义矩阵,其中方括号内","逗号或""空格号分隔矩阵列数值,";"分号或"Enter"回车键分隔矩阵行数值。
例:
a=[a11a12a13;a21a22a23]或a=[a11,a12,a13;a21,a22,a23]定义了一个2*3阶矩阵a。
a=
a11a12a13
a21a22a23
aij可以为数值、变量、表达式或字符串,如为数值与变量得先赋值,表达式和变量可以以任何组合形式出现,字符串须每一行中的字母个数相等,调用时缺省状态按行顺序取字母,如a
(1)为第一行第一个字母。
下标引用:
单下标方式:
a
(1)=a11a(4)=a22(以列的方式排列a11a21a12a22a13a23)
双下标方式:
a(1,1)=a11a(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,文件名,‘图像文件格式’)
如:
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]。
6MATLAB的M文件
MATLAB中的M文件实际上就是一个由一些MATLAB所允许的语句组成的批处理文件。
它是一个ASCII码文本文件,所有文本编辑器都可对它进行编辑,但一般我们在MATLAB的集成环境中编辑修改并运行。
在MATLAB的命令主窗口中点击File->New->M-file,即可打开如图A-3所示的MATLAB编辑/调试窗口。
根据用户需要键入MATLAB各种命令语句,即可完成系统M文件的输入。
注意%后的内容为注释内容。
程序控制:
(1)for循环语句
格式如下:
fort=表达式1:
表达式2:
表达式3
语句体
end
其中,表达式1的循环的初值,表达式2的值为步长,表达式3的值为循环的终值。
如果表达式2省略,则默认步长为1。
例:
forn=1:
5
form=1:
n
r(n,m)=m*n
end
end
(2)while循环语句
格式如下:
while表达式
语句体
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)子函数
每个函数文件可以包含多个函数。
在函数文件的第一行定义的函数为主函数,当调用文件名时,调用主函数。
在函数文件中,除第一行定义的函数外,其余的函数称为子函数。
子函数只能被该文件里的其他函数和主函数调用。
functionoutput=fact(n)
%FACTCalculatefactorialofagivenpositiveinteger.
output=1;
fori=1:
n,
output=output*i;
end
(6)MATLAB中的运算符和特殊字符说明
符号
符号用途说明
+
加
-
减
.*
点乘 详细说明helparith
*
矩阵相乘
^
矩阵求幂
.^
点幂
\
左除详细说明helpslash
/
右除
.\
点左除
./
点右除
kron
张量积详细说明helpkron
,
作分隔用,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来
;
(a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果
(b)在创建矩阵的语句中指示一行元素的结束,例如m=[xyz;ijk]
:
(a)创建向量的表达式分隔符,如x=a:
b:
c
(b)a(:
j)表示j列的所有行元素;a(i,:
)表示i行的所有列元素;a(1:
3,4)表示第四列的第1行至第3行元素
()
圆括号
[]
创建数组、向量、矩阵或字符串(字母型)
{}
创建单元矩阵(cellarray)或结构(struct)
%
注释符,特别当编写自定义函数文件时,紧跟function后的注释语句,在你使用help函数名时会显示出来。
'
(a)定义字符串用
(b)向量或矩阵的共轭转置符
.'
一般转置符
...
表示MATLAB表达式继续到下一行,增强代码可读性
=
赋值符号
==
等于关系运算符
<,>
小于,大于关系运算符详细说明helprelop
&
逻辑与
|
逻辑或
~
逻辑非
xor
逻辑异或
MATLAB所定义的特殊变量及其意义
变量名
意义
help
在线帮助命令,如用helpplot调用命令函数plot的帮助说明。
who
列出所有定义过的变量名称
ans
最近的计算结果的变量名
eps
MATLAB定义的正的极小值=2.2204e-16
pi
π值3.14159265...
inf
∞值,无限大
NaN
非数
特殊矩阵生成函数
函数命令
说明
compan(a)
生成伴随矩阵,a须为向量,即行数为1或列数为1的矩阵。
magic(a)
生成a阶魔方阵,
pascal(a)
pascal(a,k)
生成a阶Pascal矩阵(向右上的斜列方向为对应的二项式(x+y)i项系数)
设置k=1时,按行方向由上到下,由左到右顺序为(x-y)i 项系数
设置k=2时,按列方向由下到上,由右到左顺序为(x-y)i 项系数
hadamard(a)
生成哈达玛矩阵,其中a,a/12或a/20须为2的整数次幂。
H2=[11;1-1] H2n=[HnHn;Hn-Hn](Hn为n阶hadamard矩阵)
hilb(a)
生成a阶希尔伯特矩阵,其中元素aij为1/(i+j-1)。
invhilb(a)
生成a阶希尔伯特矩阵的逆矩阵。
实验一感知器算法实验
一、实验目的
掌握感知器算法聚类原理。
二、实验原理
感知器算法:
(1)已知两个训练模式集共N个模式,它们分别属于
和
类,权向量初始值为
;
(2)在用全部训练模式集进行第一轮迭代中,第
次训练步骤为:
如
且
且分类器对第
个模式
做错误分类,应校正权向量,使
(C为一校正常数)
如
且
且分类器对第
个模式
做错误分类,应校正权向量,使
如不合以上情况,表明该模式样本在第
部中分类正确,权向量不变,即
(3)重复第2部,一直到某轮训练中所有的模式都有:
三、使用仪器、材料
计算机
四、实验步骤
1.实验步骤
利用MATLAB编程实现感知器分类算法,并对实验一中图1实验数据进行分类(左下角8点属于第一类,右上角点属于第二类),求出判别函数,画出判别界面。
1)20个模式样本点,分别属于
和
类,取权向量初始值为
=[000]’,校正系数C=1;并对
类样本取增广向量后乘(-1);
2)在用全部训练模式集进行第一轮迭代中,第
次训练步骤为:
如
,则分类器对
做错误分类,应校正权向量,使W(k+1)=W(k)+Xk;否则权向量不变,即W(k+1)=W(k);
(3)重复第2步,直到某轮训练中所有的模式都有:
WT(k)*Xk>0为止,算法收敛,记录数据。
2.实验程序示例
%感知器算法
%20个分类点集合
x=[001;101;011;111;211;121;221;321;-6-6-1;-7-6-1;-8-6-1;-6-7-1;-7-7-1;-8-7-1;-9-7-1;-7-8-1;-8-8-1;-9-8-1;-8-9-1;-9-9-1];
x=x';
sx=size(x);%=(2,20)
w=[000]';
f=1;
k=0;
whilef==1
k=k+1
f=0;
fori=1:
sx
(2)
ifw'*x(:
i)<=0
i
w=w+x(:
i)
f=1;
%elseh(i)=w'*x(:
i);
end
end
end
五、实验过程原始记录
六、实验结果及分析
实验二模式聚类算法实验
一、实验目的
掌握K-均值模式聚类原理。
二、实验原理
K-均值聚类法是先行选择K个样本点作为初始聚类中心,再按照最小距离原则使各个样本点向各个中心聚集,从而得到初始分类。
然后判断初始分类是否合理(即为判断聚类前后聚类中心是否改变),如果不合理(即为聚类中心改变),就修改分类。
以此反复进行修改聚类的迭代运算,知道合理为止。
K-均值聚类法步骤:
第一:
选K个初始聚类中心:
Z1
(1),Z2
(1),……,Zk
(1);
第二:
逐个将需要分类的模式样本{xi,i=1,2,3,……,N}按最小距离原则分配给K个聚类中心中的某一个;
第三:
计算各个聚类中心的新的向量值:
j=1,2,……,K
Nj为第j个聚类域Sj所包含样本个数;
第四:
如果
,j=1,2,……,K,则回到第二步,将模式样本逐个重新分类,重复迭代计算。
如果
,j=1,2,……,K,算法收敛,计算完毕。
三、使用仪器、材料
计算机
四、实验步骤
1.利用MATLAB编程实现K-均值聚类算法,并对图1中实验数据进行分类。
1)取K=2,选择两个初始聚类中心Z1=[00],Z2=[10];
2)逐个计算各个需要分类的模式样本{xi,i=1,2,3,……,N}到Z1、Z2的距离,按最小距离原则分配给Z1或Z2;
3)计算Z1、Z2新的向量值:
j=1,2,Nj为第j个聚类域Sj所包含样本个数;
4)如果
,j=1,2,则回到第2步,将模式样本逐个重新分类,重复迭代计算。
如果
,j=1,2,算法收敛,计算完毕。
2.实验程序示例
%K-均值模式聚类程序
closeall;
clear;
clc;
%分类点集合
x=[00;10;01;11;21;12;22;32;66;76;88;67;77;87;97;78;88;98;89;99];
x=x';
sx=size(x);
%初始化两个聚类中心
z1=[00]';
z2=[10]';
%开始分类
while1
s1=[];s2=[];
fori=1:
sx
(2)
%逐个将需要分类的模式样本{xi,i=1,2,3,……,N}按最小距离原则分配
给K个聚类中心中的某一个;
if(x(1,i)-z1(1,1))^2+(x(2,i)-z1(2,1))^2<
(x(1,i)-z2(1,1))^2+(x(2,i)-z2(2,1))^2
s1=[s1x(:
i)];
elses2=[s2x(:
i)];
end
end
%计算各个聚类中心的新的向量值
sz1=size(s1);
z1n=(sum(s1')/sz1
(2))';
sz2=size(s2);
z2n=(sum(s2')/sz2
(2))';
%如果聚类中心不改变,算法结束,退出
ifz1==z1n
break;
end
%如果聚类中心改变,给聚类中心赋新值,再次聚类
z1=z1n;
z2=z2n;
end
fprintf('中心点1');
z1n
fprintf('集合1');
s1
fprintf('中心点2');
z2n
fprintf('集合2');
s2
五、实验过程原始记录
六、实验结果及分析
实验三图像识别实验
1.实验目的
综合掌握模式识别的原理,及了解识别过程设计方法。
2.实验内容
(b)
(a)
(d)
(c)
图2
图2中(a)、(b)为字符A的两种形式,(c)、(d)为字符B的两种形式。
利用MATLAB编程,提取图2实验图像特征,设计分类函数,对图像进行识别。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 实验 讲义
