2012-07-23 16 views
5

मेरे पास एक सतह साजिश है जिसे मैं करने की कोशिश कर रहा हूं। एक्स एक 11 तत्व वेक्टर है, वाई एक 300 तत्व वेक्टर और जेड 300 * 11 तत्व मैट्रिक्स है।मैटलैब: सतही साजिश काम नहीं कर रही है

जब मैं इस तरह यह साजिश करने का प्रयास करें:

surf(x y z) 

सतह साजिश दिखाई नहीं देता है। अक्ष वहां हैं लेकिन कोई सतह साजिश नहीं है। blank surface plot

हालांकि, अगर किसी कारण से मैं इस तरह मैट्रिक्स के उप-समूह की एक सतह साजिश कार्य करें:

surf(x y(1:31) z(1:31,:)) 

तो यह काम करता है और साजिश दिखाई देता है। working surface plot

जैसे ही मैं 32 में ब्रैकेट में संख्या बढ़ाता हूं, यह काम करना बंद कर देता है। यदि मैं 2:32 से रेंज बदलता हूं तो यह काम करता है, इसलिए डेटा के साथ मैट्रिस के आकार के साथ कुछ लेना देना नहीं है।

यहां क्या हो रहा है? मैं इसे कैसे ठीक करूं?

पीएस मैं कोड संलग्न करता हूं लेकिन यह थोड़ा लंबा और जटिल है, और आयात करता है .txt फ़ाइलें x और y वैक्टर में लोड करने के लिए।

+0

क्या आप कमांड विंडो में कोई लाल पाठ है जब आप पहले कमांड का उपयोग करके प्लॉट करने का प्रयास करते हैं? – Jonas

+0

नहीं, सभी – Eddy

+1

पर कोई लाल टेक्स्ट शायद आप आकृति ('चित्रकार', 'zbuffer',' OpenGL') की 'रेंडरर' संपत्ति को बदलने का प्रयास कर सकते हैं: http://www.mathworks.nl/help/techdoc/ ref/figure_props.html – catchmeifyoutry

उत्तर

6

कभी-कभी, यह मैटलैब के आकृति रेंडरर को बदलने में मदद कर सकता है, जो मूल रूप से बैकएंड है जो चित्रकारी करता है। विकल्प painters, zbuffer, और OpenGL हैं।

चूंकि यह एक आंकड़ा संपत्ति है, तो आप, उदाहरण के लिए एक विशिष्ट आंकड़ा करने के लिए इसे लागू कर सकते हैं:

set(gcf(), 'Renderer', 'painters') 

या default figure properties अपडेट करें (यदि हमेशा की जरूरत है, तो आप इसे अपने user-specific startup.m में डाल सकता है):

set(0, 'Renderer', 'painters') 

इसी प्रकार, वर्तमान प्रतिपादक राज्य पाने के लिए, का उपयोग getset के बजाय:

get(gcf(), 'Renderer') 

विभिन्न प्रस्तुतकर्ताओं के पास विभिन्न प्रदर्शन गुण होते हैं (उदा। OpenGL रेंडरर समर्थित होने पर हार्डवेयर त्वरण का उपयोग कर सकते हैं), लेकिन अलग-अलग quirks (मेरे अनुभव में, getframe() का उपयोग कर फ्रेम कैप्चरिंग दूरस्थ डेस्कटॉप लॉगिन का उपयोग करते समय कुछ प्रस्तुतकर्ताओं के साथ काम करता है, लेकिन सभी नहीं)। जबकि मुझे आपकी समस्या का सटीक कारण नहीं पता है, यह इन अजीब quirks में से एक हो सकता है, तो रेंडरर बदलने की कोशिश करें।

Renderer property documentation से

:

प्रतिपादन स्क्रीन और मुद्रण के लिए प्रयोग विधि। MATLAB ग्राफिक्स प्रस्तुत करने के लिए प्रयुक्त विधि का चयन करता है। विकल्प हैं:

painters - MATLAB द्वारा उपयोग की जाने वाली मूल प्रतिपादन विधि तब होती है जब आंकड़े में केवल सरल या छोटी ग्राफिक्स ऑब्जेक्ट होती है।

zbuffer - MATLAB ग्राफिक्स तेजी से और अधिक वस्तुओं सही रूप में, क्योंकि यह रंग एक प्रति पिक्सेल आधार पर वस्तुओं और MATLAB केवल उन पिक्सेल उस दृश्य में दिखाई दे रहे renders (इस प्रकार सामने-टू-बैक छँटाई त्रुटियों को नष्ट करने) खींचता है। ध्यान दें कि MATLAB एक जटिल दृश्य प्रदर्शित कर रहा है, तो यह विधि बहुत सारी सिस्टम मेमोरी का उपभोग कर सकती है।

OpenGL - ओपनजीएल एक रेंडरर है जो कई कंप्यूटर सिस्टम पर उपलब्ध है। यह रेंडरर आमतौर पर पेंटर्स या ज़बफर से तेज़ होता है और कुछ मामलों में MATLAB को कुछ सिस्टम पर उपलब्ध ग्राफिक्स हार्डवेयर तक पहुंचने में सक्षम बनाता है।

1

बाईं ओर (वाई-अक्ष) और शीर्ष (जेड-अक्ष) के साथ अक्ष के न्यूनतम/अधिकतम मानों में परिवर्तन को देखता है। मुझे लगता है कि यह अभी भी है लेकिन यह बहुत छोटा है।

इस तरह बाद में अक्ष सेट करके देखें: axis([6E-6 8E-6 9.2E14 10E14 0.96 1.06 -1 1])

नोट: E-6 ई-8 हो सकता है, मैं वास्तव में छवि से नहीं बता सकता ...

इस पर आधारित है का कोड: axis([xmin xmax ymin ymax zmin zmax cmin cmax])

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