声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 8980|回复: 3

[求助]Matlab Fcn和S-Function、Embedded Matlab Function的区别

[复制链接]
发表于 2006-10-21 15:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请问各位前辈:
回复
分享到:

使用道具 举报

发表于 2006-11-20 04:19 | 显示全部楼层
Matlab Fcn"Matlab语言格式的任意函数

Embedded Matlab Function:嵌入式 MATLAB

S-function:(system function)乃是MATLAB所提供用来描述动态系统的程式
语言,其可以用MATLAB或C语言写成.S-function主要功能是,当使用者所需
使用之功能是SIMULINK现成方块图所无法提供,使用者可以利用S-function,
依照自我需求设计一符合SIMULINK环境之方块图.在这里必须注意的是,如果
所写成之S-function最後将利用RTW转成可即时执行之程式码,则S-function
可以只使用C语言撰写.
发表于 2006-11-21 07:42 | 显示全部楼层
Math Function(数学函数)

(1)模块功能
执行一个数学函数.
(2)模块说明
Math Function模块执行许多普通的数学函数.
可以从Function列表框中的这些函数中选择一个以;exp,log,10^u,log10,magnitude
^2.square,sqrt,Pow,reciprocal,hypot,rem和mod.该模块的输出是对输入执行指定函数
运算的结果.
函数的名字显示在模块的图标中.simulink自动地画出适当数目的输入端口.
需要输出向量化的输出时应使用Ma小Fucntion模块而不是Fcn模块,因为Fcn模
块只能产生标量输出.
(3)模块数据类型
该模块接受实数或复数值信号或双精度类型信号向量.输出信号类型依据输出信号
类型参数设定,为实数或复数.


  1. Fcn(函数表达式)
  2. (1)模块功能
  3. 对输入应用一个结定的表达式.
  4. (2)模块说明
  5. Fcn模块对其输入使用指定的c语言风格描述的表达式.表达式可以用一或多个如下元素组成:
  6. 1)M:模块的输入.如果u是一个向量,u(i)表示向量的第i个元素,u(1)或者u表示第一个元素.
  7. 2)数字常量.
  8. 3)算术运算符(+,-,*,/)
  9. 4)关系运算符(==,!=,>,<,>=,<=),如果表达式运算结果为真时返回1,否则返回0;
  10. 5)逻辑运算符(&&,||,!)如果表达式运算结果为真时返回1,否则返回0;
  11. 6)圆括号.
  12. 7)数学函数:abs,acos,asin,atan,atan2,ceil,cos,cosh,exp,fabs,floor,hypor,ln,log,
  13. log10,pow,power,rem,sign,sin,sinh,sqrt,tan和tanh.
  14. 8)工作空间变量,不能被识别为上面所列出的各项的变量名将传给MATLAB求值.矩阵和向量的元素必须被指明(例如矩阵的第一个元素用A(1,1)而不是A).
复制代码



  1. s函数最通常的用法是创建一个定制的Simulink模块.可以在许多应用程序中使用s函数,包括:
  2. 1)在Simulink中加进新的通用模块,
  3. 2)将已存在的C代码合并入一个仿真中;
  4. 3)将一个系统描述为一系列的数学方程;
  5. 4)使用图形动画.
  6. 使用s函数的一个优点是可以创建一个通用的模块,在棋型中可以多次使用它,使用时只需要改变它的参数值即可.
复制代码

一般来说,尽量用Fcn函数,Matlab Fcn可以用Matlab的语法进行编辑,但其仿真时需要进行编译,因此速度较Fcn慢。
S函数则和上面两种模块没什么直接联系,它是用matlab或c语言编写有特殊需要的模块。


以上来自研学天依
 楼主| 发表于 2006-11-30 11:52 | 显示全部楼层
谢谢您,介绍的非常详细,有点领悟了。
我在做毕业设计,要做控制系统的仿真,里面有一个关于模糊神经的控制器,S-Function看着晕晕的,打算用Matlab Fcn编写。
再请教个问题:我用现场采集的数据仿真,是个反馈系统,仿真输入数据共5个,其中4个来自采集好的现场数据,1个为仿真出来的结果,请问这样怎样输入数据呢?
想来想去没有找到合适的办法,我想把4个现场数据写成4个mat文件,用一个带5个输入(另一个输入就是仿真系统反馈)的mux给Matlab Fcn模块传值,这样是不是很麻烦啊?有更好的办法吗?
谢谢。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-29 13:03 , Processed in 0.062276 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表