⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sjwl.h

📁 自编的模式识别程序
💻 H
字号:
#if !defined(AFX_SJWL_LIB_H__0ADAC3DD_F009_11D7_9D57_0040D01F5021__INCLUDED_)
#define AFX_SJWL_LIB_H__0ADAC3DD_F009_11D7_9D57_0040D01F5021__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

/**********************************公用全局变量********************************/

extern  char Err_Str[256]; 
//对于任何一个函数,当调用返回错误时,返回的错误信息,256字节。

extern	bool Study_Over;
//判断是否结束训练过程。
//当学习若干数据对象的集合时,在学对象之前要将Study_Over=true,当学完一个对象后Study_Over==false ,则先学一遍样本库中的样本,然后再学其它,如果Study_Over一直为true,则结束学习

extern	char CreateNo[15];//创建序列号,15字节,系统自动填写
//存储有神经体的创建编码。该编码常用于判断训练样本的I/O对应关系字典文件(io.dat)是否与神经体匹配。

extern	unsigned int * Out_pl;
//输出的地址指针,记录着识别出的结果。当使用A系列函数时无效,只用于发行版本(B系列函数)。 
//当SJWL_A_Cycle() 或 SJWL_B_Cycle() 返回值大于“0”时,记录着返回的结果。

extern	bool Get_Shenqing(char *); //获得注册用的申请码,300字节。
//本函数可以随时获得“注册用的申请码”,申请码用于提交给软件供应商,去换取注册码。

extern	bool Set_Shenqing(char *); //设置注册码,300字节。
//当从供应商那里取得注册码时,使用本函数使注册码生效,注册码将绑定注册计算机。

/**********************************开发软件使用的函数********************************/
extern	bool SJWL_A_lib(char *);
//系统初始化函数
//输入:发行授权号。无授权号的输入“0” 
//输出:启动状态。
//说明:基于本开发包编写的产品软件将自动包含一个试用期控制模块,
//		二级开发商在软件发行时,需要向一级开发商签定合作协议、合同等相关法律文书,并索取“发行授权号” 和与之配套的注册机。

extern	bool SJWL_A_init(
		unsigned int ,	//输入神经元的数量,其值>=1。
		unsigned int ,	//对象包含数据量的估计值,其值>=1。
		unsigned int ,	//对象复杂度估计值,其值>=1。
		unsigned int );	//识别对象的数量预设值,其值>=1。
//本函数用于初始化神经网络,后3个参数的比值一般为200:20:1。识别对象的数量预设值指每次新增学习量的平均值,例如平均每天学习认知5个新对象,那么该值就等于“5”
//初始化后,系统会生成神经网络数据库文件,新建的文件可以有一到两个月的试用期,之后会随机的出现“请求注册对话框”。
		
extern	int SJWL_A_Input(		//神经网络输入刺激信号函数。
				bool,			//输入神经元的状态
				unsigned int,	//输入神经元的坐标,不得超过初始化定义的数量。
				unsigned int,	//时间
				unsigned int,	//目标编码
				int unsigned *,	//同类数据
				int unsigned * );//学习内容的样本号,新增的训练对象取值为“0”
//////////////////////////////////////////////////////////////////////////////
//函数说明:本函数为输入神经元控制函数,同时完成神经网络的学习启动工作。
//int SJWL_A_Input(bool state,	//当前输入神经元的状态
//		unsigned int x_y,		//当前输入神经元的位置
//		unsigned int time,		//周期数,表示当前的输入数据所处的时间段
//		unsigned int object,	//目标序号,输入数据所对应的映射对象
//		int unsigned * intraclass, //同类数据指针,当输入数据可以有多个输出时,必须将其他输出列在此队中并以0为结束,如果是唯一输出则该值为NULL。
//		int unsigned * yangben);//学习内容的样本号,新增的样品为“0”
//函数返回:-1 (错误) 、0(该目标需要继续学习)、1(已识别了该目标)、2(本次学习的内容被用做样本)
//注意事项:1、由于本系统的神经元只具有二值性,所以要将识别对象先转换为二值数据(例如:音频数据->电平表),再按照时间进行输入。
//			2、每个时间段的数据都是根据位置(x_y)与状态(state)进行输入的,当一帧的数据输入完毕后调用SJWL_A_Cycle()函数进行处理,
//				同时time--;进行下一帧数据的输入,time递减期间object的值不能改变,当(time==0 && 返回0) 则重学该数据对象。
//			3、当time=0时表示常态,time!=0时表示学习态。学习的内容为处于1~time时间段内的数据信息(在用于静态处理时,相当于只学习time=1时的数据)。
//			4、在time没有递减到“0”时,或者函数还没有返回为1时,不能强行中断程序,否则系统会出现异常。
//			5、要退出也必须等到返回1时才可!!!
//			6、如果在time递减到“0”时返回为“2”时,要将该学习对象另外保存在样本库中,并更新样本号的取值,之后应当先重学样本库中的数据,然后再学习新的训练对象
//////////////////////////////////////////////////////////////////////////////

extern	int SJWL_A_Cycle(unsigned int,float); 
////////////////////////////////////////////////////////////////////
//函数说明:本函数完成神经网络的一个扫描周期的处理过程.
//int SJWL_A_Cycle(unsigned int,float);
//函数输入1:延时数。正确输出延时量:扫描周期数。用于检验是否存在抑制关系,取值应>=1。
//函数输入2:差异系数。当识别对象之间差异很小的时候,该值取值也小,取值范围( >=1 && <2)
//函数返回:-1 (错误) 、0(无输出)、>0(有输出,输出的个数)
////////////////////////////////////////////////////////////////////

extern	bool SJWL_A_lib_Close(); 
//关闭神经网络系统。保存数据并释放系统资源,与SJWL_A_lib()函数成对使用。

/**********************************发行版软件使用的函数********************************/
//  *_A_*()型函数为开发函数,简称A系列,*_B_*()型函数为发行函数,简称B系列。两套函数不能混在一起调用。
//由A系列函数训练完成的神经网络数据文件可以被B系列的函数所使用,B系列的函数具有更高的运行效率。
//发行用的产品软件应使用B系列函数来开发。

extern	bool SJWL_B_lib(char * ); 
//B类初始化 ,功能与A类的相同。
//输入:开发授权号。无授权号的输入“0” 但软件只能试用,不能注册。

extern	int SJWL_B_Input(		//神经网络输入刺激信号函数。
				bool,			//输入神经元的状态
				unsigned int);	//输入神经元的坐标,不得超过初始化定义的数量。
//其它参见A类同名函数。

extern	int SJWL_B_Cycle(//神经网络扫描周期
						 unsigned int); //延时数。正确输出延时量:扫描周期数。用于检验是否存在抑制关系。
//参见A类同名函数。

extern	bool SJWL_B_lib_Close(); //B类关闭
//参见A类同名函数。

#endif // !defined(AFX_SJWL_LIB_H__0ADAC3DD_F009_11D7_9D57_0040D01F5021__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -