我有一些数据(.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
答案 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上使用save
和load
:
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