30 (*dst_prob)(0) = src_prob[0];
31 for (
size_t i = 3; i < static_cast<size_t>(ObjectType::MAX_OBJECT_TYPE);
33 (*dst_prob)(i - 2) =
static_cast<double>(src_prob[i]);
38 dst_prob->assign(
static_cast<int>(ObjectType::MAX_OBJECT_TYPE), 0);
39 dst_prob->at(0) =
static_cast<float>(src_prob(0));
40 for (
size_t i = 3; i < static_cast<size_t>(ObjectType::MAX_OBJECT_TYPE);
42 dst_prob->at(i) =
static_cast<float>(src_prob(i - 2));
48 (*prob)(i) = log((*prob)(i));
54 (*prob)(i) = exp((*prob)(i));
59 double min_value = prob->minCoeff();
61 (*prob)(i) = exp((*prob)(i)-min_value);
66 double sum = prob->sum();
67 sum = sum < 1e-9 ? 1e-9 : sum;
76 sum += (*prob)(row, col);
78 sum = sum < 1e-9 ? 1e-9 : sum;
80 (*prob)(row, col) /= sum;
88 fin >> (*matrix)(row, col);
95 if (matrix ==
nullptr) {
98 std::ifstream fin(filename);
100 AERROR <<
"Fail to open file: " << filename;
109 EigenMap<std::string, Matrixd>* matrices) {
110 if (matrices ==
nullptr) {
113 std::ifstream fin(filename);
114 if (!fin.is_open()) {
115 AERROR <<
"Fail to open file: " << filename;
125 for (
size_t i = 0; i < num; ++i) {
130 matrices->emplace(name, matrix);
std::map< T, EigenType, std::less< T >, Eigen::aligned_allocator< std::pair< const T, EigenType > > > EigenMap
void ToExpStable(Vectord *prob)
Compute stable exponential of Vectord
bool LoadSingleMatrixFile(const std::string &filename, Matrixd *matrix)
Load single matrix from file
void ToExp(Vectord *prob)
Compute exponential of Vectord
bool LoadMultipleMatricesFile(const std::string &filename, EigenMap< std::string, Matrixd > *matrices)
void Normalize(Vectord *prob)
Compute normalize of Vectord
bool LoadSingleMatrix(std::ifstream &fin, Matrixd *matrix)
Load single matrix
void ToLog(Vectord *prob)
Compute log of Vectord
void NormalizeRow(Matrixd *prob)
Compute normalize row of Matrixd
void FromEigenToVector(const Vectord &src_prob, std::vector< float > *dst_prob)
Transfrom Eigen to vector
void FromStdToVector(const std::vector< float > &src_prob, Vectord *dst_prob)
From std to vector
Eigen::Matrix< double, VALID_OBJECT_TYPE, VALID_OBJECT_TYPE > Matrixd
Eigen::Matrix< double, VALID_OBJECT_TYPE, 1 > Vectord