グローバル環境にエクスポートする前に変数名を変更したいのですが、データが非常に大きいため、別の変数にコピーして最初の変数を削除することはできません。
データは特定の変数に読み込まれ、変更することもできません。異なるバックグラウンドジョブで複数回使用されるため、名前を変更して名前を変更して送信し、ジョブが混ざらないようにします。ジョブのロードと名前の変更など。
基本的には、コマンドウィンドウで、ワークスペースでマウスを使ってできることを実行します。
誰かがそれを行う方法を知っていますか?
メモリコピーなしでこれを行うことを考えることができる唯一の方法は、ハンドルクラスのサブクラスであるオブジェクトで元のデータをラップすることです。
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
エイリアス名の1つをクリアすることもできます。。
clear x
..そしてデータはデータの他のハンドルで引き続き利用可能ですy
。メモリは、それを参照するハンドルがなくなったとき(参照カウントがゼロに達したとき)にのみ解放されます。