2013-08-28 4 views
5

पर प्लॉट करना मैंने साजिश को साजिश करने के लिए साजिश कमांड का उपयोग किया और फिर सेट कमांड का उपयोग करके अपनी कई संपत्तियों को बदल दिया। मैं साजिश के हैंडल को भी स्टोर करता हूं (एच 1 कहता हूं)।किसी मौजूदा MATLAB साजिश को किसी अन्य आकृति में

मुझे अपने कोड में बाद में उसी आंकड़े को प्लॉट करने के लिए हैंडल का उपयोग करने की आवश्यकता है। मैंने प्लॉट कमांड की जांच की और उसे कोई भी संस्करण नहीं मिला जो संभाल स्वीकार करता है। मैंने Xdata और Ydata प्राप्त करने और उसी आंकड़े को फिर से साजिश करने के लिए उनका उपयोग करने का भी विचार किया।

सबसे आसान समाधान क्या है?

संपादित करें 1: पीटरम द्वारा सुझाए गए प्रतिलिपि पर आधारित एक कामकाजी नमूना कोड।

hf(1) = figure(1); 
plot(peaks); 

hf(2) = figure(2); 
plot(membrane); 

hf(3) = figure(3); 
ha(1) = subplot(1,2,1); 
ha(2) = subplot(1,2,2); 

for i = 1:2 
    hc = get(hf(i),'children'); 
    hgc = get(hc, 'children'); 
    copyobj(hgc,ha(i)); 
end 

संपादित करें 2: मैं भी this function कि एक subplot में (कथा सहित) आंकड़े कॉपी कर सकते हैं पाया।

उत्तर

5

मैंने पहले इस स्थिति में भाग लिया है। आप जो कार्य करने की कोशिश कर रहे हैं उसके आधार पर copyobj उचित हो सकता है। यह फ़ंक्शन आपको एक अक्ष की सामग्री लेने और इसे एक नए आंकड़े में कॉपी करने देता है।

2

आप फ़ाइल में चित्र को सहेजने के लिए saveas का उपयोग कर सकते हैं, और open इस फ़ाइल से सटीक उसी आंकड़े को लोड करने के लिए उपयोग कर सकते हैं।

3

@PeterM अच्छा जवाब में सुधार, एक आसान तरीका होगा:

fig2H=copy(gcf) % or change gcf to your figure handle 

लेकिन यह, आप क्या चाहते हैं पर निर्भर करता है अगर आप केवल कुल्हाड़ियों, या छेद आंकड़ा चाहते हैं ...

Btw, यह लगता है कि किंवदंती हैंडल की प्रतिलिपि न लें, कम से कम एचजी 2

0

यह जो आप चाहते हैं उसे पूरा करने का सबसे शानदार तरीका होगा।

% Sample plot 
f1 = figure(1); 
plot(0:0.1:2*pi, sin(0:0.1:2*pi)); 
f2 = figure(2); 

% The code you need 
saveas(f1, 'temp.fig') 
f2 = hgload('temp.fig') 
delete('temp.fig') 
संबंधित मुद्दे