2012-06-15 304 views
14

我想在將其導出到全局環境之前更改變量名稱,數據非常大,這意味着我無法將其複製到另一個變量並刪除第一個變量。更改變量名稱matlab

數據被加載到某些變量,我不能改變,它在不同的後臺作業中被多次使用,所以我想要做的是重命名它並重新命名,以便作業不會混合,對於接下來的工作負載和重命名後再次等

主要是在命令窗口中我可以在工作區中的鼠標事要做....

有誰知道怎麼辦呢?

+2

直截了當的方法:只是將它複製到另一個變量,並摧毀舊的。此外,這是[這個問題]的可能重複(http://stackoverflow.com/questions/5964639/matlab-renaming-workspace-elements-from-command-window)。 –

+2

「...數據非常大,這意味着我不能將它複製到另一個變量並刪除第一個...「 –

+0

Chris:沒關係。MATLAB使用引用,A = B並不意味着B被複制。 –

回答

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 

有趣的事情發生在xy被修改,即

>> 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達到零時)。