Я пытался портировать m
код для c
или же cpp
,
В моем коде есть строка
A = sparse(I,J,IA,nR,nC);
который преобразует индекс строки I
индекс col J
и данные IA
разрежать матрицу A
с размером nR x nC
,
Есть ли эквивалентный код с C ++ или C?
Наивный алгоритм для дублирования результата в полной матрице
double *A;
A = malloc(sizeof(double)*nR*nC);
memset(A, 0, sizeof(double));
for(k=0; k<size_of_IA; k++)
A[I[k]*nC + J[k]] += IA[k];
Обратите внимание, что при наличии общих индексов значение не перезаписывается, а накапливается.
Eigen является примером математической библиотеки C ++, которая содержит разреженные матрицы. Он перегружает операторов, чтобы они воспринимались как встроенная функция.
Существует много матричных библиотек C и C ++. Ни один корабль как часть std
и при этом ничего не встроено.
Написание хорошей библиотеки разреженных матриц было бы довольно сложно; Ваш лучший выбор — найти заранее написанное. Рекомендации вопросы не по теме
Других решений пока нет …