0

MATLAB Coder 看起来很花哨,可以通过将代码转换为 C/C++ 或 MEX 来大大加快 MATLAB 代码的速度。但它似乎不支持稀疏矩阵,或者sparse对我的代码至关重要的 matlab 函数。有谁知道如何克服这个问题?非常感谢!

4

3 回答 3

1

特征库可用于处理 Matlab 函数稀疏,它是 c 语言。

正如“libill”所说,您还可以为 MATLAB 代码的部分生成 MEX 代码,这些代码不使用稀疏来加速这些部分。

对于稀疏部分,请使用上述库。

于 2014-05-30T05:31:49.880 回答
0

我只是不确定你所说的转换是什么意思。我假设您的意思是编写自己的 mex 函数。稀疏包通常以不同的方式处理稀疏矩阵,Matlab 也有其独特的方式来处理它们。然而,他们大多使用 CSC(或 CSR)格式。Matlab 也将矩阵保存为 CSC 格式。

您可以查看许多稀疏包的 mex 函数以了解它是如何完成的。关键是 Matlab 不会让您在其稀疏数据结构中保存显式零。不要尝试在 Matlab mex 函数上保存显式零。Matlab 会让你窒息!

于 2019-04-24T05:31:37.103 回答
0

我对 Matlab 编码器的理解可能是错误的,但我认为它是将您的 Matlab 代码转换为 C/C++ 代码的工具。我不确定性能优化是 Matlab 编码器的目标。

看看suitesparse。它是一个处理大量稀疏操作的 C 库。稀疏矩阵情况下的Matlab“\”运算符实际上使用suitesparse。所以我认为你修改 Matlab 生成的 C 代码可能更容易。

HTH

于 2018-08-13T22:00:47.390 回答