Любая эквивалентная функция C ++ / C с разреженной в MATLAB

Я пытался портировать 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];

Обратите внимание, что при наличии общих индексов значение не перезаписывается, а накапливается.

-1

Решение

Eigen является примером математической библиотеки C ++, которая содержит разреженные матрицы. Он перегружает операторов, чтобы они воспринимались как встроенная функция.

Существует много матричных библиотек C и C ++. Ни один корабль как часть stdи при этом ничего не встроено.

Написание хорошей библиотеки разреженных матриц было бы довольно сложно; Ваш лучший выбор — найти заранее написанное. Рекомендации вопросы не по теме

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector