używam biblioteki EIGEN w C++: Jestem obecnie obliczania macierzy kowariancji się następująco:Eigen: Czy jest wbudowana sposób obliczyć przykładowy kowariancji
Eigen::MatrixXd covariance_matrix = Eigen::MatrixXd::Constant(21, 21, 0);
data mean = calc_mean(all_data)
for(int j = 0; j < 21; j++){
for(int k = 0; k < 21; k++){
for(std::vector<data>::iterator it = all_data.begin(); it!= all_data.end(); it++){
covariance_matrix(j,k) += ((*it)[j] - mean[j]) * ((*it)[k] - mean[k]);
}
covariance_matrix(j,k) /= all_data.size() - 1;
}
}
Czy jest wbudowana/bardziej zoptymalizowany sposób zrobić to z biblioteką Eigen? Na przykład, jeśli przechowuję moje dane w MatrixXd
, gdzie każdy wiersz jest obserwacją, a każda kolumna jest funkcją?
Dzięki
Uważaj na 'mat.rows() == 1 '. –