2010-11-03 16 views
8

लूप के अंदर साजिश करते समय आपको मैटलैब प्लॉट में अक्षों की निश्चित स्केलिंग कैसे मिलती है? मेरा लक्ष्य यह देखना है कि लूप के अंदर डेटा कैसे विकसित हो रहा है। मैंने बिना किसी किस्मत के axis manual और axis(...) का उपयोग करने का प्रयास किया। कोई सुझाव?मैटलैब अक्ष स्केलिंग

मुझे पता है hold on चाल है, लेकिन मैं पुराना डेटा नहीं देखना चाहता हूं।

+2

आप अनियंत्रित फीचर 'LimInclude' के बारे में भी पढ़ना चाहेंगे: http://undocumentedmatlab.com/blog/plot-liminclude-properties/ – Amro

उत्तर

6

आप अपने नए साजिश रची डेटा पुराने साजिश रची डेटा की जगह देखना चाहते हैं, लेकिन एक ही कुल्हाड़ियों सीमा को बनाए रखने, आप कर सकते हैं अपने लूप के भीतर SET कमांड का उपयोग करके प्लॉट किए गए डेटा के एक्स और वाई मानों को अपडेट करें। यहाँ एक सरल उदाहरण है:

hAxes = axes;      %# Create a set of axes 
hData = plot(hAxes,nan,nan,'*'); %# Initialize a plot object (NaN values will 
            %# keep it from being displayed for now) 
axis(hAxes,[0 2 0 4]);   %# Fix your axes limits, with x going from 0 
            %# to 2 and y going from 0 to 4 
for iLoop = 1:200     %# Loop 100 times 
    set(hData,'XData',2*rand,... %# Set the XData and YData of your plot object 
      'YData',4*rand);  %# to random values in the axes range 
    drawnow       %# Force the graphics to update 
end 

जब आप इसके बाद के संस्करण चलाने के लिए, आप एक तारक कूद के आसपास कुल्हाड़ियों में सेकंड के एक जोड़े के लिए देखेंगे, लेकिन कुल्हाड़ियों सीमा तय रहेगी। आपको HOLD कमांड का उपयोग करने की आवश्यकता नहीं है क्योंकि आप केवल एक मौजूदा प्लॉट ऑब्जेक्ट अपडेट कर रहे हैं, न कि नया जोड़ना। यहां तक ​​कि यदि नया डेटा धुरी सीमा से परे फैला हुआ है, तो सीमाएं नहीं बदलेगी।

+4

+1 मेरे पास कुछ सुझाव भी हैं: 1) झिलमिलाहट से बचने के लिए, आपको डबल बफरिंग 'सेट (जीसीएफ,' डबलबफर ',' ऑन ') सक्षम करना चाहिए। 2) यदि आप ड्राइंग की गति में वृद्धि करना चाहते हैं और एक चिकनी एनीमेशन प्राप्त करना चाहते हैं, तो 'सामान्य' के अलावा 'EraseMode' प्रॉपर्टी' को सेट करें (मैं इस मामले में 'xor' का उपयोग करूंगा)। बेशक आपको निम्न स्तर के कार्यों जैसे लाइन, पैच, टेक्स्ट इत्यादि का उपयोग करना होगा .. अधिक जानकारी के लिए इस गाइड को देखें: http://www.mathworks.com/support/tech-notes/1200/1204। एचटीएमएल # धारा% 2023 – Amro

1

आपको अक्ष की सीमा निर्धारित करनी है; आदर्श रूप से आप लूप शुरू करने से पहले ऐसा करते हैं।

यह

x=1:10;y=ones(size(x)); %# create some data 
figure,hold on,ah=gca; %# make figure, set hold state to on 
for i=1:5, 
    %# use plot with axis handle 
    %# so that it always plots into the right figure 
    plot(ah,x+i,y*i); 
end 

काम करेंगे नहीं यह काम करेंगे

x=1:10;y=ones(size(x)); %# create some data 
figure,hold on,ah=gca; %# make figure, set hold state to on 
xlim([0,10]),ylim([0,6]) %# set the limits before you start plotting 
for i=1:5, 
    %# use plot with axis handle 
    %# so that it always plots into the right figure 
    plot(ah,x+i,y*i); 
end