2010-05-17 18 views
7

मैं जानता हूँ कि मैं ऐसा करके MATLAB में एक 3 डी सतह साजिश बना सकते हैं:मैट्रैब में अनियमित रूप से स्थानांतरित डेटा के साथ मैं सर्फ प्लॉट कैसे बना सकता हूं?

x = linspace(1,10,100); 
y = linspace(10,20,100); 

[X Y] = meshgrid(x,y); 

Z = X * Y; 

surf(X,Y,Z); 

लेकिन यह जरूरी है कि ऊंचाई नक्शा उत्पन्न लाइन अप के लिए सभी नोड्स। मेरे पास डेटा का एक सेट है जिसमें मनमाना बिंदु (x, y) और ऊंचाई (z) है। क्या ग्राफ को साजिश करने का कोई आसान तरीका है जो surf पर समान रूप से बिंदुओं के बीच एक सतह उत्पन्न करेगा?

tri = delaunay(x,y); 
trisurf(tri,x,y,z); 

आप घने डेटा है, तो आप shading interp करना चाहेंगे (या किसी अन्य मूल्य:

आप trisurf फ़ंक्शन का उपयोग कर सकते हैं:

उत्तर

9

Appologies, कुछ शिकार के बाद मैं अपने ही सवाल का जवाब देने में कामयाब , doc shading देखें) ताकि आपको ग्रिड के कारण ब्लैक ब्लॉब न मिले।

+2

दरअसल, ब्लैक ब्लॉब से बचने का सबसे अच्छा तरीका संपत्ति 'एजकॉलर' को 'none' पर सेट करना है। – Jonas

3

ऐसा लगता है कि आपको त्रिभुज सतह उत्पन्न करने और साजिश करने के लिए DELAUNAY और TRISURF का उपयोग करके अपना उत्तर मिल गया है।

एक विकल्प के रूप में, आप SURF कमांड के साथ प्लॉट किए जा सकने वाली सतह उत्पन्न करने के लिए अपने गैर-वर्दी-दूरी वाले बिंदुओं पर नियमित रूप से दूरी वाले ग्रिड को भी फिट कर सकते हैं। मैं चर्चा करता हूं कि TriScatteredInterp class (या बहिष्कृत फ़ंक्शन GRIDDATA) my answer से this other question on SO में यह कैसे किया जा सकता है।

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

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