我想在导出到全局环境之前更改一个变量名,数据非常大,这意味着我不能将它复制到另一个变量并删除第一个。
数据被加载到某些变量并且我也无法更改,它在不同的后台作业中多次使用,所以我想要做的是重命名它并将其发送重命名,这样作业就不会混合,然后是下一个工作负载并再次重命名等。
基本上是在命令窗口中做我可以在工作区中用鼠标做的事情......
有谁知道怎么做?
在没有内存副本的情况下,我能想到的唯一方法是将原始数据包装在一个对象中,该对象是句柄类的子类。
http://www.mathworks.co.uk/help/techdoc/matlab_oop/brfylzt-1.html
然后,您可以使用普通语法“复制”句柄类
classB=classA
..但您只是为相同的数据创建别名(对 classB 的更改反映在 classA 中)。这是 matlab 中最接近类指针语义的东西。
例如,创建一个名为myHandle
并粘贴以下文本来定义类的文件。.
classdef myHandle < handle
properties
data
moreData
end
methods
end
end
然后,您可以像使用常规结构一样使用它。从命令行做..
>> x = myHandle
x =
myHandle handle
Properties:
data: []
moreData: []
Methods, Events, Superclasses
...然后我们可以填充数据。. .
>> x.data = [1 2 3 4];
>> x.moreData = 'efg';
...一旦原始对象填充了数据,就可以通过键入来生成原始数据的别名。.
>> y = x
有趣的事情发生在x
何时y
被修改,即
>> y.data = [33 44 55 66];
>> disp(x)
x =
myHandle handle
Properties:
data: [33 44 55 66]
moreData: 'f'
Methods, Events, Superclasses
您甚至可以清除其中一个别名。.
clear x
..并且数据仍将在数据的另一个句柄中可用,y
. 仅当没有更多句柄引用它时(当引用计数达到零时)才会释放内存。