Simulink!matlab用户自定义函数中的函数有区别吗?
Simulink中有几个用户定义的功能模块:
Fcn:适合简单的表达式。所谓简单,并不一定是指表达式短,而是指输入输出的关系可以直接用一个表达式来描述,即既不使用状态,也不使用过程控制,需要注意的是表达式中可用的函数是有限的(基本上是一些简单的数学函数)。可以生成c代码。
MATLAB Fcn:可能很多人对这个模块的掌握比较好。这个模块对应一个M文件,输入信号经过任何处理都可以输出。可以使用MATLAB的任何函数。主要有两个限制:(1)不能生成代码,所以准备做控制原型或者半实物仿真的人尽量避免使用;(2)原则上不能使用状态变量,也就是说只能对当前时刻的输入进行计算处理得到输出,而不能使用前一时刻的信息——如果需要使用前一时刻的信息,一般需要配合使用其他外部模块(如积分器或单位延迟)。
嵌入式MATLAB Fcn:类似于MATLAB Fcn,区别如下:(1)可以生成C代码;(2)要求比MATLAB Fcn严格很多,很多函数或工具箱不允许在EMF中使用(由于代码生成的限制);(3)模块本身支持多输入多输出。
S-Function:这是Simulink最难也是最强大的自定义模块,原则上可以用来实现Simulink的任何模块的功能。S函数与前面的模块最大的区别在于它可以使用状态,根据仿真过程将代码分成几个部分:初始化、计算导数(积分由Simulink系统完成)、更新状态、计算输出、终止处理(仿真过程中周期性调用其中的几个),这给了用户很大的自由度来组织代码。s函数可以用C语言或M语言实现,M语言有不同的层次。写S函数有相应的模板和例子,想学也要花点时间去理解。
一点个人经验,在思考和写作的同时,不保证绝对准确,但应该不会有大的错漏。希望对楼主有帮助。