首页 > 其他分享 >matlab中persistex型的变量

matlab中persistex型的变量

时间:2022-08-25 15:01:34浏览次数:46  
标签:count 变量 persistex value persistent matlab variable

学习matlab中的persistex类型的变量特性和C语言中static型变量差不多。请看代码:

 1 %fileName: persistex.m
 2 %This script demonstrates persistent variables
 3 %The first function has a varibale "count"
 4 
 5 fprintf('This is what happens with a "normal" variable: \n')
 6 nopersis
 7 nopersis
 8 
 9 %The second function has a persistent varibale "count"
10 fprintf('\nThis is waht happens with a persistent variable: \n')
11 yespersis
12 yespersis

配合nopersis.m:

1 function nopersis
2 %func1 increments a normal varibal "count"
3 %Fromat: func1 or func1()
4 
5 count = 0;
6 count = count + 1;
7 fprintf('The value of count is %d\n', count)
8 end

还有yespersis.m:

 1 function yespersis
 2 %func2 increaments a persistent variable "count"
 3 %Forma: func2 or func2()
 4 
 5 persistent count                %Declare the variable
 6 if isempty(count)
 7     count = 0;
 8 end
 9 count = count + 1;
10 fprintf('The value of count is %d\n', count)
11 end

执行结果:

 1 >> persistex
 2 This is what happens with a "normal" variable: 
 3 The value of count is 1
 4 The value of count is 1
 5 
 6 This is waht happens with a persistent variable: 
 7 The value of count is 1
 8 The value of count is 2
 9 >> persistex
10 This is what happens with a "normal" variable: 
11 The value of count is 1
12 The value of count is 1
13 
14 This is waht happens with a persistent variable: 
15 The value of count is 3
16 The value of count is 4

第1行和第9行不用说了,就是在提示符下,输入脚本名persistex执行脚本

第3行和4行脚本中是调用nopersis函数,由于其中的count变量是local变量,结果都是1

第7行和8行脚本中是调用yespersis函数,由于其中的count变量是persistex变量,前者结果都是1,后者是2

从第9行开始,只是有重新将脚本执行一遍,

第11行和12行是显而易见的为1

第13和和14行是3和4也是可以理解的,明白了了。每次调用,persistex变量都是在前次基础上加1,并保留该值直到下次调用。也就是说,这种变量的声明周期不随着函数调用的结束而消逝,值会一直保存在内存中,因此经过多次的调用才会不停的累加。但是由于该变量count是处于函数yespersis中,该变量并不能在baseworkspace中被看到和使用,而只能在其函数中被调用。这才是这种变量的诡异之处吧。

标签:count,变量,persistex,value,persistent,matlab,variable
From: https://www.cnblogs.com/guochaoxxl/p/16624275.html

相关文章

  • php变量 global/static
    通常,函数内定义的变量,在函数内生效,函数执行完毕销毁global全局变量,函数外可以调用 functiontestGlobal(){  global$a;  $a=1;}//testGlobal();/......
  • matlab2021a的快捷键修改
    使用matlab2021a,在使用编辑器过程中,默认的快捷键非常不方便。修改如下:1、HOME-->perference,打开perfecence窗口2、左侧MATLAB-->Keyboard-->Shortcuts,右侧Activesetti......
  • linux安装jdk1.8并配置环境变量
    参考地址:https://blog.csdn.net/Yangsir_java/article/details/125635555linux下安装jdk,都是下载压缩包解压,配置环境变量等步骤。这里记录一下安装1.8版本的过程,方便下次......
  • 声明变量
    let在ES6中我们可以使用新的关键字来声明变量,let声明的变量只在let命令所在的代码块内有效(块级作用域、局部作用),ES6推荐在函数中使用let定义变量,而非var。基本用......
  • 变量、常量、作用域
    变量变量是什么:就是可以变化的量!Java是一种强类型语言,每个变量都必须声明其类型。Java变量是程序中最基本的存储单元,其要素包包括变量名,变量类型和作用域。typevarN......
  • 边用边学--Matlab(1)
    边用边学--Matlab(1)Zeros         Size     Table Bitget      就是查看某个数的第几bit Find    ......
  • jmeter配置环境变量
    进入环境变量1:windows11桌面右键-显示设置-系统   点击左侧第一行:系统-右下角点击:系统信息   点击高级系统设置-进入环境变量页     配置环......
  • Python小白自学笔记:英语不好,变量怎么命名
    变量其实很简单,不过在使用过程中会遇到一些棘手的问题。比如一个变量我之前已经用过了,现在我要定义一个类似的变量,该怎么办?还有,很多小伙伴其实知道变量应该遵守什么规范,......
  • 成员变量和局部变量的区别和面向对象的三大特征之封装性
    成员变量和局部变量的区别1、定义的位置不一样【重点】局部变量:在方法的内部成员变量:在方法的外部,直接鞋子类当中2、作用范围不一样【重点】局部变量:只有方法当中才可......
  • MRS 指定变量RAM存放地址
    在MounRiverStudio配置中linkerflags加入--section-start=.XXX=RAM的起始地址2.将变量加入__attribute__声明  3.编译后的效果如图所示 ......