基于matlab仿真的神经网络模式识别

时间:2012-01-27 03:44:29

标签: matlab pattern-matching neural-network pattern-recognition

我是matlab中这个神经网络的新手。我想用matlab仿真创建一个神经网络。

这个matlab仿真正在使用模式识别。 我在Windows XP平台上运行。

例如,我有一组圆形波形。 我把两极挖出来了。 这些极点将教我的神经网络它是圆形的,因此每当我输入另一组稍微不同的圆形波形时,神经网络就能够区分形状。

目前,我已经提取了这三种形状的圆柱,圆柱体,圆形和矩形。 但我对如何创建神经网络毫无头绪。

2 个答案:

答案 0 :(得分:1)

我建议使用SOM(自组织映射)进行模式识别,因为它非常强大。还有一个你可能感兴趣的Som Toolbox for Matlab。然而,为了让它在忽略偏移的同时学习波浪,你需要对“相似度函数”进行一些修改。这些变化将对SOM的训练时间产生很大影响,但如果这不是问题,请继续阅读。

对于SOM,您必须将波形采样为恒定大小的向量,例如:

  • sin x - > sin_vector =(a1,a2,a3,...,aN)
  • cos x - > cos_vector =(b1,b2,b3,...,bN)

通常用欧几里德距离计算“SOM-向量”的相似性。这两个矢量的欧几里德距离很大,因为它们具有不同的偏移。在你的情况下,他们应该被认为是相似的,即。距离要小。所以..如果你不从相同的起点采样所有相似的波,它们将被分类在不同的类中。这可能是一个问题。但!计算SOM中矢量的相似性,以便从地图中找到BMU(最佳匹配单位)并拉动BMU及其neigborhood的向量,以获得给定样本的值。因此,您需要改变的是比较这些向量的方法以及将样本的值拉向样本的方式,以便两者都是“偏移容忍的”。

缓慢但有效的解决方案是首先找到每个向量的最佳偏移索引。最佳偏移指数是样本中将产生欧几里德距离的最小值。然后,用网络的某个节点计算的最小距离将是BMU。然后使用为之前的每个节点计算的偏移指数,将BMU及其neigborhood的向量拉向给定的样本。其他一切都应该是开箱即用的。

此解决方案相对较慢但应该运行良好。我建议彻底研究SOM的概念,然后再次阅读这篇文章(和愤怒的评论):)

请发表评论,如果你知道一些比上一个更好的数学解决方案!

答案 1 :(得分:0)

您可以尝试使用Matlab的神经网络模式识别工具nprtool,因为它专门用于训练和测试神经网络以进行模式识别。