matlab中全局变量的作用域,在simulink中使用全局变量的方法
需求: 我们需要在simulink的一些模块中共用一些变量,尤其是在Simulink里面的Matlab Function模块中共同使用变量,若干个Matlab Function都可以读取该变量,同时又可以对该变量进行修改。 如果采用常规方法,会比较繁琐,要对该变量同时定义输入和输出,并且连线也会比较复杂。
解决: 在Simulink中定义某些变量是全局变量,在Matlab Function中调用时只要声明该变量是全局变量,并且附加一些特殊的处理,就可以对改变进行读写操作。
下面有一个简单的例子,来说明具体的操作方法
上面图中的Pulse Generator是一个方波发生器,每隔1s发送一个方波,触发Triggered Subsystem,Triggered Subsystem里面是一个计数器,记录给模块触发的次数,该Subsystem的内容见下图。
下面是一个Matlab Function输出Triggered Subsystem里面计数器的值给一个Display模块。
Data Store Memory就是今天要讲的一个关键,马上就要讲到了,耐心点。
在这个例子中很明显就用到了一个全局变量(当然也可以不用全局变量实现,但这不是今天的重点),Triggered Subsystem中对该全局变量进行计数,在外层的Matlab Function中读取这个全局变量。这个全局变量在本例子中为glb_data。
Triggered Subsystem中的Matlab Function中的内容
function countglobal glb_data;glb_data = glb_data + 1;1
2
3
4
5
外层的Matlab Function中的内容function y = show_countglobal glb_data;y = glb_data;1
2
3
4
5
各位看官想必已经清楚了,原来是这样,原来就在Matlab Function中加一个global 声明一下该全局变量,然后在外层模块中放一个Data Store Memory就行了(这个模块其实就在Simulink基本库中的Signal Routing组下面,关于这个模块的作用范围,大家看其帮助吧)。你如果只这样做,还是会出错的!!!!哈哈哈。
大家还要在Model Explore中(或者在Matlab Edit里面,点击右上角附近的Edit Data),对应的Matlab Function模块下,添加一个glb_data数据,并且声明该数据的Scope是Data Store Memory。
好了,这个方法告诉大家了。这个问题曾经纠结过我好久,我也曾试过其他方法解决,这个方法是最方便的,但是最好不要在大项目中过度使用,因为这种方法没有清晰的输入输出接口,阅读项目的人不容易看懂该模块的作用。
matlab中全局变量的作用域,在simulink中使用全局变量的方法相关推荐
- MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统
在Simulink中训练DDPG控制倒立摆系统 倒立摆的Simscape模型 创建环境接口 创建DDPG智能体 训练智能体 DDPG智能体仿真 此示例显示了如何训练深度确定性策略梯度(DDPG)智能体 ...
- matlab中如何停止clock,关于simulink中clock的问题
今天在搭建fft模块的时候出现了这样的问题. 模块如下 用scope看第一个product后面cos和sin信号的时候发现 发现不是正弦波 后再王董的指引下分析,搭建了下面的模块 其中换色5*k*cl ...
- matlab中scope是什么,关于simulink中scope参数设置的总结
示波器 关于sampling中decimation:按输入信号的个数抽样.(个数以信号源的Ts抽样周期为单位) sample time:按时间抽样. sample time=decimation*信号 ...
- MATLAB的仿真工具箱Simulink中常用的模块库总结
MATLAB的仿真工具箱Simulink中常用的模块库 Simulink中常用的模块库主要包括如下几种. (1)信宿(Sinks)模块库:包括显示或将输出回写的模块. Display 显示输入的值: ...
- C语言中变量的作用域
C语言中变量的作用域 C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同.C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量. 一.局部变量 局部变量也称为内部变量. ...
- pwm调制 matlab仿真,PWM脉冲调制直流电机的simulink仿真
PWM脉冲调制直流电机的simulink仿真 仿真模型构建 电机原理 直流电机的4个动态特性方程式分别为: 对上述式子去拉普拉斯变换并整理得: 其中 T c T_c Tc为电机轴上的总阻转矩.画出电 ...
- matlab fft simulink,在Simulink中复制MATLAB的FFT?
很抱歉也许不准确地说出这个问题,但我对Simulink和Stack都很新 . 我正试图在simulink中处理语音信号,就像我在Matlab中所做的那样,我的输出有问题 . 在Matlab中,FFT看 ...
- 【Matlab 控制】批量修改大型 Simulink 模型中模块的属性
批量修改大型 Simulink 模型中模块的属性 一.通过Simulink自带的搜索 二.通过命令行进行搜索替换 三.使用Model Explorer编辑属性 在大型Simulink建模中,需要进行某 ...
- Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block ‘**/matlab function/sfunction‘ is in an
Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block '/matlab function/sfunction' is in an in ...
- C#中变量(成员变量、局部变量、全局变量)的作用域
不管在任何编程语言中都有变量的定义,变量就像是一个容器,不同的变量会在内存中占据不同大小的内存空间.定义变量后会将分配的地址绑定在这个变量名上,以后对该变量名的操作就是对该内存地上存储内容的操作. n ...
最新文章
- 2560x1600分辨率高吗_手机屏幕分辨率真的越高越好?它的好处和坏处你知道吗?...
- 算法设计与分析 2 二维递推间接递推递归分析
- zk Acl权限:只有一个账号有crdwa权限,匿名用户只有r权限
- nagle算法和延迟ACK
- 浅谈.NET中的类型和装箱、拆箱原理
- 龟兔赛跑——多线程练习
- 【AC Saber】高精度
- 简单java题_java
- 5G NR 随机接入过程(1)
- 【C#桌面应用】第五节:制作简单的登录注册模拟窗口-注册部分的模拟
- excel处理几十万行数据_神奇吗?仅需4步,轻松在Excel处理300万行数据
- 利用IDLE对 dem进行批量拼接处理
- c语言根号sin60,用泰勒级数展开求sin60°的值C语言
- php过滤特殊表情符号
- str_replace替换多个字符串
- 计算机屏幕偏振光原理,隐形却很重要 PC屏幕的那层膜
- 初学风水-某商务中心店铺
- 如何通过WWW下载图片 学习笔记
- WPS表格的常用操作技巧大全
- FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)的坑