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

📄 joinbindata.cc

📁 torch tracking code, it is a good code
💻 CC
字号:
const char *help = "\progname: joinbindata.cc\n\code2html: This program joins 2 bindata files.\n\version: Torch3 vision2.0, 2004-2005\n\(c) Sebastien Marcel (marcel@idiap.ch)\n";#include "DiskXFile.h"#include "CmdLine.h"using namespace Torch;int main(int argc, char *argv[]){	char *filename_in1;	char *filename_in2;	char *filename_out;	bool average;	bool delta;	bool diff; 	bool verbose;		CmdLine cmd;	cmd.setBOption("write log", false);	cmd.info(help);	cmd.addText("\nArguments:");	cmd.addSCmdArg("filename in1", &filename_in1, "input bindata filename 1");	cmd.addSCmdArg("filename in2", &filename_in2, "input bindata filename 2");	cmd.addText("\nArguments:");	cmd.addBCmdOption("-verbose", &verbose, false, "verbose");	cmd.addBCmdOption("-diff", &diff, false, "diff");	cmd.addBCmdOption("-delta", &delta, false, "delta");	cmd.addBCmdOption("-average", &average, false, "average");	cmd.addSCmdOption("-o", &filename_out, "join.bindata", "output bindata filename");	cmd.read(argc, argv);	DiskXFile *file1 = NULL;	DiskXFile *file2 = NULL;	DiskXFile *ofile = NULL;  	int n_patterns1;	int n_inputs1;	file1 = new DiskXFile(filename_in1, "r");			file1->read(&n_patterns1, sizeof(int), 1);	file1->read(&n_inputs1, sizeof(int), 1);	if(verbose)	{		print("Reading bindata file (%s)\n", filename_in1);		print("   n_inputs = %d\n", n_inputs1);		print("   n_patterns = %d\n", n_patterns1);  	}	int n_patterns2;	int n_inputs2;	file2 = new DiskXFile(filename_in2, "r");			file2->read(&n_patterns2, sizeof(int), 1);	file2->read(&n_inputs2, sizeof(int), 1);	if(verbose)	{		print("Reading bindata file (%s)\n", filename_in2);		print("   n_inputs = %d\n", n_inputs2);		print("   n_patterns = %d\n", n_patterns2);  	}	if(n_inputs1 != n_inputs2) error("n_inputs different");	int n_patterns;		if(average) n_patterns = n_patterns2;	else n_patterns = n_patterns1 * n_patterns2;	int n_inputs;		if(diff) n_inputs = n_inputs1;	else n_inputs = n_inputs1+n_inputs2;		if(verbose)	{		print("Writting bindata file (%s)\n", filename_out);		print("   n_inputs = %d\n", n_inputs);		print("   n_patterns = %d\n", n_patterns);  	}	ofile = new DiskXFile(filename_out, "w");	ofile->write(&n_patterns, sizeof(int), 1);	ofile->write(&n_inputs, sizeof(int), 1);	real *inputs = new real [n_inputs];	real *mean = new real [n_inputs1];	for(int i = 0 ; i < n_inputs1 ; i++) mean[i] = 0.0;		real **inputs1 = new real*[n_patterns1];	for(int p = 0 ; p < n_patterns1 ; p++)	{		inputs1[p] = new real [n_inputs1];		file1->read(inputs1[p], sizeof(real), n_inputs1);		for(int i = 0 ; i < n_inputs1 ; i++) mean[i] += inputs1[p][i];	}	for(int i = 0 ; i < n_inputs1 ; i++) mean[i] /= (real) n_patterns1;	real **inputs2 = new real*[n_patterns2];	for(int p = 0 ; p < n_patterns2 ; p++)	{		inputs2[p] = new real [n_inputs2];		file2->read(inputs2[p], sizeof(real), n_inputs2);	}	if(average)	{		for(int p2 = 0 ; p2 < n_patterns2 ; p2++)		{			if(diff)		   		for(int i = 0 ; i < n_inputs ; i++) inputs[i] = inputs2[p2][i] - mean[i];			else			{		   		int j = 0;					if(delta)		   			for(int i = 0 ; i < n_inputs2 ; i++, j++) inputs[j] = inputs2[p2][i] - mean[i];				else for(int i = 0 ; i < n_inputs2 ; i++, j++) inputs[j] = inputs2[p2][i];		   		for(int i = 0 ; i < n_inputs1 ; i++, j++) inputs[j] = mean[i];			}			ofile->write(inputs, sizeof(real), n_inputs);		}	}	else	{		for(int p1 = 0 ; p1 < n_patterns1 ; p1++)		{		   for(int p2 = 0 ; p2 < n_patterns2 ; p2++)		   {			if(diff)		   		for(int i = 0 ; i < n_inputs ; i++) inputs[i] = inputs2[p2][i] - inputs1[p1][i];			else			{		   		int j = 0;					if(delta)		   			for(int i = 0 ; i < n_inputs2 ; i++, j++) inputs[j] = inputs2[p2][i] - inputs1[p1][i];				else for(int i = 0 ; i < n_inputs2 ; i++, j++) inputs[j] = inputs2[p2][i];		   		for(int i = 0 ; i < n_inputs1 ; i++, j++) inputs[j] = inputs1[p1][i];			}			ofile->write(inputs, sizeof(real), n_inputs);		   }		}	}		for(int p = 0 ; p < n_patterns1 ; p++) delete [] inputs1[p];	delete [] inputs1;	for(int p = 0 ; p < n_patterns2 ; p++) delete [] inputs2[p];	delete [] inputs2;	delete [] inputs;	delete [] mean;	delete file1;	delete file2;	return 0;}   

⌨️ 快捷键说明

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