グローバル環境にエクスポートする前に変数名を変更したいのですが、データが非常に大きいため、別の変数にコピーして最初の変数を削除できません。
データは特定の変数に読み込まれ、変更することもできません。異なるバックグラウンドジョブで複数回使用されるので、名前を変更して名前を変更して送信することで、ジョブが混ざらないようにして、次のジョブを実行できます。ジョブのロードと名前の変更など。
基本的には、ワークスペースでマウスを使ってできることをコマンドウィンドウで行うことです。
誰でもそれを行う方法を知っていますか?
メモリコピーなしでこれを行うと考えることができる唯一の方法は、ハンドルクラスのサブクラスであるオブジェクトに元のデータをラップすることです。
http://www.mathworks.co.uk/help/techdoc/matlab_oop/brfylzt-1.html
次に、通常の構文を使用してハンドルクラスを「コピー」できます。
classB=classA
..しかし、同じデータに対してのみエイリアスを作成します(classBへの変更はclassAに反映されます)。これは、ポインターのようなセマンティクスに最も近いものです。
たとえば、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
..データは、データのもう1つのハンドルy
で引き続き使用できます。メモリは、それを参照するハンドルがなくなったときにのみ解放されます( 参照カウント がゼロに達したとき)。