2016-11-16 5 views
6

मेरे पास तीन 5x5 मैट्रिस हैं, यानी X, Y और U। यहां बताया गया है कि वे कैसा दिखते हैं।"आकृति" के बाद "होल्ड ऑन" जोड़ने से साजिश अलग हो सकती है

figure; 
mesh(X, Y, U); 

यह आउटपुट है:

X = 

     0   0   0   0   0 
    0.2500 0.2500 0.2500 0.2500 0.2500 
    0.5000 0.5000 0.5000 0.5000 0.5000 
    0.7500 0.7500 0.7500 0.7500 0.7500 
    1.0000 1.0000 1.0000 1.0000 1.0000 


Y = 

     0 0.2500 0.5000 0.7500 1.0000 
     0 0.2500 0.5000 0.7500 1.0000 
     0 0.2500 0.5000 0.7500 1.0000 
     0 0.2500 0.5000 0.7500 1.0000 
     0 0.2500 0.5000 0.7500 1.0000 


U = 

     0 0.2474 0.4794 0.6816 0.8415 
    0.3093 0.5991 0.8519 1.0519 1.1862 
    0.7191 1.0224 1.2623 1.4238 1.4962 
    1.1929 1.4727 1.6611 1.7460 1.7220 
    1.6829 1.8980 1.9950 1.9680 1.8186 

अब अगर मैं निम्नलिखित स्निपेट का उपयोग कर U प्लॉट करने के लिए कोशिश

enter image description here

, तो इसके बजाय मैं निम्नलिखित कोड का उपयोग करें:

figure; 
hold on; 
mesh(X, Y, U); 

मैं:

enter image description here

हो रहा क्यों है? स्पष्ट रूप से hold on के बिना मेरे पास एक और आयाम है। मैं अपने मामले के बारे में नहीं जानता कि कौन सा सही होगा। Matlab ऐसा क्यों करता है?

उत्तर

7

यह समझने के लिए कि क्या हो रहा है, यह जानना महत्वपूर्ण है कि अधिकांश MATLAB साजिश आदेशों के लिए, यदि कोई axes कमांड को स्पष्ट रूप से आपूर्ति नहीं किया जाता है, तो वर्तमान axes डिफ़ॉल्ट रूप से उपयोग किया जाता है। यदि axes मौजूद नहीं है, तो कोई बनाया गया है और इसकी उपस्थिति साजिश आदेश द्वारा पूरी तरह से नियंत्रित होती है। यदि वर्तमान axes ऑब्जेक्ट है, तो आमतौर पर साजिश कमांड axes ऑब्जेक्ट की उपस्थिति को संशोधित करता है क्योंकि सिद्धांत में आपने इसे पहले ही अनुकूलित कर लिया है।

hold on वर्तमान अक्ष की NexPlot संपत्ति को संशोधित करता है ताकि अगली वस्तु जो प्लॉट की गई हो, पिछले ऑब्जेक्ट को ओवरराइट नहीं करेगी। यदि वर्तमान में कोई axes मौजूद नहीं है, तो hold स्पष्ट रूप से axes ऑब्जेक्ट बना देगा। इस नए अक्ष ऑब्जेक्ट का डिफ़ॉल्ट दृश्य 2 डी XY व्यू है। चूंकि axes ऑब्जेक्ट अब पहले से मौजूद है जब आप mesh पर कॉल करते हैं, तो यह इसे बदलने के बजाय वर्तमान दृश्य (और अन्य axes पैरामीटर) का उपयोग करता है।

मामले ऐसे हैं जिनमें hold on कॉल नहीं करते, कोई axes, mesh कॉल करने से पहले मौजूद है तो mesh एक डिफ़ॉल्ट axes वस्तु ही गुण है कि एक जाल दृश्यमान करने के लिए आदर्श हैं के साथ बनाता है। इसमें 3 डी व्यू और ग्रिड लाइनों को प्रदर्शित करना शामिल है।

आप मैन्युअल view(3) बुला डिफ़ॉल्ट 3 डी दृश्य का उपयोग करने के द्वारा axeshold on द्वारा बनाई गई के गुणों को बदल सकते हैं और grid on ग्रिड को चालू करने के निशान

figure 
hold on 

% Make it the default 3D view 
view(3) 

% Show the gridlines 
grid on 

mesh(X, Y, U) 
+0

थोड़ा इस विस्तार करने के लिए, 'hold' को संशोधित करता है' axes 'ऑब्जेक्ट की ['NextPlot' प्रॉपर्टी] (https://www.mathworks.com/help/matlab/ref/axes-properties.html#property_NextPlot)। जब आप 'होल्ड ऑन' सेट करते हैं, तो 'नेक्स्टप्लॉट'' 'एड' 'पर सेट होता है, जो अक्ष को गुणों को रीसेट या संशोधित किए बिना मौजूदा अक्षों को साजिश जोड़ता है (उदाहरण के लिए 2 डी से 3 डी तक दृश्य बदलना)। – excaza

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