Simulink中Matlab function使用全局变量

目录

  • 一. 引言
  • 二. 普通Matlab function使用全局变量
  • 三. Simulink中的Matlab function使用全局变量
  • 四. 如何利用Matlab function的全局变量施加随机噪声

一. 引言

最近发现了之前仿真中的一个问题,记录一下备忘。

Matlab function中有时候需要用到全局变量,其用法较为简单,而Simulink中的Matlab function全局变量用法稍复杂一点,按照步骤来即可,但第一次用还是需要一个详细教程,以免出错。

二. 普通Matlab function使用全局变量

普通Matlab function全局变量定义:

function W = weight(m)
global GG;
W = m * GG;

将上述代码保存成文件weight.m.

注意调用的时候也要声明全局变量:

global GG;
GG = 10;
a = weight(4)

三. Simulink中的Matlab function使用全局变量

详细的多种用法参考这篇文章: Simulink高级应用—— Matlab Function中共享或使用全局变量或全局数据

这里只说其中一种用法,使用data sotre memory来实现全局变量共享。

比如我这里要给控制器输出端加一个噪音信号,用Matlab function,就可以定义为时间的函数。

在这里插入图片描述
1. MATLAB Function的代码中 声明全局变量

考虑最简单的情况,t=5s时加一个幅值为noise_amp的噪音,定义:

function y = fcn(t)
global noise_amp;
if t > 5y = noise_amp;
else y = 0;
end

2. MATLAB Function 注册全局变量

在MATLAB Function的代码编辑界面,点击Edit Data

点击

点击Add Data,成功添加一个变量,命名为noise_amp(与代码中的必须一致)。变量类型由input改为data store memory

在这里插入图片描述
3. Simulink中添加 Data Store Memory模块

从library中拖入或直接在空白页面输入Data Store Memory,添加一个Data Store Memory模块。命名与Matlab function中一致,必须设置好明确的数据类型,不能为auto(比如我设置成double)。设置信号的类型(real)和初始值。我这里设置的初始值0.3,即噪音幅值0.3

在这里插入图片描述

现在运行一下,结果如图所示。可以看到t=5s时直接在输出端叠加了一个0.3的噪音,之后在PID的调节下回到设置的期望值1。这样就仿真了一个脉冲形式的抗扰控制。

在这里插入图片描述

四. 如何利用Matlab function的全局变量施加随机噪声

上面是在某一时刻施加了一个噪音,现在我想以10Hz频率给输出端施加随机噪音(控制周期为0.001s, 1000Hz),应该怎么施加。

这个问题乍一看很简单,其实仔细想一想不是那么简单。比如下面这这么写就是错的:

function y = fcn(t,u)if mod(1000*t,100) == 0   % 噪声频率为0.1s给一次, 仿真周期是0.001sy = 0.1 * (-1+2*rand);
elsey = 0;
end

它仿真出来的是下图形式,每一次的噪音只在那一时刻起了作用,表现在输出信号上就是一个个的“尖刺”,实际上每一次施加的噪音都应该是持续性的,所以应该用累加形式。

在这里插入图片描述

正确的写法如下(新定义了一个全局变量noise,步骤参照前面):

function y = fcn(t, data1)global noise;if mod(1000*t,100) == 0   % 噪声频率为0.1s给一次, 仿真周期是0.001sy = noise + 0.1 * (-1+2*rand);
elsey = noise;
end
noise = y;

这样子输出就是下面这样的,可以看到是连续信号(只演示原理,控制效果忽略~)。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/11120.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

架构篇(04理解架构的演进)

目录 学习前言 一、架构演进 1. 初始阶段的网站架构 2. 应用服务和数据服务分离 3. 使用缓存改善网站性能 4. 使用应用服务器集群改善网站的并发处理能力 5. 数据库读写分离 6. 使用反向代理和CDN加上网站相应 7. 使用分布式文件系统和分布式数据库系统 8. 使用NoSQL和…

zabbix前台界面配置

点击下一步 如上异常错误解决方法代码如下,安装缺失的软包,并修改php.ini对应参数的值即可 yum install php-mbstring php-bcmath php-gd php72w-xml -y yum install gd gd-devel -y 修改配置文件 sed -i /post_max_size/s/8/16/g;/max_ex…

数据库去O搞了个寂寞!甲骨文股价翻倍,市值突破5200亿美金!

随着川建国同志的当选,到账最近几天美股科技股都有不小的涨幅,涨幅最高的当tesla莫属,然而据传甲骨文老板也是川普的金主! 或许正因为如此,甲骨文股价也创新高了,最近几天涨了10%,市值突破5200…

[强网杯 2019]随便注 1

[强网杯 2019]随便注 1 审题 观察题目,判断可能是SQL注入,或者Linux命令执行,结合题目就是注入了 知识点 堆叠注入,handler命令执行,更改表名,预编译 知识点解析 堆叠注入 简单来说,堆叠注入就是按…

三菱QD77MS定位模块紧急停止功能

“紧急停止功能” 是通过简单运动模块的外部输入连接用连接器上连接的紧急停止输入,对同服放大器的全部轴进行批量停止的功能。(初始值为“0:有效”。)通过“[r.82]紧急停止有效/无效设置”可以选择紧急停止输入的有效/无效。 [1]控制内容 将“[r82]紧急停止有效/无…

计算机组成原理(指令格式)

(1)指令:是用来表示控制信息的一组二进制代码 (2)指令由操作码和地址码组成,操作码表示操作的性质和功能,地址码用来存放操作数的地址。地址码不为1。 (3)程序计数器(PC):专门存放当前要执行的指令地址。 (4)累加器AC:是一种寄存器,用来存储…

时序预测 | 改进图卷积+informer时间序列预测,pytorch架构

时序预测 | 改进图卷积informer时间序列预测,pytorch架构 目录 时序预测 | 改进图卷积informer时间序列预测,pytorch架构预测效果基本介绍参考资料 预测效果 基本介绍 改进图卷积informer时间序列预测代码 CTR-GC卷积,informer,CTR-GC 图卷积…

docker desktop es windows解决vm.max_map_count [65530] is too low 问题

如果你使用windows上的docker desktop 搭建es相关的应用,大概率会遇到vm.vm.max_map_count [65530] is too low这个错误,本篇文章分享下怎么解决这个问题,主要分享长期解决的方法,重启机器之后也能生效的方法。 这个错误的详细信息…

ssm072基于bs模式的医院在线挂号预约系统的设计与实现+jsp(论文+源码)_kaic

毕 业 设 计(论 文) 题目:医院在线挂号预约系统的设计与实现 摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以…

Web实时消息推送

Web实时消息推送 消息推送 web端消息推送移动端推送 消息推送:推Push 和 拉Pull 消息推送常见方案 短轮询 轮询:由浏览器向服务器发出HTTP请求,服务器实时返回未读消息数据给客户端,浏览器再做渲染显示。 JS请求 setInter…

ReactPress数据库表结构设计全面分析

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎Star。 ReactPress是一个基于React框架开发的开源发布平台和内容管理系统(CMS)。它不仅支持用户在支持React和MySQL数据库的服务器上搭建自己的博客和网站&#…

无线振动传感器的安装方法

lora无线温振一体传感器即传感器的采集时间,采集方式完全有主机通过命令实现。其主要特点是:传感器平时处在低功耗状态、传感器可以随时响应远程主机控制命令、传感器可采集特征值或者原始加速度数据 lora 技术,提高了传输速率多振动&#xf…

GESP4级考试语法知识(暴力枚举(三))

古堡算式代码&#xff1a; # include <stdio.h> int main(){int a, b, c, d, e;int x;int left, right;left a * 10000 b * 1000 c * 100 d * 10 e * 1;right e * 10000 d * 1000 c * 100 b * 10 a * 1;for(a 0; a < 9; a){for(b 0; b < 9; b){for(c …

CSS学习

目录 一、CSS概述 二、CSS的三种引入方式 (一)直接使用style标签编辑样式(调试样式代码时使用) (二)使用link标签引入CSS文件(上线时使用) (三)内嵌式(尽量不用&#xff0c;后期维护麻烦) 三、CSS常用选择器 (一)标签选择器(通过html标签选择元素) (二)class选择器(通…

数字IC实践项目(10)—基于System Verilog的DDR4 Model/Tb 及基础Verification IP的设计与验证(付费项目)

数字IC实践项目&#xff08;10&#xff09;—基于System Verilog的DDR4 Model/Tb 及基础Verification IP的设计与验证&#xff08;付费项目&#xff09; 前言项目框图1&#xff09;DDR4 Verification IP2&#xff09;DDR4 JEDEC Model & Tb 项目文件1&#xff09;DDR4 Veri…

NLP论文速读|ScPO:自我一致性的偏好优化(Self-Consistency Preference Optimization)

论文速读|Self-Consistency Preference Optimization 论文信息&#xff1a; 简介&#xff1a; 这篇论文试图解决的问题是如何在没有人类标注数据的情况下&#xff0c;提高大型语言模型&#xff08;LLMs&#xff09;在复杂推理任务上的性能。现有的自我对齐技术往往因为难以分配…

Java定时任务

业务场景&#xff1a; 系统凌晨1点数据备份。用户下单半小时未支付订单&#xff0c;需要自动取消订单。每10min动态抓取某网站的数据。博客定时发送文章。每晚定时计算用户当日收益情况并推送给用户最新的数据。 分布式定时任务 Redis Redis过期事件监听。Redisson内置延时…

Data Grouping 数据分组

Goto Data Grid 数据网格 Data Grouping 数据分组 分组功能将具有相同列值的行合并到相同的数据组中。它受 Grid View 和 Banded Grid View 支持。 Apply Grouping 应用分组 数据分组最初在 Data Grid 中启用&#xff08;默认设置&#xff09;。要按列对数据进行分组&#…

对于大根堆的计算时间复杂度的过程

目录 第一步 第二步 第三步 第四步 第一步 首先进行假设 第二步 然后求解出每一层的节点个数这一层节点需要调整的所在高度 第三步 接着每一层节点需要调整的次数 &#xff08;每一层的节点个数 * 这一层节点需要调整的所在高度&#xff09;再全部相加起来 利用*2T&…