Matlab中global 和persistent的用法

1、persistent 用法

静态变量(persistent)

在函数中声明的变量,当函数调用完之后就会释放。如果想保留这个变量的值(供该函数下一次调用),可以把这个变量声明为静态变量。stateflow里面的变量和这个差不多
静态变量只能在function里声明,且只有这个function才能认识它(main函数也不行,被遮蔽无法使用)。静态变量不能在声明的时候赋值,x声明后是 [  ],  就是一个空的array。声明后需初始化,注意不能直接用persistent x=0;而是用isempty(x)判断x是否已经赋值。

2、代码演示
function y=persistentTest()

persistent x;

if isempty(x)
   x=0;
end
x = x + 1;
y  = x;

第一次运行这个脚本 y = 1,

第二次运行  y = 2;

....每次都会累加。

其值不会随着函数调用结束而消失。

其在simulink用法何在matlab脚本里面一样,都是在函数里面调用一次,比如
 

在这个matlab function里,循环里使用了静态变量,该整个模型的频率是25ms,也就是说,

对于整个系统,在每个25ms一次的模型中,每次循环的起始值,都是上次的保存值。

3、global 用法

全局变量(global)

matlab写代码时 ,对于一般的局部变量,如果有多个.m文件,且之间存在相互调用关系;每个.m文件中的变量,都为局部变量,都有自己的工作区域/Workspace,当函数调用结束之后,其变量的声明周期也就结束了(记住,变量的声明周期随着子函数的结束而结束)

如果定义了全局变量/global,则需要注意几点:

1、在每一个子函数/.m文件中,都需要先声明,然后再进行操作;

2、global/全局变量,只占一个workspace,即在某一个地方修改,同时在变量存在的地方全部修改;

3、定义多个global/全局变量方式为: global var1 var2 var3 ……;

4、去掉/消除某一个或多个全局变量方式为:clear var1 var2 var3……;

1、代码演示
function global_plot()
global X
X=0:0.1:2*pi;
plot_sin(2)
plot_cos(2)
function plot_sin(a)
global X
y=a*sin(X);
figure
plot(X,y)
 
function plot_cos(a)
global X   %使用全局变量X时,也要用global定义
X=-pi:0,1:pi; %全局变量被修改
y=a*cos(X);
figure
plot(X,y)

 2、结果

可以看到第一个函数plot_sin(2),其X = X=0:0.1:2*pi,其大小为1*63;

第二个函数plot_cos(2),其X=-pi:0,1:pi ,其值为1*7,分别为: -3.1416   -2.1416   -1.1416   -0.1416  1  2   3

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值