Я немного новичок в Stack Overflow и C ++, поэтому не стесняйтесь исправлять любые ошибки в моем коде и форматировании этого вопроса.
Я пытаюсь сделать калькулятор линейной регрессии, используя нормальное уравнение, которое включало транспонирование матриц и умножение векторов (и их обратных). Предполагается, что программа читает из CSV-файла и передает информацию из этого файла в матрицу и вычисляет линию регрессии. Чтобы упростить работу, я решил использовать библиотеку Eigen для умножения матриц на матрицы.
Проблема, с которой я столкнулся, заключается в том, что функция Map
может принимать только массив, а не std :: vector.
Это то, что я имею до сих пор:
float feature_data[] = { 1, 1, 1, 1, 1, 1,
2, 4.5, 3, 1,4, 5};
float labels[] = { 1, 4, 3, 2, 5, 7 };
//maps the array to a matrix called "feature_data"
MatrixXf mFeatures = Map< Matrix<float, 6, 2> >(feature_data);
MatrixXf mLabels = Map< Matrix<float, 6, 1> >(labels);
//use the toArray function
std::vector<float> test_vector = { 2,1,3 };
float* test_array = toArray(test_vector);
calcLinReg(mFeatures, mLabels);
const int n = 2;
int arr[n];
system("pause");
Для контекста, функция toArray - моя неудачная попытка создать массив из вектора (честно говоря, он работает, но возвращает указатель, который нельзя передать в функцию Map
в Eigen.) calcLinReg
делает именно то, на что это похоже: вычисляет параметры линии линейной регрессии.
Могу ли я в любом случае преобразовать вектор в массив или преобразовать вектор в матрицу в Eigen?