任意c++ /C等效函数在MATLAB中具有稀疏性

Any C++/C equivalent function with sparse in MATLAB

本文关键字:MATLAB c++ 函数 任意      更新时间:2023-10-16

我尝试将m代码移植到ccpp

在我的代码中有一行

A = sparse(I,J,IA,nR,nC);

将行索引I、col索引J和数据IA转换为大小为nR x nC的稀疏矩阵A

是否有c++或C的等效代码?

在完整矩阵中复制结果的naïve算法是

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的一部分发布,也没有内置任何内容。

写一个好的稀疏矩阵库是相当困难的;最好的办法是找一份事先写好的。推荐问题离题