Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 用一级S函数求解线性方程组与Matlab编码器的比较_C++_Matlab_Simulink_Matlab Coder - Fatal编程技术网

C++ 用一级S函数求解线性方程组与Matlab编码器的比较

C++ 用一级S函数求解线性方程组与Matlab编码器的比较,c++,matlab,simulink,matlab-coder,C++,Matlab,Simulink,Matlab Coder,我有一个matlab 1级s函数,我用它来解线性方程组。不幸的是,我的模拟速度非常慢,而且探查器报告告诉我,这个特殊的s函数非常耗时。由于我可以访问MATLAB编码器,所以我有机会把我的S-函数转换成C++代码。然而,它并不那么简单,因为到Matlab sFube的信号是可变大小的,并且需要一些努力来实现C++中的相同的东西(虽然我知道它可以完成)。 在开始之前,我想问一下,所有CMEX代码的运行速度是否都比1级s函数快?尤其是使用codegen生成的代码?更重要的是,反斜杠运算符在CMEX中是

我有一个matlab 1级s函数,我用它来解线性方程组。不幸的是,我的模拟速度非常慢,而且探查器报告告诉我,这个特殊的s函数非常耗时。由于我可以访问MATLAB编码器,所以我有机会把我的S-函数转换成C++代码。然而,它并不那么简单,因为到Matlab sFube的信号是可变大小的,并且需要一些努力来实现C++中的相同的东西(虽然我知道它可以完成)。
在开始之前,我想问一下,所有CMEX代码的运行速度是否都比1级s函数快?尤其是使用
codegen
生成的代码?更重要的是,反斜杠运算符在CMEX中是否以相同的速度工作?

反斜杠运算符在c中根本不起作用——它纯粹是一种m代码语法。如果可能的话,您最好将代码转换为使用MATLAB函数块(它支持将mldivide(即反斜杠)转换为c代码)。您好,PhilGoddard,是的,这是我的计划。通常,我在matlab level-1中编写一个s函数,因为这样很容易调试。之后,我去掉了其中的s函数部分,将所有内容复制到一个典型的matlab.m函数中。然后我使用Matlab编码器,让它为我做转换。最后,我为它编写了一个包装器代码,并使用
mex
函数将所有内容编译成CMEX。这就是我的计划,需要注意的是,我需要合并可变大小的信号。为什么不把它写在一个MATLAB函数块中,这与标准m代码函数略有不同,并且不需要使用MATLAB编码器?以我的经验,这会进一步减慢我们的模拟速度,由于我们有一些内部库,这些库也需要从s函数中调用。我们最终不得不使用
coder.extrinsic
很多,结果就是没有那么快。