用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);

}

如下图所示

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.

函数meanstats在Model Hierarchy(模型层次结构)窗格中高亮显示。"内容"窗格显示输入参数vals和输出参数meanout。默认情况下,两者都是double类型的标量。

9.双击"Size"列下的vals行,将vals的大小设置为4。

10.回到chart中,双击函数stdevstats并重复前两个步骤。

11.返回模型资源管理器的"模型层次结构"窗格,选择"Chart "并添加以下数据:

添加数据后设置一下输入输出口就好了。此处要注意右边chart窗口中的action语言是matlab,不要选成c,不然会报错。

最后将模型连接起来就可以运行了。

相关推荐
没钥匙的锁13 分钟前
16-Java反射机制:Spring IOC背后的核心技术
java·开发语言·spring
起予者汝也19 分钟前
Python 数据结构
开发语言·数据结构·python
ECT-OS-JiuHuaShan2 小时前
严格证明:还原论是ASCII,整体论是UTF-8的历史意义和价值
开发语言·人工智能·算法·量子计算
AC赳赳老秦2 小时前
时间开销自动统计:OpenClaw 记录工作任务时长、分析时间分配、给出优化建议
java·大数据·开发语言·python·自动化·deepseek·openclaw
祉猷并茂,雯华若锦2 小时前
Appium 3.x 实战:元素定位与常见错误解析
开发语言·python·appium
Lethehong3 小时前
飞算Java:从需求梳理到风险闭环,搭建云盾企业信息安全与权限管理平台
java·开发语言
爱喝水的鱼丶3 小时前
SAP-ABAP:ALV数据导出增强——实现Excel/PDF/CSV多格式自定义导出
开发语言·性能优化·sap·abap·erp
Mortalbreeze3 小时前
深入理解 Linux 线程机制(四):线程同步——条件变量与信号量
linux·运维·服务器·开发语言·c++
不会c+3 小时前
C语言:入门到精通(408考研版)系列七 派生的数据类型
c语言·开发语言
不定积分要+C_yyy4 小时前
Java基础核心精讲:基本数据类型与包装类区别、自动装箱拆箱与缓存陷阱实战解析
java·开发语言