एकमात्र तरीका जिसे मैं स्मृति प्रतिलिपि के बिना ऐसा करने के बारे में सोच सकता हूं, मूल डेटा को उस ऑब्जेक्ट में लपेटना होगा जो हैंडल क्लास का उप-वर्ग है।
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
दिलचस्प बात यह है, जब y
संशोधित किया गया है x
के लिए होता अर्थात
>> 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 शून्य तक पहुंच गया है)।
सीधे रास्ता: बस इसे किसी अन्य चर में कॉपी करें और पुराने को नष्ट कर दें। साथ ही, यह [इस प्रश्न] का एक संभावित डुप्लिकेट है (http://stackoverflow.com/questions/5964639/matlab-renaming-workspace-elements-from-command-window)। –
"...डेटा बहुत बड़ा है, जिसका अर्थ है कि मैं इसे किसी अन्य चर में कॉपी नहीं कर सकता हूं और पहले को हटा सकता हूं ... " –
क्रिस: इससे कोई फर्क नहीं पड़ता। MATLAB संदर्भों का उपयोग करता है, ए = बी का मतलब यह नहीं है कि बी की प्रतिलिपि बनाई गई है। –