【Matlab仿真】Matlab Function中如何使用静态变量?

devtools/2025/2/27 2:48:50/

背景

根据Simulink的运行机制,每个采样点会调用一次MATLAB Function的函数,两次调用之间,同一个变量的前次计算的终值如何传递到当前计算周期来?其实可以使用persistent变量实现函数退出和进入时内部变量值的保持。

persistent变量

1、persistent变量是定义在某个函数内的变量类型,可在函数调用的不同次数间保持上一次退出该函数的值。它同global全局变量的类似之处在于MATLAB为它们创建永久数据区域,不同之处在于它只能被声明在它的函数内部识别,目的是免除此变量被其他函数或命令行修改值而造成用户无法确保其值的困扰。
2、声明persistent变量时它刚刚被创建,还不具有初始值,其内容为空值[],调用声明persistent变量的函数时先判断persistent变量是否为空,如果是空则初始化为0,非空则直接使用,他们会记得上次被调用的值。

persistent变量使用注意事项

  1. persistent变量不能作为函数的输出输出函数,否则会报错。如果需要观察,可以借助中间变量观测。
  2. persistent变量不能同当前工作空间中已经存在的变量同名,否则会报错。
  3. persistent变量不能声明在Command Window里,必须在函数内声明。

仿真验证

在Matlab Function函数中声明cnt变量,如果需要观察cnt的变化,通过中间变量g_cnt观测。

persistent cnt
if isempty(cnt)cnt = 0;   % 显式初始化
end
cnt = cnt + 1;
g_cnt = cnt;

结果如下:
在这里插入图片描述


http://www.ppmy.cn/devtools/162939.html

相关文章

Android构建系统 - 02 初始化编译环境,添加产品

文章目录 初始化编译环境,选择产品envsetup.sh脚本不开启 subshell作用提供实用函数添加编译选项查找/执行 其它vendorsetup.sh lunch ProductProduct 概念编译选项解析层级配置文件目录AOSP 预制芯片及方案厂商 lunch命令作用编译目标BUILD 编译目标BUILDTYPE 编译…

Python黑客技术实战指南:从网络渗透到安全防御

🌟 嗨,我是Lethehong!🌟 🌍 立志在坚不欲说,成功在久不在速🌍 🚀 欢迎关注:👍点赞⬆️留言收藏🚀 🍀欢迎使用:小智初学…

微信小程序:多菜单栏设计效果

一、实现效果 二、代码 wxml 编辑前端界面,步骤 菜单逻辑: 逐步取出数组中的项,首先取出顶部菜单项,然后选中后取出选中的底部数据(左侧菜单+右侧内容),然后点击左侧菜单取出选中的左侧菜单对应的右侧内容 ①这里我的数据是全部封装到一个数组对象的,首先我的循环…

【链 表】

【链表】 一级目录1. 基本概念2. 算法分析2.1 时间复杂度2.2 空间复杂度2.3 时空复杂度互换 线性表的概念线性表的举例顺序表的基本概念顺序表的基本操作1. 初始化2. 插入操作3. 删除操作4. 查找操作5. 遍历操作 顺序表的优缺点总结优点缺点 树形结构图形结构单链表基本概念链表…

DeepSeek 助力 Vue 开发:打造丝滑的表单验证(Form Validation)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

[ Vim ] 常用命令 and 配置

Vim 指导 Vim常用命令&配置1 Command1.1 copy & paste1.2 syntax highlight 2 Configuration Vim常用命令&配置 1 Command 1.1 copy & paste copy: yy or yy[n] paste: p 1.2 syntax highlight vim 命令行::colorscheme [xxx] 2 Configuratio…

基于 Python 和 Django 的文本情感分析系统设计与实现

大家好,今天要和大家聊的是一款基于 Python 和 Django 框架的“文本情感分析系统”的设计与实现。项目源码以及部署相关事宜请联系我,文末附上联系方式。 项目简介 基于 Python 和 Django 框架的“文本情感分析系统”主要使用者分为 管理员 和 普通用户…

使用VS Code远程开发OpenAI API

由于OpenAI的API在国内不可用,我们要针对API进行开发困难比较大。 如果你有一个能使用OpenAI API的Linux服务器,我们可以方便地使用VS Code的远程开发功能来解决这个问题。 如果没有,你也可以试试获得一个免费的国外服务器,网上有…