用MATLAB函数在图表中建立模型

本节介绍如何使用Stateflow®图表创建模型,该图表调用两个MATLAB®函数meanstats和stdevstats。meanstats计算平均值,stdevstats计算vals中值的标准偏差,并将它们分别输出到Stateflow数据平均值和stdev。

请遵循以下步骤:

1.使用以下块创建新模型:

2 保存模块

3 然后双击chart模块进入

4.使用左侧工具栏上的此图标将两个MATLAB函数拖动到空图表中:

带有闪烁光标的文本字段出现在每个MATLAB函数的中间

5 如下图所示

您必须用MATLAB函数的签名来标记它。使用以下语法:

return_val1,return_val 2,...\]=function_name(arg1,arg2,...) 注意:对于只有一个返回值的MATLAB函数,可以省略签名标签中的括号。 6.在图表中,使用以下条件操作绘制一个默认过渡到终止接点: { mean=meanstats(invals); stdev=stdevstats(invals); } 如下图所示 ![在这里插入图片描述](https://file.jishuzhan.net/article/1748524663379595265/4d02a4431b0bc801f17dfd8ca067d1c0.webp) 7 然后双击meanout fuction模块,这时候会跳到matlab的编辑器界面。 输入以下代码 ```matlab function meanout = meanstats(vals) %#codegen % Calculates the statistical mean for vals len = length(vals); meanout = avg(vals,len); coder.extrinsic('plot'); plot(vals,'-+'); function mean = avg(array,size) mean = sum(array)/size; ``` %#codegen编译指令有助于检测代码生成支持的MATLAB®函数在编译时违反语法和语义的情况。 函数length是代码生成所支持的内置MATLAB函数的一个示例。您可以直接调用此函数来返回其参数vals的向量长度。当您构建模拟目标时,函数长度是用生成的C代码实现的。 回想一下,您声明plot是一个外部函数,因为代码生成不支持它。当MATLAB函数遇到外部函数时,它会将调用发送到MATLAB工作空间,以便在模拟过程中执行。 然后双击stdev function模块进入,输入以下代码 ```matlab function stdevout = stdevstats(vals) %#codegen % Calculates the standard deviation for vals len = length(vals); stdevout = sqrt(sum(((vals-avg(vals,len)).^2))/len); function mean = avg(array,size) mean = sum(array)/size; ``` 这样计算平均值和标准偏差的函数就创建好了。 8.然后选择 Tools \> Model Explorer 打开 Model Explorer. ![在这里插入图片描述](https://file.jishuzhan.net/article/1748524663379595265/4705d653513101d77eba46104c87a982.webp)函数meanstats在Model Hierarchy(模型层次结构)窗格中高亮显示。"内容"窗格显示输入参数vals和输出参数meanout。默认情况下,两者都是double类型的标量。 9.双击"Size"列下的vals行,将vals的大小设置为4。 10.回到chart中,双击函数stdevstats并重复前两个步骤。 11.返回模型资源管理器的"模型层次结构"窗格,选择"Chart "并添加以下数据: ![在这里插入图片描述](https://file.jishuzhan.net/article/1748524663379595265/31e3bb7814081f5e51787453bb2e9fdf.webp)添加数据后设置一下输入输出口就好了。此处要注意右边chart窗口中的action语言是matlab,不要选成c,不然会报错。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1748524663379595265/2c2406676bb5078695afbc1803c67c62.webp) 最后将模型连接起来就可以运行了。 ![在这里插入图片描述](https://file.jishuzhan.net/article/1748524663379595265/3009f90cad291affa5308da0ab2d32f4.webp)

相关推荐
未来之窗软件服务3 分钟前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
小冯记录编程18 分钟前
C++指针陷阱:高效背后的致命危险
开发语言·c++·visual studio
1uther39 分钟前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
C_Liu_1 小时前
C++:类和对象(下)
开发语言·c++
coderxiaohan1 小时前
【C++】类和对象1
java·开发语言·c++
阿幸软件杂货间2 小时前
Office转PDF转换器v1.0.py
开发语言·pdf·c#
扯淡的闲人2 小时前
多语言编码Agent解决方案(5)-IntelliJ插件实现
开发语言·python
丑小鸭是白天鹅2 小时前
Kotlin协程详细笔记之切线程和挂起函数
开发语言·笔记·kotlin
sali-tec2 小时前
C# 基于halcon的视觉工作流-章34-环状测量
开发语言·图像处理·算法·计算机视觉·c#
java搬砖工-苤-初心不变2 小时前
基于 lua_shared_dict 的本地内存限流实现
开发语言·junit·lua