美文网首页Matlab
Matlab的global变量

Matlab的global变量

作者: constant007 | 来源:发表于2016-03-15 13:10 被阅读337次

global variable(全局变量)
global variable(全局变量),这个概念基本上在所有的主流编程语言中都有,但是在不同的编程语言中,他们的含义是不一样的。
以C语言为例,其全局变量是指定义(声明)在C文件的所有函数以外的变量,它们的作用域从其定义的地方开始,直到这个文件的结尾,在C语言中,全局变量是以文件为单位的(如果一个变量是全局变量,我们指的是这个变量在这个文件内是全局的,如果不用extern声明,那么在其他文件中,这个变量在那个文件中仍然是不可见的)。其实,C语言中处理全局变量的方式是大部分编程语言的处理方式。

但是Matlab中处理全局变量有一种不同的方式。
Matlab中的workspace,在Matlab中,global声明是针对Workspace的,所以要搞清楚Matlab的global是怎样工作的,那么就要先说说Matlab的workspace。Matlab中的代码可以位于三种不同的地方,第一种是直接在其command line中写的代码,这些代码的输入参数来自于当前Workspace,而输出也进入当前Workspace;第二种代码是写在一个script中的,这些代码的输入输出对一个与当前script同名的workspace起作用;第三种代码写在一个function中,这种代码的输入输出对一个与当前的函数名相同的workspace起作用(nested function除外)。
Matlab中有一个特殊的workspace叫做Base workspace,上面说过,所有的script运行的时候都会有操作一个和其同名的workspace,实际上,所有的script对应的workspace中的内容都和Base workspace是一样的,也就是说,所有的script都在操作一个workspace,那就是Base workspace。当然,Base workspace还要受command line的控制因为command line影响的是当前的workspace。

但是平时大家可能很少注意到有这么多的workspace,因为所有的这些workspace是只有在你使用Debug模式才能被看到的(所谓Debug模式,是指你在程序中加入了断点,程序跑到断点的位置会停下来)。如果你没有使用Debug模式,而是直接让程序直接跑,那么你的workspace Stack将是灰色的:

如果你使用Debug模式,那么你的workspace stack将是一个下拉列表框:上面说到的workspace当使用Debug模式的时候我们是可以看到的,而Matlab运行时还有一个workspace是怎么也不能直接看到的(可以通过命名看到),那就是global workspace,
其详细介绍见下一节。

Matlab中的global variable

说完了Mtalab的workspace,那么就可以说Matlab中的global variable了,在使用Matlab是,我们大部分时候会在函数中使用global,其实在Matlab中,global这个语句可以出现在上面所说的三种地方的任意一个地方,有了上面的workspace的介绍,要理解其所做的事情也是比较直接了。
当Matlab中出现了global语句时,Matlab会到global workspace中查找声明的变量是否已经在global workspace中存在了,如果不存在,那么Matlab会在global workspace中创建这个变量,并给其赋值空([]),并且在当前的workspace中创建一个也其同名的变量,这个变量实际上是global workspace中的变量的link,其值会保持和global workspace中的值一样;如果这个变量已经存在了,那么不会在global workspace中重新创建这个变量,而是直接在当前的workspace中创建一个与其同名的变量,其也是global workspace中的变量的link。所以当我们更新一个global变量的时候,所有对其声明了global的workspace中都会同时更新。
clear global variable因为global variable实际存在于global workspace,而在各个使用了的workspace中有其link,所以使用clear时会表现得有点不同。
当我们使用clear name删除一个变量时,如果这个变量是global声明出来的,那么这条命令实际上只删除了当前workspace中的link,对global workspace和其他workspace中的值没有影响。就算我们使用这条命令删除了所有workspace中的link,global workspace中的值还是没有删除的。
如果我们真的要删除一个global variable,那么我们必须使用

clear global name

这样变量将从global workspace和所有其他的workspace中同时删除。当然,我们也可以使用clear all,因为clear all是包含了clear global的。

参考链接

相关文章

  • Matlab的global变量

    global variable(全局变量)global variable(全局变量),这个概念基本上在所有的主流编...

  • Matlab入门 section2

    MATLAB变量 每个MATLAB变量可以是数组或者矩阵。 MATLAB可以多个赋值 多个任务可以在同一行。例如,...

  • git设置http全局代理

    git config --global 变量名称 变量内容git config --global --unset ...

  • MATLAB语法——变量名、条件与循环结构

    标签: MATLAB 概述 上次内容,我们介绍了 MATLAB 中逻辑类型(logical)的变量,这种变量只有两...

  • 0、Matlab基础

    1、常量与变量 (1) matlab中又一些预定义的变量值,称为常量。常用的常量如下表: (2)matlab中变量...

  • php基础

    变量作用域 全局变量(函数外变量)局部变量(函数内变量)超全局变量 global关键字 global关键字允许从脚...

  • Node入门教程(5)第四章:global 全局变量

    global - 全局变量 全局对象(global object),不要和 全局的对象( global objec...

  • Python篇-函数(二)函数结构与存储

    一 : 全局变量与局部变量 全局变量,函数内部直接使用 函数内部的局部变量 global 使用global相当于引...

  • 原型与原型链

    一.全局变量全局变量是一种是 ECMAScript 规定的(global),例如:global.parseIntg...

  • Python global变量

      偶然遇到一次“global name 'aglobalname' is not defined”问题,又重新理...

网友评论

    本文标题:Matlab的global变量

    本文链接:https://www.haomeiwen.com/subject/qzxqlttx.html