• matlab中的静态变量


    persistent X Y Z 将X,Y,Z定义为在其声明处的函数的局部变量。然而,这些变量的值在函数调用期间在内存中保存(应该是堆区)。Persistent 变量和global(全局)变量相似,因为Matlab为他们创建永久的存储空间。但是Persistent变量与global(全局)变量不同之处在于 Persistent变量只对声明该变量的函数是可见的。这可以防止该变量被其他函数或者Matlab命令行改变。

    当M文件被从内存中清除或当M文件被改变时,Persistent变量被清除。

    如果Persistent变量在声明时没有赋值,将被初始化为空矩阵。

    如果在当前工作空间中有同名的变量存在,则声明同名的Persistent变量将会报错。

    Matlab不允许将Persistent变量声明为函数参数。

    其实就是定义局部静态变量的语法,变量生命期为全局,但是可见性在其被声明的函数内部

    Examples20100106

    function y=testPersistent()
    persistent a;
    if isempty(a)%初始化方法
    a=0;
    end
    a=a+1;
    y=a;

    之后调用一次y=testPersistent;y的值都会加一。

    清除工作区间的a变量的值(要使得y的只清空,重新计算)clear y或者clear all(清除全部变量的值)即可

    感谢原作者,转自http://blog.sina.com.cn/s/blog_4b94ff130100e9xl.html

  • 相关阅读:
    spark性能调优 数据倾斜 内存不足 oom解决办法
    python2的中文编码
    spark UDF函数
    spark cache table
    spark 创建稀疏向量和矩阵
    mysql 分组排序
    给pyspark 设置新的环境
    CF662C Binary Table
    bzoj 4310 跳蚤
    3.29省选模拟赛 除法与取模 dp+组合计数
  • 原文地址:https://www.cnblogs.com/Daringoo/p/4081564.html
Copyright © 2020-2023  润新知