📄 bocostfunction.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 + -