模式识别讲义

更新时间:2023-12-13 04:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

模式识别实验讲义

目 录

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

.^ \\ / .\\ ./ kron , ; 点幂 左除 详细说明help slash 右除 点左除 点右除 张量积 详细说明help kron 作分隔用,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来 (a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果 (b)在创建矩阵的语句中指示一行元素的结束,例如m=[x y z;i j k] : (a)创建向量的表达式分隔符,如x=a:b:c (b)a(:,j)表示j列的所有行元素;a(i,:)表示i行的所有列元素;a(1:3,4)表示第四列的第1行至第3行元素 () [] {} % ' .' ... = == <,> & | ~ xor 圆括号 创建数组、向量、矩阵或字符串(字母型) 创建单元矩阵(cell array)或结构(struct) 注释符,特别当编写自定义函数文件时,紧跟function后的注释语句,在你使用help函数名时会显示出来。 (a)一般转置符 表示MATLAB表达式继续到下一行,增强代码可读性 赋值符号 等于关系运算符 小于,大于关系运算符 详细说明help relop 逻辑与 逻辑或 逻辑非 逻辑异或 定义字符串用 (b)向量或矩阵的共轭转置符 MATLAB所定义的特殊变量及其意义 变量名 help who ans eps pi inf NaN 意义 在线帮助命令, 如用help plot调用命令函数plot的帮助说明。 列出所有定义过的变量名称 最近的计算结果的变量名 MATLAB定义的正的极小值=2.2204e-16 π值3.14159265... ∞值,无限大 非数

特殊矩阵生成函数 函数命令 compan(a) 说明 生成伴随矩阵,a须为向量,即行数为1或列数为1的矩阵。 4

magic(a) pascal(a) pascal(a,k) 生成a阶魔方阵, 生成a阶Pascal矩阵(向右上的斜列方向为对应的二项式(x+y)i 项系数) 设置k=1时,按行方向由上到下,由左到右顺序为(x-y)i项系数 设置k=2时,按列方向由下到上,由右到左顺序为(x-y)i项系数 hadamard(a) hilb(a) invhilb(a) 生成哈达玛矩阵,其中a,a/12或a/20须为2的整数次幂。 H2=[1 1;1 -1] H2n=[Hn Hn;Hn -Hn] (Hn为n阶hadamard矩阵) 生成a阶希尔伯特矩阵,其中元素aij为1/(i+j-1)。 生成a阶希尔伯特矩阵的逆矩阵。 5

实验一 感知器算法实验

一、实验目的

掌握感知器算法聚类原理。

二、实验原理

感知器算法:

(1)已知两个训练模式集共N个模式,它们分别属于?1和?2类,权向量初始值为w(1);

(2)在用全部训练模式集进行第一轮迭代中,第k次训练步骤为:

如Xk??1 且wT(k)?Xk?0 且分类器对第k个模式Xk做错误分类,应校正权向量,使

w(k?1)?w(k)?C?Xk (C为一校正常数)

如Xk??2 且wT(k)?Xk?0 且分类器对第k个模式Xk做错误分类,应校正权向量,使

w(k?1)?w(k)?C?Xk

如不合以上情况,表明该模式样本在第k部中分类正确,权向量不变,即

w(k?1)?w(k)

(3)重复第2部,一直到某轮训练中所有的模式都有:

?wT(k)?Xk?0如Xk??1 ?T?w(k)?Xk?0如Xk??2

三、使用仪器、材料

计算机

四、实验步骤

1.实验步骤

利用MATLAB编程实现感知器分类算法,并对实验一中图1实验数据进行分类(左下角 8点属于第一类,右上角点属于第二类),求出判别函数,画出判别界面。

6

1)20个模式样本点,分别属于?1和?2类,取权向量初始值为w(1)=[0 0 0]’,校正系数C=1;并对?2类样本取增广向量后乘(-1);

2)在用全部训练模式集进行第一轮迭代中,第k次训练步骤为:如

wT(k)?Xk?0 ,则分类器对Xk做错误分类,应校正权向量,使W(k+1)=W(k)+Xk;否则权向量不变,即W(k+1)=W(k);

(3)重复第2步,直到某轮训练中所有的模式都有:WT(k)*Xk>0为止,算法收敛,记录数据。 2. 实验程序示例

%感知器算法

% 20个分类点集合

x=[0 0 1;1 0 1;0 1 1;1 1 1;2 1 1;1 2 1;2 2 1;3 2 1;-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=[0 0 0]'; f=1; k=0;

while f==1 k=k+1 f=0;

for i=1:sx(2)

if w'*x(:,i)<=0 i

w=w+x(:,i) f=1;

%else h(i)=w'*x(:,i); end end end

五、实验过程原始记录

六、实验结果及分析

7

实验二 模式聚类算法实验

一、实验目的

掌握K-均值模式聚类原理。

二、实验原理

K-均值聚类法是先行选择K个样本点作为初始聚类中心,再按照最小距离原则使各个样本点向各个中心聚集,从而得到初始分类。然后判断初始分类是否合理(即为判断聚类前后聚类中心是否改变),如果不合理(即为聚类中心改变),就修改分类。以此反复进行修改聚类的迭代运算,知道合理为止。 K-均值聚类法步骤:

第一:选K个初始聚类中心:Z1(1),Z2(1),??,Zk(1);

第二:逐个将需要分类的模式样本{xi, i=1,2,3,??,N}按最小距离原则分配给K

个聚类中心中的某一个;

第三:计算各个聚类中心的新的向量值:

Zj(k?1)?1Njx?Sj(k)?X j=1,2,??,K

Nj为第j个聚类域Sj所包含样本个数;

第四:如果Zj(k?1)?Zj(k) ,j=1,2,??,K,则回到第二步,将模式样本逐个

重新分类,重复迭代计算。如果Zj(k?1)?Zj(k) ,j=1,2,??,K,算法收敛,计算完毕。

X2 10 9 8 7 6 5 4 3 2 1 X1 0 1 2 3 4 5 6 7 8 9 10 图1 8

三、使用仪器、材料

计算机

四、实验步骤

1.利用MATLAB编程实现K-均值聚类算法,并对图1中实验数据进行分类。 1)取K=2,选择两个初始聚类中心Z1=[0 0],Z2=[1 0];

2)逐个计算各个需要分类的模式样本{xi, i=1,2,3,??,N}到Z1、Z2的距离,按最小距离原则分配给Z1或Z2; 3)计算Z1、Z2新的向量值:

Zj(k?1)?1Njx?Sj(k)?X j=1,2,Nj为第j个聚类域Sj所包含样本个数;

4)如果Zj(k?1)?Zj(k) ,j=1,2,则回到第2步,将模式样本逐个重新分类,重复迭代计算。如果Zj(k?1)?Zj(k) ,j=1,2,算法收敛,计算完毕。

2.实验程序示例

%K-均值模式聚类程序 close all; clear; clc; %分类点集合

x=[0 0;1 0;0 1;1 1;2 1;1 2;2 2;3 2;6 6 ; 7 6;8 8;6 7;7 7;8 7;9 7;7 8;8 8;9 8;8 9;9 9]; x=x';

sx=size(x); %初始化两个聚类中心 z1=[0 0]'; z2=[1 0]'; %开始分类

while 1

s1=[];s2=[]; for i=1:sx(2)

%逐个将需要分类的模式样本{xi, i=1,2,3,??,N}按最小距离原则分配

给K个聚类中心中的某一个;

9

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=[s1 x(:,i)]; else s2=[s2 x(:,i)]; end end

%计算各个聚类中心的新的向量值 sz1=size(s1);

z1n=(sum(s1')/sz1(2))'; sz2=size(s2);

z2n=(sum(s2')/sz2(2))'; %如果聚类中心不改变,算法结束,退出 if z1==z1n break; end

%如果聚类中心改变,给聚类中心赋新值,再次聚类 z1=z1n; z2=z2n; end

fprintf('中心点1'); z1n

fprintf('集合1'); s1

fprintf('中心点2'); z2n

fprintf('集合2'); s2

五、实验过程原始记录

六、实验结果及分析

10

实验三 图像识别实验

1.实验目的

综合掌握模式识别的原理,及了解识别过程设计方法。

2.实验内容

(a)

(b)

(c)

图2

(d)

图2中(a)、(b)为字符A的两种形式,(c)、(d)为字符B的两种形

式。利用MATLAB编程,提取图2实验图像特征,设计分类函数,对图像进行识别。

11

本文来源:https://www.bwwdw.com/article/mmq5.html

Top