需求: 我们需要在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中使用全局变量的方法相关推荐

  1. MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统

    在Simulink中训练DDPG控制倒立摆系统 倒立摆的Simscape模型 创建环境接口 创建DDPG智能体 训练智能体 DDPG智能体仿真 此示例显示了如何训练深度确定性策略梯度(DDPG)智能体 ...

  2. matlab中如何停止clock,关于simulink中clock的问题

    今天在搭建fft模块的时候出现了这样的问题. 模块如下 用scope看第一个product后面cos和sin信号的时候发现 发现不是正弦波 后再王董的指引下分析,搭建了下面的模块 其中换色5*k*cl ...

  3. matlab中scope是什么,关于simulink中scope参数设置的总结

    示波器 关于sampling中decimation:按输入信号的个数抽样.(个数以信号源的Ts抽样周期为单位) sample time:按时间抽样. sample time=decimation*信号 ...

  4. MATLAB的仿真工具箱Simulink中常用的模块库总结

    MATLAB的仿真工具箱Simulink中常用的模块库 Simulink中常用的模块库主要包括如下几种. (1)信宿(Sinks)模块库:包括显示或将输出回写的模块. Display 显示输入的值: ...

  5. C语言中变量的作用域

    C语言中变量的作用域 C语言中所有变量都有自己的作用域,申明变量的类型不同,其作用域也不同.C语言中的变量,按照作用域的范围可分为两种, 即局部变量和全局变量. 一.局部变量 局部变量也称为内部变量. ...

  6. pwm调制 matlab仿真,PWM脉冲调制直流电机的simulink仿真

    PWM脉冲调制直流电机的simulink仿真 仿真模型构建 电机原理 直流电机的4个动态特性方程式分别为: 对上述式子去拉普拉斯变换并整理得: 其中 T c T_c Tc​为电机轴上的总阻转矩.画出电 ...

  7. matlab fft simulink,在Simulink中复制MATLAB的FFT?

    很抱歉也许不准确地说出这个问题,但我对Simulink和Stack都很新 . 我正试图在simulink中处理语音信号,就像我在Matlab中所做的那样,我的输出有问题 . 在Matlab中,FFT看 ...

  8. 【Matlab 控制】批量修改大型 Simulink 模型中模块的属性

    批量修改大型 Simulink 模型中模块的属性 一.通过Simulink自带的搜索 二.通过命令行进行搜索替换 三.使用Model Explorer编辑属性 在大型Simulink建模中,需要进行某 ...

  9. Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block ‘**/matlab function/sfunction‘ is in an

    Simulink中的某一个模块用了我自己定义的MATLAB function模块,但是出现的结果是:The block '/matlab function/sfunction' is in an in ...

  10. C#中变量(成员变量、局部变量、全局变量)的作用域

    不管在任何编程语言中都有变量的定义,变量就像是一个容器,不同的变量会在内存中占据不同大小的内存空间.定义变量后会将分配的地址绑定在这个变量名上,以后对该变量名的操作就是对该内存地上存储内容的操作. n ...

最新文章

  1. 2560x1600分辨率高吗_手机屏幕分辨率真的越高越好?它的好处和坏处你知道吗?...
  2. 算法设计与分析 2 二维递推间接递推递归分析
  3. zk Acl权限:只有一个账号有crdwa权限,匿名用户只有r权限
  4. nagle算法和延迟ACK
  5. 浅谈.NET中的类型和装箱、拆箱原理
  6. 龟兔赛跑——多线程练习
  7. 【AC Saber】高精度
  8. 简单java题_java
  9. 5G NR 随机接入过程(1)
  10. 【C#桌面应用】第五节:制作简单的登录注册模拟窗口-注册部分的模拟
  11. excel处理几十万行数据_神奇吗?仅需4步,轻松在Excel处理300万行数据
  12. 利用IDLE对 dem进行批量拼接处理
  13. c语言根号sin60,用泰勒级数展开求sin60°的值C语言
  14. php过滤特殊表情符号
  15. str_replace替换多个字符串
  16. 计算机屏幕偏振光原理,隐形却很重要 PC屏幕的那层膜
  17. 初学风水-某商务中心店铺
  18. 如何通过WWW下载图片 学习笔记
  19. WPS表格的常用操作技巧大全
  20. FileNotFoundException open failed: XXXXXXX EPERM (Operation not permitted)的坑

热门文章

  1. flow.php 漏洞,php – 使用Apache的Flowplayer安全流
  2. “由于应用程序配置不正确,应用程序未启动。重新安装应用程序可能会纠正这个问题。”解决思路
  3. MaxDOS 网刻服务端网刻教程。
  4. java ssh超市进销存管理系统(源码+文档)【源码分享】
  5. 【贪玩巴斯】无线传感器网络(三)「Mac协议讲解」——2021-10-08
  6. rpm命令的使用与软件的安装
  7. 移动硬盘打开文件突然变得很卡
  8. 黑马程序员—银行调度系统
  9. Qt Creator 使用教程
  10. 棋牌游戏开发教程系列:游戏服务器框架搭建