当前位置: 首页 > news >正文

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;

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

在这里插入图片描述

相关文章:

Simulink中Matlab function使用全局变量

目录 一. 引言二. 普通Matlab function使用全局变量三. Simulink中的Matlab function使用全局变量四. 如何利用Matlab function的全局变量施加随机噪声 一. 引言 最近发现了之前仿真中的一个问题,记录一下备忘。 Matlab function中有时候需要用到全局变量&#xf…...

WPF-控件的属性值的类型转化

控件的属性值需要转成int、double进行运算的&#xff0c;可以使用一下方法 页面代码 <StackPanel Margin"4,0,0,0" Style"{StaticResource Form-StackPanel}"> <Label Content"替换后材料增加金额&#xff…...

海思Hi3516DV300上播放G711U音频文件

在海思Hi3516DV300芯片运行Linux系统下&#xff0c;可通过如下函数来实现G711U音频文件的播放&#xff1a; int ADecPlayVoiceFile(const char* filename) {FILE* pfd;AUDIO_STREAM_S stStream;HI_S32 s32Ret,length,decLength,allLength 0,aChn 0;HI_U8 buf[SAMPLE_AUDIO_P…...

Linux源码阅读笔记-V4L2框架基础介绍

V4L2视频设备驱动基础 V4L2 是专门为 Linux 设备设计的整套视频框架&#xff08;其主要核心在 Linux 内核&#xff0c;相当于 Linux 操作系统上层的视频源捕获驱动框架&#xff09;。为上层访问系统底层的视频设备提供一个统一的标准接口。V4L2 驱动框架能够支持多种类型设备&…...

列表(list)

一、前言 本次博客主要讲解 list 容器的基本操作、常用接口做一个系统的整理&#xff0c;结合具体案例熟悉自定义内部排序方法的使用。如有任何错误&#xff0c;欢迎在评论区指出&#xff0c;我会积极改正。 二、什么是list list是C的一个序列容器&#xff0c;插入和删除元素…...

使用Python抓取数据的实战指南

引言 在当今信息爆炸的时代&#xff0c;数据已成为一种宝贵的资源。无论是学术研究、市场分析&#xff0c;还是个人兴趣&#xff0c;数据的获取都是至关重要的一步。Python&#xff0c;凭借其强大的库和简洁的语法&#xff0c;成为了数据抓取&#xff08;也称为网络爬虫或网页…...

GIC寄存器介绍

往期内容 本专栏往期内容&#xff0c;interrtupr子系统&#xff1a; 深入解析Linux内核中断管理&#xff1a;从IRQ描述符到irq domain的设计与实现Linux内核中IRQ Domain的结构、操作及映射机制详解中断描述符irq_desc成员详解Linux 内核中断描述符 (irq_desc) 的初始化与动态分…...

c++实现B树(下)

书接上回小吉讲的是B树的搭建和新增方法的实现&#xff08;blog传送门&#x1f6aa;&#xff1a;B树实现上&#xff09;&#xff08;如果有小可爱对B树还不是很了解的话&#xff0c;可以先看完上一篇blog&#xff0c;再来看小吉的这篇blog&#xff09;。那这一篇主要讲的是B树中…...

外星人入侵

学习于Python编程从入门到实践&#xff08;Eric Matthes 著&#xff09; 整体目录&#xff1a;外星人入侵文件夹是打包后的不必在意 图片和音效都是网上下载的 音效下载网站&#xff1a;Free 游戏爆击中 Sound Effects Download - Pixabay 运行效果&#xff1a;可以上下左右移…...

【数据仓库】hbase的安装与简单操作

HBase 是一个分布式的、面向列的开源数据库&#xff0c;它支持大规模数据存储&#xff0c;并且是 Hadoop 生态系统的一部分。HBase 能够在廉价的硬件上运行&#xff0c;并提供对大量数据的随机、实时读写访问。下面是关于如何在 Linux 系统上安装 HBase 以及进行一些基本操作的…...

为什么RNN(循环神经网络)存在梯度消失和梯度爆炸?

1️⃣ 原理分析 RNN前向传播的公式为&#xff1a; x t x_t xt​是t时刻的输入 s t s_t st​是t时刻的记忆&#xff0c; s t f ( U ⋅ x t W ⋅ s t − 1 ) s_tf(U\cdot x_tW\cdot s_{t-1}) st​f(U⋅xt​W⋅st−1​)&#xff0c;f表示激活函数&#xff0c; s t − 1 s_{t-1} …...

【数据库】数据库迁移的注意事项有哪些?

数据库迁移是一个复杂且关键的过程&#xff0c;需要谨慎处理以确保数据的完整性和应用程序的正常运行。以下是一些数据库迁移时需要注意的事项&#xff1a; 1. 充分的前期准备 1.1 评估迁移需求 明确目标&#xff1a;确定迁移的具体目标&#xff0c;例如添加新字段、修改现…...

MQTT协议解析 : 物联网领域的最佳选择

1. MQTT协议概述 1.1 MQTT协议是什么 MQTT : Message Queuing Telemetry Transport 模式 : 发布 / 订阅主题优点 : 代码量小、低带宽、实时可靠应用 : 物联网、小型设备、移动应用MQTT 常用端口 : 1883 MQTT是一个网络协议&#xff0c;和HTTP类似&#xff0c;因为轻量简单&…...

pycharm中from[本地包]import文件/模块出现问题(最最最全方法!)

1.通过PYTHONPATH的方法在此处将路径添加上&#xff0c;能够让IDE访问得到。 2.通过选中目标文件所在的文件的文件夹单击右键&#xff0c;如下图所示可以看到下方的mark directory as选项中存在 存在excluded&#xff0c;选择此项可解决问题&#xff0c;如果仍有问题可以尝试其…...

MongoDB在现代Web开发中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 MongoDB在现代Web开发中的应用 MongoDB在现代Web开发中的应用 MongoDB在现代Web开发中的应用 引言 MongoDB 概述 定义与原理 发展…...

Python Bokeh 数据可视化教程

Python Bokeh 数据可视化教程 引言 在数据科学和分析的过程中&#xff0c;数据可视化是一个至关重要的环节。它不仅能帮助我们更好地理解数据&#xff0c;还能在报告和展示中提升数据的可读性和吸引力。Python 作为数据科学的主要工具之一&#xff0c;提供了多种数据可视化库…...

(一)<江科大STM32>——软件环境搭建+新建工程步骤

一、软件环境搭建 &#xff08;1&#xff09;安装 Keil5 MDK 文件路径&#xff1a;江科大stm32入门教程资料/Keil5 MDK/MDK524a.EXE&#xff0c;安装即可&#xff0c;路径不能有中文。 &#xff08;2&#xff09;安装器件支持包 文件路径&#xff1a;江科大stm32入门教程资料…...

内存大小的单位转换

计算机中内存大小的单位转换通常是按照以下规则进行的&#xff1a; 基本单位 1 字节 (Byte) 8 位 (bit) 常见的内存单位及转换关系 1 字节 (Byte) 8 位 (bit)1 千字节 (KB) 1,024 字节 (B)1 兆字节 (MB) 1,024 千字节 (KB) 1,024 * 1,024 字节 (B)1 吉字节 (GB) 1,02…...

如何在 Spring MVC 中使用 `@PostMapping`? 如何在 Spring MVC 中使用 `@PutMapping`?

PostMapping 和 PutMapping 是 Spring MVC 中用于处理 HTTP POST 和 PUT 请求的注解。它们分别对应 HTTP 协议中的 POST 和 PUT 方法&#xff0c;通常用于创建和更新资源。下面详细解释如何在 Spring MVC 中使用这两个注解。 1. 使用 PostMapping PostMapping 注解用于处理 H…...

AIGC Agent(智能体)应用开发高级工程师实战培训 —— 线上8周系统教学课程学习路线图

&#x1f3af; 课程目标 系统掌握AIGC核心技术&#xff1a;学员将通过项目驱动学习&#xff0c;从文本生成、图像创意到智能体开发&#xff0c;全面进阶AIGC技术&#xff0c;探索其在营销、教育、数据处理、知识管理等领域的实际应用。构建AIGC智能体服务体系&#xff1a;学成…...

AI-auth-toolkit社区贡献指南:从入门到核心开发者

AI-auth-toolkit社区贡献指南&#xff1a;从入门到核心开发者 【免费下载链接】genai-compliance-bench GenAI compliance benchmark is a evaluation benchmarks for generative AI in regulated industries. 项目地址: https://gitcode.com/gh_mirrors/ai/genai-compliance…...

通过curl命令快速测试Taotoken接口连通性与模型响应效果

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过curl命令快速测试Taotoken接口连通性与模型响应效果 对于开发者而言&#xff0c;在集成大模型服务时&#xff0c;快速验证接口…...

根据(2022年版课程标准修订)义务教育教科书·七至八年级生物课程内容体系,直接打印快速记忆

七年级生物目录&#xff08;上册&#xff09;第一单元 生物和细胞第一章 认识生物第一节 观察周边环境中的生物第二节 生物的特征第二章 认识细胞第一节 学习使用显微镜第二节 植物细胞第三节 动物细胞第四节 细胞的生活第三章 从细胞到生物体第一节 细胞通过分裂产生新细胞第二…...

借助AI写教材,低查重实现,轻松打造符合需求的教材!

教材编写的挑战与AI工具解决方案 在教材编写的过程中&#xff0c;如何平衡原创性与合规性是一个重要的挑战。借鉴优秀教材的知识内容时&#xff0c;常常会担心重复率过高&#xff1b;而自己独立表述知识点&#xff0c;又得顾虑逻辑不严密、内容不准确等问题。引用他人研究成果…...

Unity组件化通信三层次:事件、接口与消息总线实战

1. 这不是“写个脚本就完事”的游戏逻辑——为什么90%的Unity新手在交互设计上栽在第一步你有没有试过这样写&#xff1a;PlayerController里直接调用EnemyHealth.TakeDamage(10)&#xff0c;EnemyAI里又反过来调用PlayerStats.GetHealth()&#xff1f;代码跑通了&#xff0c;测…...

如何修复损坏的QR码?QRazyBox完整使用指南

如何修复损坏的QR码&#xff1f;QRazyBox完整使用指南 【免费下载链接】qrazybox QR Code Analysis and Recovery Toolkit 项目地址: https://gitcode.com/gh_mirrors/qr/qrazybox 你是否曾经遇到过这样的困境&#xff1a;一张重要的QR码因为打印模糊、污渍或人为损坏而…...

基于AI流动性监测模型的黄金波动分析:油价跳水与美元回落下的黄金震荡企稳机制解析

摘要&#xff1a;本文通过AI宏观情绪识别模型、美元流动性监测框架以及能源价格传导算法&#xff0c;结合近期原油、美元与美债收益率变化&#xff0c;分析黄金在高波动市场环境下的价格修复逻辑&#xff0c;并探讨避险需求、通胀预期与美联储政策路径之间的动态博弈关系。一、…...

边缘AI语音交互实战:从唤醒词识别到MCP外设控制的嵌入式实现

1. 项目概述&#xff1a;当边缘计算遇见语音交互 最近在折腾一个挺有意思的项目&#xff0c;核心是把语音交互的能力从云端“拽”下来&#xff0c;直接部署到边缘设备上&#xff0c;然后让它去控制各种MCP&#xff08;Microcontroller Peripheral&#xff09;外设。听起来像是智…...

告别低效编程:在PyCharm 2024.1中配置Baidu Comate的保姆级教程(含快捷键设置)

告别低效编程&#xff1a;在PyCharm 2024.1中配置Baidu Comate的保姆级教程&#xff08;含快捷键设置&#xff09; 作为一名长期使用PyCharm进行Python开发的工程师&#xff0c;我深刻体会到重复性编码工作对创造力的消耗。直到遇见Baidu Comate——这款能与IDE深度集成的AI编码…...

破解Windows安装程序本地化难题:Inno Setup简体中文翻译的技术实现与架构设计

破解Windows安装程序本地化难题&#xff1a;Inno Setup简体中文翻译的技术实现与架构设计 【免费下载链接】Inno-Setup-Chinese-Simplified-Translation :earth_asia: Inno Setup Chinese Simplified Translation 项目地址: https://gitcode.com/gh_mirrors/in/Inno-Setup-Ch…...