खोज…


टिप्पणियों

  • गैर-दस्तावेजी सुविधाओं का उपयोग करना एक जोखिम भरा व्यवहार माना जाता है 1 , के रूप में इन सुविधाओं को सूचना के बिना परिवर्तन कर सकते हैं या बस अलग MATLAB संस्करणों पर अलग तरह से काम। इस कारण से, रक्षात्मक प्रोग्रामिंग तकनीकों को नियोजित करने की सलाह दी जाती है, जैसे कि दस्तावेज़ में कमियां try/catch दस्तावेज़ों को try/catch साथ कोड के अनजाने टुकड़ों को संलग्न करना।

C ++ संगत सहायक कार्य

मतलाब कोडर का उपयोग कभी-कभी कुछ बहुत सामान्य कार्यों के उपयोग से इनकार करता है, अगर वे सी ++ के अनुकूल नहीं हैं। सापेक्ष रूप से अक्सर अनिर्दिष्ट सहायक कार्य मौजूद होते हैं, जिनका उपयोग प्रतिस्थापन के रूप में किया जा सकता है।

यहाँ समर्थित कार्यों की एक व्यापक सूची है।

और गैर-समर्थित कार्यों के लिए विकल्पों का एक संग्रह निम्नलिखित है:


कार्यों sprintf और sprintfc काफी समान हैं, पूर्व रिटर्न एक चरित्र सरणी, बाद एक सेल स्ट्रिंग:

 str = sprintf('%i',x)   % returns '5' for x = 5
 str = sprintfc('%i',x)  % returns {'5'} for x = 5

हालांकि, sprintfc सी + + के साथ संगत है, जो मैटलैब कोडर द्वारा समर्थित है, और sprintf नहीं है।

तीसरे आयाम में रंग डेटा के साथ रंग-कोडित 2 डी लाइन भूखंड

MATLAB संस्करणों में R2014b से पहले, पुराने HG1 ग्राफिक्स इंजन का उपयोग करते हुए, यह स्पष्ट नहीं था कि रंग कोडित 2D लाइन भूखंड कैसे बनाएं। नए HG2 ग्राफिक्स इंजन के जारी होने के साथ ही येर ऑल्टमैन द्वारा पेश की गई एक नई अनिर्दिष्ट सुविधा :

n = 100;
x = linspace(-10,10,n); y = x.^2;
p = plot(x,y,'r', 'LineWidth',5);

% modified jet-colormap
cd = [uint8(jet(n)*255) uint8(ones(n,1))].';

drawnow
set(p.Edge, 'ColorBinding','interpolated', 'ColorData',cd)

लाइन प्लॉट

अर्द्ध पारदर्शी मार्करों लाइन और तितर बितर भूखंडों में

Matlab R2014b के बाद से आसानी से लाइन और स्कैटर प्लॉट्स के लिए सेमी-ट्रांसपेरेंट मार्करों को प्राप्त करना संभव हो गया है, जो कि Yair Altman द्वारा पेश किए गए अनिर्दिष्ट फीचर्स का उपयोग करके किया गया है

मूल विचार मार्करों के छिपे हुए हैंडल को प्राप्त करना है और वांछित पारदर्शिता प्राप्त करने के लिए EdgeColorData में अंतिम मूल्य के लिए एक मूल्य <1 लागू करना है।

यहाँ हम scatter लिए जाते हैं:

%// example data
x = linspace(0,3*pi,200);
y = cos(x) + rand(1,200);

%// plot scatter, get handle
h = scatter(x,y); 
drawnow; %// important

%// get marker handle
hMarkers = h.MarkerHandle; 

%// get current edge and face color
edgeColor = hMarkers.EdgeColorData
faceColor = hMarkers.FaceColorData

%// set face color to the same as edge color
faceColor = edgeColor;

%// opacity
opa = 0.3;

%// set marker edge and face color
hMarkers.EdgeColorData = uint8( [edgeColor(1:3); 255*opa] ); 
hMarkers.FaceColorData = uint8( [faceColor(1:3); 255*opa] ); 

यहाँ छवि विवरण दर्ज करें

और एक लाइन plot

%// example data
x = linspace(0,3*pi,200);
y1 = cos(x);
y2 = sin(x);

%// plot scatter, get handle
h1 = plot(x,y1,'o-','MarkerSize',15); hold on
h2 = plot(x,y2,'o-','MarkerSize',15); 
drawnow; %// important

%// get marker handle
h1Markers = h1.MarkerHandle; 
h2Markers = h2.MarkerHandle; 

%// get current edge and face color
edgeColor1 = h1Markers.EdgeColorData;
edgeColor2 = h2Markers.EdgeColorData;

%// set face color to the same as edge color
faceColor1 = edgeColor1;
faceColor2 = edgeColor2;

%// opacity
opa = 0.3;

%// set marker edge and face color
h1Markers.EdgeColorData = uint8( [edgeColor1(1:3); 255*opa] ); 
h1Markers.FaceColorData = uint8( [faceColor1(1:3); 255*opa] ); 
h2Markers.EdgeColorData = uint8( [edgeColor2(1:3); 255*opa] ); 
h2Markers.FaceColorData = uint8( [faceColor2(1:3); 255*opa] ); 

यहाँ छवि विवरण दर्ज करें

मार्कर हैंडल, जो हेरफेर के लिए उपयोग किया जाता है, आकृति के साथ बनाया जाता है। बाद के आदेशों को कहा जाता है और देरी के मामले में त्रुटियों से बचा जाता है इससे पहले कि drawnow कमांड आकृति का निर्माण सुनिश्चित कर रहा है।

समोच्च भूखंड - पाठ लेबल को अनुकूलित करें

कंट्रोल्स पर लेबल प्रदर्शित करते समय मतलाब आपको संख्याओं के प्रारूप को नियंत्रित करने की अनुमति नहीं देता है, उदाहरण के लिए वैज्ञानिक संकेतन में परिवर्तन।

अलग-अलग टेक्स्ट ऑब्जेक्ट सामान्य टेक्स्ट ऑब्जेक्ट होते हैं, लेकिन आप उन्हें कैसे प्राप्त करते हैं यह अनिर्दिष्ट है। आप उन्हें समोच्च संभाल के TextPrims संपत्ति से एक्सेस करते हैं।

  figure
  [X,Y]=meshgrid(0:100,0:100);
  Z=(X+Y.^2)*1e10;
  [C,h]=contour(X,Y,Z);
  h.ShowText='on';
  drawnow();
  txt = get(h,'TextPrims');
  v = str2double(get(txt,'String'));
  for ii=1:length(v)
    set(txt(ii),'String',sprintf('%0.3e',v(ii)))
  end

ध्यान दें : आपको drawnow को आकर्षित करने के लिए drawnow लिए मजबूर करने के लिए एक drawnow कमांड जोड़ना होगा, txt ऑब्जेक्ट्स की संख्या और स्थान केवल तब निर्धारित किया जाता है जब drawnow वास्तव में खींचे जाते हैं इसलिए टेक्स्ट ऑब्जेक्ट केवल तब बनाए जाते हैं।

तथ्य यह है कि जब वस्तुएं खींची जाती हैं तो टैक्ट ऑब्जेक्ट बनाए जाते हैं, इसका मतलब है कि वे हर बार पुनर्गणना किए जाते हैं प्लॉट को फिर से परिभाषित किया जाता है (उदाहरण के लिए आकृति आकार)। इसे प्रबंधित करने के लिए आपको MarkedClean undocumented event MarkedClean :

function customiseContour
  figure
  [X,Y]=meshgrid(0:100,0:100);
  Z=(X+Y.^2)*1e10;
  [C,h]=contour(X,Y,Z);
  h.ShowText='on';
  % add a listener and call your new format function
  addlistener(h,'MarkedClean',@(a,b)ReFormatText(a))
end
function ReFormatText(h)
  % get all the text items from the contour
  t = get(h,'TextPrims');
  for ii=1:length(t)
    % get the current value (Matlab changes this back when it 
    %   redraws the plot)
    v = str2double(get(t(ii),'String'));
    % Update with the format you want - scientific for example
    set(t(ii),'String',sprintf('%0.3e',v));
  end
end

यहाँ छवि विवरण दर्ज करें

उदाहरण विंडोज पर Matlab r2015b का उपयोग करके परीक्षण किया गया

मौजूदा किंवदंती में प्रविष्टियों को जोड़ना / जोड़ना

मौजूदा किंवदंतियों को प्रबंधित करना मुश्किल हो सकता है। उदाहरण के लिए, यदि आपके प्लॉट में दो लाइनें हैं, लेकिन उनमें से केवल एक में लेजेंड्री एंट्री है और उसे इस तरह रहना चाहिए, तो लेजेंड्री एंट्री के साथ तीसरी लाइन को जोड़ना मुश्किल हो सकता है। उदाहरण:

figure
hold on
fplot(@sin)
fplot(@cos)
legend sin  % Add only a legend entry for sin
hTan = fplot(@tan);  % Make sure to get the handle, hTan, to the graphics object you want to add to the legend

अब, tan लिए एक किंवदंती प्रविष्टि जोड़ने के लिए, लेकिन cos लिए नहीं, निम्न में से कोई भी रेखा चाल नहीं करेगी; वे सभी किसी न किसी तरह से विफल होते हैं:

legend tangent  % Replaces current legend -> fail
legend -DynamicLegend  % Undocumented feature, adds 'cos', which shouldn't be added -> fail
legend sine tangent  % Sets cos DisplayName to 'tangent' -> fail
legend sine '' tangent  % Sets cos DisplayName, albeit empty -> fail
legend(f)

सौभाग्य से, PlotChildren नामक एक PlotChildren किंवदंती संपत्ति माता-पिता की संख्या 1 के बच्चों पर नज़र रखती है। तो, जाने का तरीका स्पष्ट रूप से किंवदंती के बच्चों को अपनी PlotChildren संपत्ति के माध्यम से निम्नानुसार निर्धारित करना है:

hTan.DisplayName = 'tangent';  % Set the graphics object's display name
l = legend;
l.PlotChildren(end + 1) = hTan;  % Append the graphics handle to legend's plot children

यदि कोई ऑब्जेक्ट अपने PlotChildren संपत्ति से जोड़ा या हटाया जाता है, तो किंवदंती अपने आप अपडेट हो PlotChildren है।

1 तथ्य: आंकड़ा। आप किसी भी किंवदंती में किसी भी किंवदंती को DisplayName संपत्ति के साथ किसी भी आंकड़े के बच्चे को जोड़ सकते हैं, जैसे कि एक अलग सबप्लॉट से। ऐसा इसलिए है क्योंकि अपने आप में एक किंवदंती मूल रूप से एक कुल्हाड़ी वस्तु है।

MATLAB R2016b पर परीक्षण किया गया

स्कैटर प्लॉट घबराना

scatter फ़ंक्शन में दो 'jitterAmount' गुण हैं 'jitter' और 'jitterAmount' जो केवल एक्स-अक्ष पर डेटा को 'jitterAmount' अनुमति देता है। यह Matlab 7.1 (2005), और संभवतः पहले की तारीखों में वापस आता है।

इस सुविधा को सक्षम करने के लिए 'jitter' गुण को 'on' सेट करें और 'jitterAmount' संपत्ति को वांछित पूर्ण मान 'on' सेट करें (डिफ़ॉल्ट 0.2 )।

जब हम अतिव्यापी डेटा की कल्पना करना चाहते हैं तो यह बहुत उपयोगी है, उदाहरण के लिए:

scatter(ones(1,10), ones(1,10), 'jitter', 'on', 'jitterAmount', 0.5);

घबराना अतिव्यापी डेटा

अनजाने माटलैब पर अधिक पढ़ें



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow