matlab怎设置静态变量,Matlab/Simulink中的静态变量和全局变量

本文详细介绍了Matlab和Simulink中静态变量和全局变量的使用方法。对于静态变量,重点讲解了如何在Matlab函数中声明、初始化和释放。在Simulink中,静态变量的使用方式与Matlab类似,但不支持clear命令。全局变量部分,阐述了在Matlab中如何声明和调用全局变量,并在Simulink中通过Data Store Memory模块和Simulink.Signal对象实现全局变量的存储和读写。
摘要由CSDN通过智能技术生成

Matlab/Simulink中的静态变量和全局变量

1、静态变量(persistent)

1)Matlab中使用静态变量

2、全局变量(global)

1)Matlab中使用全局变量

2)Simulink中使用全局变量

(1)使用 Data Store Memory 模块存储数据

(2)使用 Simulink.Signal 对象存储数据

1、静态变量(persistent)

1)Matlab中使用静态变量

在函数中声明的变量,当函数调用完之后就会释放。如果想保留这个变量的值(供该函数下一次调用),可以把这个变量声明为静态变量。

静态变量只能在function里声明,且只有这个function才能认识它(main函数也不行,被遮蔽无法使用)。静态变量不能在声明的时候赋值,x声明后是[],就是一个空的array。声明后需初始化,注意不能直接用persistent x=0;而是用isempty(x)判断x是否已经赋值。

function y=persistentTest()

persistent x;

if isempty(x)

x=0;

end

x = x + 1;

在命令窗中多次运行如下命令验证是否静态变量创建正确.若x未赋值,则赋值为0,输出结果为1;若x已经赋值,则使用已赋的值进行+1运算。

y = persistentTest

之后调用一次y=persistenTest;结果y=1,再调用一次y=persistenTest;结果y=2。就是说x记录了每次调用function后的结果。

释放静态变量

Matlab静态变量通常使用persistent关键字进行定义。静态变量的定义形式为:persistent 变量名。一般将静态变量定义在子函数内部,其用法与C/C++的static关键字相似。需要注意的是,通过persistent定义的静态变量只在被定义的子函数内部可见,而在主函数内部则被遮蔽,无法直接使用。要释放静态变量,可以使用clear命令。在定义静态变量的子函数内部释放静态变量时,可以使用clear '变量名'的方式,与清除普通变量的方法相同。在主函数释放子函数内定义的所有静态变量时,可以使用clear '子函数名'的方式。使用clear 'Function'可以清除所有的静态变量。举个例子,如果有一个子函数func,其定义了一个静态变量model,可以在主函数使用clear func来释放func内定义的所有静态变量。 另外,使用静态变量的一个例子是在一个函数定义一个静态变量a,并在每次函数调用时对a进行更新。可以使用persistent关键字来定义静态变量a,并在函数使用if isempty(a) a=0; end a=a+1;来对a进行更新。这样,在每次调用函数时,a都会记录上一次调用后的结果。举个例子,假设有一个函数test,其定义了一个静态变量a,初始值为0,然后在每次调用函数时,a都会自增1。调用test函数两次,第一次结果为1,第二次结果为2。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Matlab静态变量](https://blog.csdn.net/sunzhao1000/article/details/80590190)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [matlab里的静态变量](https://blog.csdn.net/gameboy12615/article/details/6373305)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值