2012-04-25 20 views
5

मुझे एक फिल्म बनाने की जरूरत है। मान लीजिए, मैं इस पर कुछ बहुत अनुकूलित एक धुरी और साजिश बनाने के लिए:मैटलैब धुरी में, सभी अक्ष गुणों को रखते हुए केवल डेटा को अपडेट कैसे करें?

figure; 
ax = plot(x, y, 'linewidth', 3, 'prop1', value1, 'prop2', value2, ...); 
grid minor; 
axis(ax, [xmin xmax ymin ymax]); 
legend(ax, ...); 
xlabel(ax, ...); 
ylabel(ax, ...); 
title(ax, ...); 

अब मैं एक पाश, जहां केवल y के मूल्यों अद्यतन किया जा रहा है चलाते हैं।

for k = 1 : N 
% y changes, update the axis 
end 

नया क्या y (या x और y) के साथ धुरी अद्यतन करने के लिए तेज और आसान तरीका है, सभी अक्ष गुण रखते हुए है?

उत्तर

6

एक तेजी से बस डेटा आप की y- मानों अद्यतन करने के लिए है प्लॉट किया गया है:

%# note: plot returns the handle to the line, not the axes 
%# ax = gca returns the handle to the axes 
lineHandle = plot(x, y, 'linewidth', 3, 'prop1', value1, 'prop2', value2, ...); 

%# in the loop 
set(lineHandle,'ydata',newYdata) 

संपादित करें यदि कई लाइनें हैं, तो lineHandle एक वेक्टर है? आप अभी भी एक चरण में अपडेट कर सकते हैं; हालांकि, डेटा को सेल सरणी में कनवर्ट करने की आवश्यकता है।

%# make a plot with random data 
lineHandle = plot(rand(12)); 

%# create new data 
newYdata = randn(12); 
newYcell = mat2cell(newYdata,12,ones(1,12)); 

%# set new y-data. Make sure that there is a row in 
%# newYcell for each element in lineH (i.e. that it is a n-by-1 vector 
set(lineHandle,{'ydata'},newYcell(:)); 
+0

धन्यवाद, जोनास। यह काम करता हैं। बीटीडब्ल्यू, यदि वाई एक मैट्रिक्स है, तो लाइनहैंडल एक वेक्टर है, इसलिए मैं प्रत्येक कॉलम के लिए सेट (लाइनहैंडल (i), 'ydata', newYdata (:, i)) को कॉल करता हूं, है ना? या एक बार में वाई के सभी कॉलम अपडेट करने के लिए एक चाल है? – Serg

+1

@ सर्ग: हां, एक चाल है। मेरा संपादन देखें। – Jonas

+0

इसके लिए बहुत धन्यवाद। – Serg

0

बस अक्ष संभाल वापस बाद में साजिश को पारित आदेश

यानी

plot(ax, ...) 
बजाय

ax = plot(...) 
+0

क्षमा करें, learnvst, लेकिन यह काम नहीं करता है। साजिश (कुल्हाड़ी, ...) सभी धुरी गुणों को हटा देती है – Serg

+0

@ सर्ग: यदि आप अगली साजिश कमांड से पहले 'सभी को पकड़ें' कहते हैं, तो आप पुराने अक्ष गुणों को रखेंगे, लेकिन पुरानी रेखा भी रखेंगे। – Jonas

+0

@ जोनास: मुझे पता है, लेकिन मैं पुरानी रेखा नहीं रखना चाहता हूं। – Serg

संबंधित मुद्दे