(4条消息)在Simulink中对S函数进行参数传递的三种方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(4条消息)在Simulink中对S函数进行参数传递的三种方

1)之前在调程序的时候,用的都是S函数来进行编写的,但是因为需要对不同的系数设置不同的值,然后看仿真的结果。

一开始仿真的时候只会在S函数的文件中修改相应变量的值,每次都要在几个文件中修改四五个值,然后进行仿真。

2) 上一种的方法实在是太麻烦了,后来经过在MATLAB中文论坛中查找相应的资料和看了孙忠潇老师的书之后,开始会利用S函数的属性页中的对话框(如图1所示)进行参数变量的传递,然后把模型中涉及的S函数中的变量全部写到一个M脚本文件中(脚本文件),每次仿真程序的时候,先运行这个M文件,然后就可以仿真了,这个好处在于可以成批量的修改参数,如何设置可以参考用Simulink进行仿真遇到的一些问题以及相应的解决方法整理。

需要注意的是用这个方法之后是不需要再S函数中定义变量了,直接使用变量名就可以了。

为什么这里要强调是M脚本文件呢?因为脚本文件中的值自己运行之后,其值会直接输出到工作区间中,固然用M 函数文件也可以输出到工作去年中,但是M函数文件默认是只输出一个变量的,如果在调用的时候你要输出多个变量的话,那么就需要指定输出变量的名称,这样的话相比M脚本文件麻烦了许多的。

但是在有的情况还是可以使用的。

正如这段代码一样:
A=2;
B=3;
C=4;
在直接运行M脚本文件的时候是可以在工作区间看到这三个变量的,但是如果使用M函数的时候是这样的:[A,B,C]=MFunctionfile_name。

但是这种方法还是不能对S函数中的参变量进行自动的修改并且仿真。

目前发现对于S函数模块可以利用get_param来获取参数,但
是好像并没有什么用。

相应的命令是get_param(‘model_name/S-Function4’,’Parameters’),但是得到的是你设置的变量名称,并不是变量的值。

而且当你使用Set_param时也可以对S函数的参数变量这一栏进行修改,但是修改之后你原来设置的参数名称也都没了。

3)后来在无意中对一个示波器进行创建子系统的操作(因为我们不会无聊到对一个模块来创建子系统吧),就在想是不是也可以对S 函数模块进行这种操作,因为操作子系统之后就可以使用Set_param 函数来设置参数变量了。

然后就验证了一个发现是可以这样做的。

验证的模型框图如图2所示,图3是自己写的一个S函数,图4是采用第二种方法来传递参数变量的,图5是采用第三种方法来传递参数变量的。

对S函数模块创建子系统还是需要在图4的基础中进行创建。

最终的结果如图6所示,两种方法的结果是不同的。

在MATLAB中采用M文件实现对Simulink中的S函数程序实现自动调参数
图1 S函数模块属性页
图2 仿真模型图
图 3 S函数
图4 第二种方法S函数模块属性页
图5 第三种方法S函数属性页
图6 最终实验结果图。

相关文档
最新文档