I have read在Simulink模型中使用Matlab函数会严重影响其性能。建议使用MATLAB Function块而不是解释的MATLAB功能块。
在将模型编译为C以便在xPC目标计算机上使用时,我不清楚这是如何应用的。我是否因为M脚本而遭受某种惩罚,或者我最好使用普通的Simulink模块来解决同样的问题?
答案 0 :(得分:1)
由于使用MATLAB功能块,不应该有任何惩罚。在编译模型时,MATLAB函数块将其MATLAB代码编译为C,就像其他Simulink块一样。
我会根据建模问题的最佳方式选择。例如,如果您的算法需要太多的控制流语句或循环,则更容易在MATLAB功能块中对其进行编码。你可以随时混合使用。
答案 1 :(得分:1)
您提供的链接并未真实地说明或暗示在Simulink模型中使用Matlab功能会严重影响其性能"。 它可以在某些情况下,但在许多情况下,它与内置块一样快。
每次需要评估时(即每个步骤),解释的MATLAB功能块都会调用MATLAB。这使得它变慢(相对于其他技术)并且还防止它被用于任何c代码生成目的(即xPC使用的Simulink Coder)。
MATLAB函数块中的m代码使用定义为coder.extrinsic的函数受到与上述相同的限制并且可能很慢。
MATLAB中的m代码嵌入式NATLAB子集中的功能块(即简单的数学和矩阵操作)转换为C代码并进行编译(使用Simulation时和在c代码生成中使用时)。 在模拟和代码生成中,您应该看到与使用标准块类似的性能。
菲尔。