MATLAB 中具有稀疏性的任何 C++/C 等效函数

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

我尝试将 m 代码移植到 ccpp

在我的代码中有一行

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

将行索引 I、列索引 J 和数据 IA 转换为大小为 nR x nC.[=20= 的稀疏矩阵 A ]

是否有任何与 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++ 矩阵库。 None 作为 std 的一部分发布,也没有内置任何内容。

写一个好的稀疏矩阵库会很困难;你最好的选择是找到一个预先写好的。推荐题跑题了