Я бы хотел вызвать функцию, которая выделяет, вычисляет, а затем возвращает вызывающей функции несколько собственных матриц.
Размер выходных данных каждой матрицы заранее неизвестен, поэтому мы не можем выделить такие матрицы в вызывающей функции.
Вот то, что я, хотя и был путь (передача матрицы в класс Ref и изменение размера внутри):
FromImageToAb(image,
Eigen::Ref<Eigen::SparseMatrix<double>> Aout, Eigen::Ref<Eigen::VectorXd> bout){
... // determine what size matrixes must have: int equationcounter, numberofunknowns
// Allocate matrixes of the correct size
SparseMatrix<double> A(equationcounter, numberofunknowns);
SparseMatrix<double> bM(equationcounter, 1);
... // fill A and bM
VectorXd b(bM); // Now we have successfully created a dense vector of the correct size that cannot be known before hand
Aout = A;
bout = b;
}
main(){
SparseMatrix<double> Aout(1,1); // Creating matrix with token size
VectorXd bout(1); // Creating matrix with token size
FromImageToAb(image, Aout, bout);
}
, но Aout = A;
не выделяет память и не копирует значения, чтобы ее можно было использовать вне
и bout = b;
не компилируется, так как плотные матрицы не могут быть изменены для увеличения памяти
Как правильно это сделать?