MATLAB

2010-05-11 8 views
6

में डेटापॉइंट्स के समूहों के चारों ओर एक बहुभुज चित्रण करना मेरे पास प्रत्येक निश्चित समूह (समूह) से संबंधित डेटापॉइंट्स का एक सेट है। मुझे इन समूहों में से प्रत्येक के चारों ओर एक बहुभुज आकर्षित करने की जरूरत है। क्या कोई जानता है कि यह कैसे करें?MATLAB

इससे कोई फर्क नहीं पड़ता कि मैं पॉलीगॉन ड्राइंग के लिए वास्तविक डेटापॉइंट्स का उपयोग या उपयोग नहीं करता हूं। मुझे बस एक बहुभुज में लपेटने की जरूरत है।

उत्तर

7

convhull फ़ंक्शन का प्रयास करें। यह आपके डेटा सेट में बिंदुओं से सूचकांक देता है जो उत्तल हल को परिभाषित करेगा। आपको प्रत्येक क्लस्टर के लिए ऐसा करना होगा जिसे आप प्लॉट करते हैं।

उदाहरण के लिए:

x=rand(1,100); %#generate x and y data for your clusters 
y=rand(1,100); 
k=convhull(x,y); %#generate indices marking the outermost points 

hold on 
plot(x,y,'b.') %# plot your cluster points 
plot(x(k),y(k),'r-') %# plots only k indices, giving the convex hull 

यह आपको एक बहुभुज जिसका सूचकांक अपने समूहों के बाहरी कारकों के साथ मेल खाना दे देंगे।

1

मुझे यकीन नहीं है कि इसके लिए पूर्व-निर्मित समाधान है क्योंकि मैं MATLAB से परिचित नहीं हूं, हालांकि ऐसा लगता है कि आपको एक उत्तल हल समाधान की आवश्यकता है।

आशा है कि यह आपको सही दिशा में इंगित करे।

1

रूपांतरण केवल तभी काम करता है जब आपके पास उत्तल आकार (जैसे एलीपसॉइड) हो। यदि आपके डेटा वितरण में अवतल घटता है, जैसे केला आकार, तो कन्फुल काम नहीं करेगा। सौभाग्य से, MATLAB में इसे संभालने के लिए एक फ़ंक्शन है: अल्फाशिप

"अल्फा" मान के आधार पर, आपको परिणामी बहुभुज में कम या कम पहलू मिलते हैं।

एक बार आप एक्स है, पहलुओं के y निर्देशांक, आप या तो उन्हें सीधे प्लॉट कर सकते हैं लेकिन बहुभुज फ्लैट पक्ष होगा, या: interpolating के बजाय

, आप एक एक्स, वाई, जेड ग्रिड परिभाषित कर सकते हैं जिसमें डेटा देखने के लिए, और पूछें, एक्स, वाई अल्फा आकार के भीतर है? अगर ऐसा है, यह एक मूल्य जेड = 1 देने के लिए और नहीं तो यह एक मूल्य के z = 0. तो देना बस ग्रिड समोच्च जहां z = 1.

आप भी impoly उपयोग कर सकते हैं बहुभुज मैन्युअल

आकर्षित करने के लिए Matlab फ़ाइल एक्सचेंज पर hobbysplines आपको बहुभुज

के किनारों को सुचारू बनाने की अनुमति देता है