matlab中基于c语言的s函数的编写与应用

matlab中基于c语言的s函数的编写与应用

ID:33585068

大小:606.19 KB

页数:17页

时间:2019-02-27

matlab中基于c语言的s函数的编写与应用_第1页
matlab中基于c语言的s函数的编写与应用_第2页
matlab中基于c语言的s函数的编写与应用_第3页
matlab中基于c语言的s函数的编写与应用_第4页
matlab中基于c语言的s函数的编写与应用_第5页
资源描述:

《matlab中基于c语言的s函数的编写与应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Matlab中基于C语言的S函数的编写与应用作者:ZhengSimin单位:WHU摘要:Matlab/Simulink中提供了S函数模块,可以实现和C语言和其它语言的程序混编,将C语言和Matlab的强大的仿真能力及数据可视化能力进行了有机结合,可以极大地方便一些以C语言为基础的工程应用的算法仿真和数学实验的进行。本文将对Matlab中基于C语言的S函数的应用及编写方法行相关介绍。关键字:Matlab;S函数;C语言1Matlab的S函数简介“S-函数是系统函数(SystemFunction)的简称,是指采用非图形化的方式(即计算机语言,区别于Simulin

2、k的系统模块)描述的一个功能块。Simulink没有单独的语言,但它提供了S函数规则。所谓的S函数可以是一个M文件、FORTRAN程序、C或C++语言程序等,通过特殊的语法规则使之能够被Simulink模型或模块调用。S函数使Simulink更加充实、完备,具有更强的处理能力。S-函数作为与其他语言相结合的接口,可以使用这个语言所提供的强大能力。例如,Matlab语言编写的S-函数可以充分利用MATLAB所提供的丰富资源,方便地调用各种工具箱函数和图形函数;使用C语言编写的S-函数可以实现对操作系统的访问,如实现与其他进程的通信和同步等。Simulink已经

3、提供了大量的内置的系统模块,并且允许用户自定义模块,对于大多数动态系统仿真分析语言,使用Simulink提供的模块即可实现,而无需使用S-函数。但是,当需要开发一个新的通用的模块作为一个独立的功能单元时,使用S-函数实现则是一种相当简便的方法。另外,由于S-函数可以使用多种语言编写,因此可以将已有的代码结合进来,而不需要在Simulink中重新实现算法,从而在某种程度上实现了代码移植。此外,在S-函数中使用文本方式输入公式、方程,非常适合复杂动态系统的数学描述,并且在仿真过程中可以对仿真进行更精确的控制。”具体详细的一些介绍在此不再赘述,本文结合自身的项目经

4、历,推荐一种S函数的用处:Matlab中嵌入其它代码,例如C代码,并参与算法的仿真,然后利用Matlab丰富的图形生成接口函数来实现数据的可视化。备注:本文在所涉及的Matlab版本:Matlab.R2010b2一个S函数仿真例子1在正式对S函数进行介绍前,先看一个例子,这个例子是对网络的随机延时环境进行算法模拟,能够对输入的正常的时钟信号产生0.2s到0.7s不等的随机延时。本小节采用“从整体到局部,从结果到原因”的方式对此示例进行介绍。用数字程序建立一个随机延时为0.3s到0.6s不等的网络随机延时环境,所涉及的Simulink仿真程序结构如图2-1所示

5、。UnitDelayScope1RandomTimeDelayzsimoutClockS-Fun-TimeDelayToWorkspace图2-1网络随机延时仿真这是一个比较基本的S函数的仿真应用结构图,采样周期设置为0.1s。整个仿真图的采样周期在解算器里面设置,单个仿真图的采样周期双击本模块,在如图2-2的界面中对“Sampletime”进行设置即可。图2-2设置模块采样周期在图2-1所示的网络随机延时仿真程序中,输入一个时钟模块,然后经过一个单位的延时(单位延时的大小等于采样周期),然后再经过网络随机延时的S函数模块(程序代码见附录<一>),然后再对S

6、函数模块输入输出的两路信号合并在同一坐标系下输出。输出的模块有两种,“Scope”数字示波器模块和“ToWorkspace”数据导出模块。“Scope”可以直接将数据在坐标系下进行可视化显示,可以实现坐标轴不同级别的缩放,如图2-3所示;“ToWorkspace”则将数据以指定的变量名称存放在工作区间中,然后在工作区间中可以编写相应的程序直接对此数据进行引用。2图2-3“Scope”整体图(左)和局部放大图(右)因为“Scope模块”默认的输出是黑底背景色,这些图片数据放置到论文中采用黑白打印时,完全是漆黑一片,为此可以采用一些处理方式:在Matlab的命令

7、输入区域输入命令:“set(0,'ShowHiddenHandles','On');set(gcf,'menubar','figure')”然后“Scope图”就变成“Figure图”了,并配备了相应的修改菜单,通过修改“【Edit】—【AxesProperties】”然后就可以调出修改菜单,对坐标系统进行显示参数修改。在对“背景色、标尺颜色、曲线显示样式、坐标轴标记„„”进行修改后,图2-3就变成如图2-4的效果了(直接输出的是矢量图)。Delay(s)Times(s)图2-4“Scope”虚拟示波器图形变换如果需要对输出数据进行程序引用,则可以使用“To

8、Workspace”模块将数据引出到工作区间中,在仿

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。