crossoverbindata.cc
来自「torch tracking code, it is a good code」· CC 代码 · 共 112 行
CC
112 行
const char *help = "\progname: crossoverbindata.cc\n\code2html: This program performs crossing-over on a bindata files.\n\version: Torch3 vision2.0, 2003-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_in; char *filename_out; int cut; bool verbose; CmdLine cmd; cmd.setBOption("write log", false); cmd.info(help); cmd.addText("\nArguments:"); cmd.addSCmdArg("filename in", &filename_in, "input bindata filename"); cmd.addSCmdArg("filename out", &filename_out, "output bindata filename"); cmd.addText("\nArguments:"); cmd.addICmdOption("-cut", &cut, 2, "cut"); cmd.addBCmdOption("-verbose", &verbose, false, "verbose"); cmd.read(argc, argv); DiskXFile *file = NULL; DiskXFile *fileout = NULL; // Reading headers int n_patterns; int n_inputs; file = new DiskXFile(filename_in, "r"); file->read(&n_patterns, sizeof(int), 1); file->read(&n_inputs, sizeof(int), 1); if(verbose) { print("Reading bindata file (%s)\n", filename_in); print(" n_inputs = %d\n", n_inputs); print(" n_patterns = %d\n", n_patterns); } if(n_patterns != 2) error("n_patterns != 2"); fileout = new DiskXFile(filename_out, "w"); if(fileout == NULL) { error("Opening BinData file %s", filename_out); return 1; } fileout->write(&n_patterns, sizeof(int), 1); fileout->write(&n_inputs, sizeof(int), 1); if(verbose) { print("\n"); print("Writing bindata file :\n"); print(" n_inputs : %d\n", n_inputs); print(" n_patterns : %d\n", n_patterns); } real *input1 = new real [n_inputs]; real *input2 = new real [n_inputs]; real *output1 = new real [n_inputs]; real *output2 = new real [n_inputs]; file->read(input1, sizeof(real), n_inputs); file->read(input2, sizeof(real), n_inputs); for(int i = 0 ; i < n_inputs ; i++) { output1[i] = 0.0; output2[i] = 0.0; } for(int i = 0 ; i < cut ; i++) { output1[i] = input1[i]; output2[i] = input2[i]; } for(int i = cut ; i < n_inputs ; i++) { output1[i] = input2[i]; output2[i] = input1[i]; } fileout->write(output1, sizeof(real), n_inputs); fileout->write(output2, sizeof(real), n_inputs); delete [] input1; delete [] input2; delete [] output1; delete [] output2; delete fileout; delete file; return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?