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

📄 inputdata.cpp

📁 bp神经网络源程序
💻 CPP
字号:
#include "InputData.h"
#include <cstdlib>

CInput::CInput(char* InFileName,int n,int m)
{
 	InFile.open(InFileName);
	if(InFile.is_open()==0){
		cerr<<"Can't open the file--InputData.dat";
		exit(1);
	}
 	this->n=n;
	this->m=m;
  	Data_a=new double[n];
	Data_b=new double[n];
	Data_c=new double[n];
	Data_d=new double[n];
	Data_e=new double[m];
	InputData=new double[4*n+m];
 	InputDataMax=-1000;
	InputDataMin=1000;	 
}

CInput::~CInput()
{
	delete Data_a;
	delete Data_b;
	delete Data_c;
	delete Data_d;
	delete Data_e;
	delete InputData;
 	InFile.close();
}

//输入数据的归一化
void CInput::Initialize()
{
	int i=0,j;
	//从文件中读入初始化数据
  	while(!InFile.eof()&&i<(4*n+m))
		InFile>>InputData[i++];
 	//寻找最值
	for(j=0;j<i;j++){
		if(InputDataMin>InputData[j]) InputDataMin=InputData[j];
		if(InputDataMax<InputData[j]) InputDataMax=InputData[j];
	}
 	//整体归一化
	for(j=0;j<i;j++)
		InputData[j]=(InputData[j]-InputDataMin)/(InputDataMax-InputDataMin);
  	//数据对应赋予各自节点
	for(j=0;j<i;j++){
		if(j<9)       Data_a[j]=InputData[j];
		else if(j<18) Data_b[j-9]=InputData[j];
		else if(j<27) Data_c[j-18]=InputData[j];
		else if(j<36) Data_d[j-27]=InputData[j];
		else	      Data_e[j-36]=InputData[j];
	}
}

//反归一
//从InFile中读入数据,反归一化后存入文件OutFile中
void CInput::DeInitialize(char* InFileName,char* OutFileName)
{
 	ifstream InFile(InFileName);
	ofstream OutFile(OutFileName);
	int i=0;
	double temp;
	while(!InFile.eof()){
		InFile>>temp;
		temp=(InputDataMax-InputDataMin)*temp+InputDataMin;
		OutFile<<temp<<"\t\t";
		if(++i%5==0) OutFile<<endl;
	}
 	InFile.close();
	OutFile.close();
}
 
//由已知数据组合生成测试数据 并送入OutFile文件和数组TestData中
void CInput::BuildData(char* TestFileName)
{
  	ofstream TestFile(TestFileName);
	int i=0;
  	for(int i0=0;i0<n;i0++){
		for(int i1=0;i1<n;i1++){
			for(int i2=0;i2<n;i2++){
				for(int i3=0;i3<n;i3++){
					for(int i4=0;i4<m;i4++){
						TestFile<<Data_a[i0]<<" ";
						TestFile<<Data_b[i1]<<" ";
						TestFile<<Data_c[i2]<<" ";
						TestFile<<Data_d[i3]<<" ";
						TestFile<<Data_e[i4]<<"\n";
 						i++;
					}
				}
			}
		}
	}
  	TestFile.close();
}

⌨️ 快捷键说明

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