У меня есть разреженная матрица D, и я хочу умножить D_transpose и D, чтобы получить L следующим образом:Как умножить две разреженные матрицы в C?
L = D '* D;
Я использую sparseBLAS для работы с разреженными матрицами, но documentation говорит, что нечего умножать две разреженные матрицы.
Я полностью застрял и понятия не имею, как действовать.
Размеры D обычно составляют около 500 000 на 250 000. Я не могу назначить столько памяти вообще, так что это просто нужно сделать, используя разреженные матрицы.
Я сделал это с помощью MATLAB, и я не понимаю, как это работает MATLAB, если он также использует sparseBLAS под интерфейсом - или это так? Если нет, что он использует? Я тоже мог бы это использовать.
Благодарим за понимание!
EDIT: Решенный. Мне понадобилась матрица L, чтобы умножить ее на вектор. Поэтому вместо первого вычисления L, я просто сделал D '* (D * x), тем самым избегая необходимости в умножении двух разреженных матриц. Теперь я занимаюсь только разреженной матрицей и плотным векторным мультипликатом, который поддерживается sparseBLAS.
Вы также можете вызвать функции Matlab из своего приложения C. Найдите «Время выполнения компилятора Matlab». – Nemo