2023-12-25 02:39来源:m.sf1369.com作者:宇宇
这两个的区别是fcn只能是一个函数表达式,把传进模块的数据u,按函数表达式进行计算。假如输入的数据u是一个2*1的向量,我们可以定义如下函数sin(u(1)*exp(2*(-u(2))))而Matlab fcn是在模块中填入一个函数名以及参数列表,这个函数可以是M文件,也可以是匿名函数等,但是要是这个函数只能返回一个参数。比如,myfun(u(1),u(2),u(3))简单的说fcn的功能比较简单,只能完成一个简单数学表达式的数学计算。而matlab fcn是在调用一个函数,这个函数可以简单也可以复杂
你把你的代码复制一份,然后在模型中拖出一个Fcn模块。双击模块弹出m文件编写界面。复制进去就行了。 在这里就可以编写函数了
先把你的.fis文件加载到workspace,假设你的是文件时 fuzzy.fis 用 f=readfis(‘fuzzy.fis’),然后在fuzzy logic controller 中写上f
1、你的问题本身就存在疑问:用t1<0和t2<0这两个条件来划分,既不完备,又存在重合。
比如说,t1<0同时t2<0,输出怎么算?如果t1>=0同时t2>=0,又该怎样算?
2、sfuntmpl是Level-1 S函数的模板,不支持多输入多输出,如果要实现多输入多输出,需要在S函数的接口上用向量,然后在输入端和输出端分别用Mux和Demux进行预处理和后处理。
3、从功能需求看,完全没必要使用S函数来编,使用MATLAB Fcn模块就足够了。