2

我对 Matlab 中的全局变量有一个非常奇怪的问题。

通常,当您在为其分配任何值之前将变量声明为全局变量时,它将保留为空变量。我有一个变量R,我想声明为全局变量。但是在我输入clearand之后global R,变量列表R中已经设置为 1*18 数组,其中填充了一些零和其他数字。

我确实有一些共享全局变量的其他函数和脚本R,但我确保在我键入后没有调用任何脚本或函数,并且当我从提示符clear键入时变量列表已经为空。global R

在此处输入图像描述

但是,问题仍然存在。我想我一定对全局变量的规则有一些严重的误解。谁能解释为什么会这样?

提前致谢。

4

1 回答 1

6

clear命令不会清除全局变量。它会从您的本地工作区中删除该变量,但它仍然存在。因此,如果您之前为其分配了一些值,再次声明它只是“显示”本地范围内的全局变量。您必须使用clear allclear global。从以下文档clear

如果变量名称是全局的,则 clear 将其从当前工作区中删除,但仍保留在全局工作区中。

考虑以下示例:

>> clear all; 
>> global v;
>> v = 1:100;  % assign global variable
>> whos        % check if it is there

  Name      Size             Bytes  Class     Attributes

  v         1x100              800  double    global    

>> clear;
>> whos       % nothing declared in local workspace
>> global v;
>> whos       % ups, v is not empty!!

  Name      Size             Bytes  Class     Attributes

  v         1x100              800  double    global    

>> clear global;     % you have to clear it properly
>> whos
>> global v          % now it is empty
>> whos
  Name      Size            Bytes  Class     Attributes

  v         0x0                 0  double    global    
于 2012-10-28T15:12:19.457 回答