2. 双击新添加的S-Function Builder实例,在其属下对话框选择“Data Properties”,配置好输入输出端口。以输入端口为例,Input ports为输入端口,点击左侧的箭头符号可添加端口。
3. 双击端口名“Port name”可修改端口名称,同时还可修改端口
可以直接用polyval([1 0 3 4],0),由于你这个是多项式,很好处理的
如果是不能写成矩阵系数的非线性函数,相对就麻烦一点了
比如y=sin(x)+x^2,要求x=0处的值,可以这样求,
f=inline('sin(x)+x^2','x')%表示符号函数
y=f(0)%将x=0带入符号函数中,求符号函数的值
如果你要问的只是function的用法,那么需要另外建立一个单独的文件,相对来说不如上述方法简单。
function的用法是
1新建一个m文件
function f=f(x)
f(1)=x^3+3*x+4%f(1)表示第一个方程,如果还有可以追加f(2),一次类推,当然只有一个时f(1)可以简写成f。
2将其保存为f_x.m
2在matlab命令窗口中直接调用f_x(0)就可以了
>>f_x(0)
ans =
4
S-Function是system-function的缩写。S-Function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。
MEX函数与M文件的区别
第一
MEX 函数能实现的回调函数比M-文件能实现的回调函数要多得多;
第二
MEX 函数直接访问内部数据结构SimStruct,SimStruct 是Simulink 用来保存关于S-function 信息的一个数据结构;
第三
MEX 函数也可使用MATLAB MEX 文件API 直接来访问MATLAB 的工作空间。
如果一个C MEX文件与一个M文件具有相同的名字,则C MEX文件被优先使用,即在S-Function块中使用的是C MEX文件。
例如要创建一个有1输入(2维),2输出(1维),3个参数,还有全局变量的S-Function。
过程如下:
打开simulink,点击User-Defined Functions里面的S-Function Examples。这个里面有多个语言版本的模板,有C,C++,Ada,Fortran和M语言的版本,其实都大同小异,只要了解几个函数就很容易使用了。 选择C语言的版本:从S-function模块中选择C-file S-functions里面的Basic C-MEX template。打开后,另存为自己的模块名字,如test.c 。然后分析代码
b编译在matlab的command window里面输入“mex test.c”,即可将test.c编译为mex文件。
c.调用sfunction在simulink空间里面拉入sfunction,在s-function name里面填入test,参数里面填入要设定的参数,然后仿真即可。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)