Это комбинация следующих предыдущих вопросов: Применение функции ко всем элементам матрицы Eigen и Установка коэффициентов матрицы Eigen :: Matrix в соответствии с произвольным распределением . В основном я пытаюсь сгенерировать собственную матрицу с коэффициентами, выбранными из гауссовского распределения.
Вот мой код для этого (метод статического класса), который возвращает довольно загадочное сообщение об ошибке:
matrix_eig EigenUtil::GaussianNoise(size_t rows, size_t cols,
float mean, float std) {
matrix_eig m(rows, cols);
std::mt19937 rng;
std::normal_distribution<float> nd(mean, std);
auto sampler = [&]() { return nd(rng); };
return matrix_eig::Zero(rows, cols).unaryExpr(sampler);
}
, который возвращает ошибку:
ошибка:
no type named 'type' in 'std::__1::result_of<(lambda at eigen_util.cpp:101:18) (const float &)>'
typedef typename std::result_of<T>::type type1;