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

📄 bocostfunction.cpp

📁 解决线性assignment的算法
💻 CPP
字号:
#include <fstream>
#include <vector>
#include <cmath>
#include <string>
#include "BOCostFunction.h"


using namespace std;

BOCostFunction::BOCostFunction(void){}

BOCostFunction::~BOCostFunction(void){}

BOMatrix<double> BOCostFunction::Run(BOMatrix<double> HistP, BOMatrix<double> HistQ){
	try{
		int sizeR = HistP.r;
		int sizeC = HistP.c;
		double sumK;
		double eps = 2.2204 * 0.0000000000000001;

		BOMatrix<double> CostF(sizeR,sizeR);
		for(int i = 0; i < sizeR; i++){
			for(int j = 0; j < sizeR; j++){
				sumK = 0;
				for(int k = 0; k < sizeC; k++){
                	sumK += ( pow(( HistP[i][k] - HistQ[j][k] ),2) / ( HistP[i][k] + HistQ[j][k] + eps ));
				}
				CostF[i][j] = 0.5 * sumK;
			}
		}
		return CostF;
	}
	catch ( const exception & r_e ){
		cout << "Error: " << r_e.what();
		cout << endl;
		BOMatrix<double> CostF(0,0);
		return CostF;
	}
}

void BOCostFunction::SaveToFile(string filename, BOMatrix<double> CostF){

	ofstream cfile (filename.c_str(),ios::out);
	if (cfile.is_open())
	{
		int sizeR = CostF.r;
		for(int i = 0; i < sizeR; i++){
			for(int j = 0; j < sizeR; j++){
				cfile << CostF[i][j] <<"\t";
			}
			cfile <<"\n";
		}
		cfile.close();
	}
	else 
		cout << "Unable to open file"; 
}

⌨️ 快捷键说明

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