MATLAB编码器:稀疏矩阵

时间:2014-04-24 20:43:42

标签: c++ c matlab sparse-matrix matlab-coder

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

3 个答案:

答案 0 :(得分:1)

eigen library可以用来处理稀疏的Matlab函数,它是用c语言编写的。

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

对于库以上的稀疏部分使用。

答案 1 :(得分:0)

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

看看suitesparse。它是处理许多稀疏操作的C库。对于稀疏矩阵,Matlab“ \”运算符实际上使用suitesparse。因此,我认为修改Matlab生成的C代码可能更容易。

HTH

答案 2 :(得分:0)

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

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