如何从工作空间中的变量中删除全局标志

时间:2018-05-16 08:49:16

标签: matlab global-variables

我有一些数据(.mat)在保存时设置为全局,现在保存为全局单元格。当我将其加载到工作区时,它会自动设置为全局。

有没有办法从这个变量中删除全局标志,而不从工作空间中删除变量本身,只有全局属性?

当我复制这个数组时,它会自动复制它的全局属性,在documentation中它只说明如何设置为全局而不是如何删除它。我正在使用MATLAB R2015a。

global exportmat
exportmat = cell(889,12);
filename = 'test.mat';
save(filename)

clear -globals exportmat

load('test.mat')
whos

  Name              Size            Bytes  Class    Attributes

  exportmat       889x12            85344  cell     global   

1 个答案:

答案 0 :(得分:3)

最简单的方法,RAM允许,我能找到的只是重新声明它:

global A
A=3;
whos A
  Name      Size            Bytes  Class     Attributes

  A         1x1                 8  double    global    
B=A;
whos B
  Name      Size            Bytes  Class     Attributes

  B         1x1                 8  double               % Note: not global
clear -global
A=B;
clear B;
whos A
  Name      Size            Bytes  Class     Attributes

  A         1x1                 8  double         

如果您更频繁地需要此变量,只需使用此标记删除global标志并再次保存。

在R2016b上使用saveload

global exportmat
exportmat = cell(889,12);
filename = 'test.mat';
save(filename)

clear exportmat
load('test.mat')
% whos exportmat

exportmat2=exportmat;

whos

  Name              Size            Bytes  Class    Attributes

  exportmat       889x12            85344  cell     global    
  exportmat2      889x12            85344  cell               
  filename          1x8                16  char               

如果R2015a不适用于细胞(我无法检查,因为我没有该版本),您可以重新分配每个细胞内容,如果它们包含双打,它应该有用: / p>

B = cell(size(A));
for ii = 1:size(B,1)
    for jj = 1:size(B,2)
        tmp = A{ii,jj};
        B{ii,jj} = tmp;
    end
end