MATLAB|怎么存储Simulink运行过程中的变量呢?m语言persistent变量代替C语言Static变量

news/2024/10/28 12:27:14/

做实验时,例如使用ARM或者DSP实现控制,时常会定义全局变量,来存储需要的值,以保存某一状态。

做MATLAB/Simulink仿真时,想要实现上述功能则不容易实现(可以,但不容易)。往往这样的需求只需要通过局部静态变量即可实现。

下图为C语言中Staic变量的介绍

matlab中也提供了类似的变量,但是用法有些不同。

举个例子,在simulink仿真中,需要仿真持续运行,并记录0.5s时刻的状态用于后续的仿真。利用模块则不容易实现,下面用matlab function并定义persistent变量实现。代码如下

function y = fcn(u,clock)persistent nif isempty(n)n = 0;endif (clock<0.5)n = u;end
y = n;

下图所示为搭建的仿真,实现的功能是积分系数为5(即1秒钟积分至5),在0.5s时刻以后,matlab function输出0.5s时刻的值。从下面的结果可以看出,0.5s时刻后输出的值为2.5,验证了persistent的使用

补充说明:

① C语言中,Static变量是在首次调用时初始化。不需要额外的操作,而在matlab中,需要使用isempty函数判断persistent变量是否为空,不为空之后才能将persistent变量当作static变量使用。否则将报错“持久变量n在某些执行路径中未定义”

matlab function中使用persistent变量时,其输入不适用于连续仿真。

例如,将积分环节换成连续积分,matlab则会因为“写入初始化的持久变量”而认为使用了无效的工造,解决办法是(1) 改为离散积分;(2) 修改matlab function的采样时间

(1) 改为离散积分

(2) 通过右键,选择“模块参数”,修改采样时间

以上就是MATLAB/Simulink matlab function中使用persistent变量代替C语言Static变量存储特定值的用法啦,希望对比有所帮助,我是ManTou!


http://www.ppmy.cn/news/1542580.html

相关文章

【STM32 Blue Pill编程实例】-I2C主从机通信(中断、DMA)

I2C主从机通信(中断、DMA) 文章目录 I2C主从机通信(中断、DMA)1、STM32的I2C介绍2、I2C模式3、STM32 I2C 数据包错误检查4、STM32 I2C 错误情况5、STM32 I2C中断6、STM32 I2C 主发送和接收(Tx 和 RX)6.1 I2C 轮询模式6.2 I2C 中断模式6.3 I2C DMA 模式6.4 STM32 I2C 设备…

GO语言的数据结构

Go语言&#xff08;Golang&#xff09;具有丰富的内建数据类型和一些基本的数据结构。以下是一些常见的数据结构&#xff1a; 1、基本数据类型&#xff1a; 整数类型&#xff1a;int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64 浮点数类型&#xff1…

【GO实战课】第七讲:电子商务网站(7):性能优化和测试

1. 简介 本课程将探讨电子商务网站的性能优化和测试,以及使用GO语言实现。在本课程中,我们将介绍如何设计一个高性能、可扩展和可靠的电子商务网站,并演示如何使用GO语言编写相关代码。 本课程的目标是帮助学生理解电子商务网站的性能优化和测试原则,并提供一个实际的项目…

fastboot解锁操作

有时候会遇到这样的场景&#xff1a;设备需要解锁才能remount 操作如下&#xff1a; adb reboot bootloader 进入fastboot fastboot device 查看是否有fastboot设备 fastboot flashing unlock 解锁 fastboot reboot 重启生效 然后就能正常的root和remount&#xff1…

2024年,Rust开发语言,现在怎么样了?

Rust开发语言有着一些其他语言明显的优势&#xff0c;但也充满着争议&#xff0c;难上手、学习陡峭等。 Rust 是由 Mozilla 主导开发的通用、编译型编程语言&#xff0c;2010年首次公开。 在 Stack Overflow 的年度开发者调查报告中&#xff0c;Rust 连续多年被评为“最受喜爱…

First - Word Fall - Through ( FWFT ) Read Operation

When looking at Xilinx 8 Kintex-7 4 FPGAs memory resources 32, you’ll find that its FIFO generators support two modes of read options - standard read operating and FWFT read operation. What is FWFT? FWFT is a acronym for First-Word Fall-Through. It is g…

vue3+ts实时播放视频,视频分屏

使用vue3以及播放视频组件Jessibuca Jessibuca地址 使用循环个数来实现分屏 效果图&#xff0c;四屏 九屏 dom代码 <div class"icon"><div class"icon-box"><span class"text">分屏&#xff1a;</span><el-icon …

Docker:namespace环境隔离 CGroup资源控制

Docker&#xff1a;namespace环境隔离 & CGroup资源控制 Docker虚拟机容器 namespace相关命令ddmkfsdfmountunshare 进程隔离文件隔离 CGroup相关命令pidstatstresscgroup控制 内存控制CPU控制 Docker 在开发中&#xff0c;经常会遇到环境问题&#xff0c;比如程序依赖某个…