simulink中 Data store memory、write和read模块及案例介绍

目录

1.Data store memory模块

2.data store write模块

 3.data store read模块

4.仿真分析

4.1简单使用三个模块

 4.2 模块间的调用顺序剖析


1.Data store memory模块

 向右拖拉得到Data store read模块,向左拉得到Data write模块

理解:可视为定义变量的作用,如下定义数组A=[1 2 3 4 5 6 7 8 9 10]

2.data store write模块

默认写所有状态,即需要提供一个10维的行向量作为写的变量,也可以单独写某个或某几个变量,如下:

 3.data store read模块

同理,定义输出数组的第二个元素

4.仿真分析

4.1简单使用三个模块

 4.2 模块间的调用顺序剖析

可以看到这里写了两次数据,但是读取的是22,为什么不是11?或者先写一个再读还是怎么回事?

在debug中查看执行顺序,方法如下图所示: 

可以看到是先写再读,最后才是储存,且先写11后写12,所以读取的是22,储存的也是22. 

总结:

①写→读→存;

②这样可以理解为先声明变量,再写→读。

参考链接:

Simulink 进阶教程 P1 Data Store Memory/Read/Write 模块使用介绍_哔哩哔哩_bilibili

### 如何在Simulink中存储读取全局数据 为了实现全局变量的定义以及其在整个模型中的访问,在MATLAB/Simulink环境中可以采用多种方法来处理全局数据。一种常见的方式是通过`Simulink.Signal`对象配合使用`Data Store Memory`模块,这允许创建可以在不同子系统间共享的数据存储区[^2]。 对于希望利用全局变量的情况而言,可以直接在基础工作区(Base Workspace)设置这些变量,这样做的好处是在整个仿真过程中任何地方都能方便地获取到它们的值。具体操作如下: - **设定全局变量** 可以先启动MATLAB命令窗口并输入相应的赋值语句给定目标变量名及其初始值;或者编写脚本文件(.m),其中包含一系列这样的声明,并执行该脚本来完成初始化过程。 ```matlab global myGlobalVariable; myGlobalVariable = 10; % Example value assignment ``` - **存取全局变量** 当需要在一个S函数、Stateflow图或是其他支持自定义代码的地方引用已定义好的全局变量时,则需再次声明此变量为`global`属性以便于识别。例如,在一个嵌入式的MATLAB Function Block内部可按下面方式写入代码片段来进行读/写操作: ```matlab function y = fcn(u) %#codegen global myGlobalVariable; % Read from the global variable tempValue = myGlobalVariable; % Perform some operations... % Write back to the global variable if necessary myGlobalVariable = u * 2 + tempValue; end ``` 值得注意的是,虽然这种方法简单易行,但在大型项目里过度依赖全局变量可能会降低系统的可维护性清晰度。因此建议仅当确实有必要跨越多个独立组件传递信息时才考虑这种做法,并尽可能采取更结构化的通信机制如信号线或参数化接口等替代方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr. 邹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值