我想在将变量名称导出到全局环境之前更改变量名称,数据非常大,这意味着我无法将其复制到另一个变量并删除第一个变量。
数据被加载到某些变量并且我也无法更改,它在不同的后台作业中被多次使用,所以我要做的是重命名它并将其重命名以便作业不会混合为下一个工作加载并重新命名等。
基本上是在命令窗口中我可以用工作区中的鼠标做什么....
有谁知道怎么做?
答案 0 :(得分:14)
答案 1 :(得分:2)
在没有内存副本的情况下,我能想到的唯一方法是将原始数据包装在一个对象中,该对象是句柄类的子类。
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
中可用。仅当没有更多句柄引用它时(reference count已达到零),才释放内存。