zoukankan      html  css  js  c++  java
  • Matlab中的静态(持久)变量和全局变量

    1、静态变量(persistent)

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

    1 function y=test()
    2 persistent x;
    3 if isempty(x)
    4 x=0;
    5 end

    matlab可以在function里声明静态变量,方法:

    1 persistent x;

    注意它只能在function里声明,且只有这个function才能认识它。x声明后是[],就是一个空的array。
    声明后需初始化,注意不能直接用persistent x=2;而是用isempty(x)判断x是否已经赋值。如:

    1 function y=test()
    2 persistent a;
    3 if isempty(a)
    4 a=0;
    5 end
    6 a=a+1;
    7 y=a;

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

    2、全局变量(global)

    如果想让某个函数中定义的变量能够被其他函数调用,需要用到全局变量。注意,在这两个函数中都要用global修饰这个变量。如:

    1 function t1
    2 global x;
    3 x=0;
    4 
    5 function t2
    6 global x;
    7 y=x

    matlab中global的用法总结:
      各个函数之间以及command window(base workspace)中内存空间都是独立的,不能互相访问。
      初始化的时候声明一次,用的时候再声明一次【在一个内存空间里声明global,在另一个内存空间里使用这个global的时候需要再次声明 global,当然,各内存空间里声明一次就可以了】。
      如果只是在某个内存空间中使用一下,而担心在这个内存空间里的变量影响了全局的变量,那么'clear 变量名' 就好了。

  • 相关阅读:
    快速排序算法图文详解(模版使用)
    数据库中事务和隔离级别解析
    详解对象的创建,布局,定位,存活判断
    SpringCloud-Ribbon:认识并配置负载均衡
    SpringCloud-Feign:接口式微服务调用
    SpringCloud-Eureka(3)集群配置和了解CAP原则
    SpringCloud-Eureka(2)服务注册与信息配置
    SpringCloud-Eureka(1)认识Eureka和初步配置
    Promise
    es6
  • 原文地址:https://www.cnblogs.com/wangduo/p/5217648.html
Copyright © 2011-2022 走看看