2012-02-23 23 views
5

जब आप एक मैटलैब फ़ंक्शन नाम टाइप करते हैं और कमांड विंडो में एक ब्रेस (उदा। sum() खोलते हैं, तो टूलटिप खुलता है जो इस फ़ंक्शन के सभी संभावित उपयोग दिखाता है।varargin (...) का उपयोग करते समय विभिन्न फ़ंक्शन उपयोग कैसे दिखाएं?

जब मैं अपने खुद के समारोह है कि varargin स्वीकार करता है लिखते हैं, टूलटिप केवल एक विकल्प है, जो varargin के बजाय कहते हैं ... (जैसे myfunc(x,...)) दिखाता है।

मैं उपयोगकर्ता को अपने फ़ंक्शन के अधिक विशिष्ट उपयोग कैसे सुझा सकता हूं?

+1

मैं अपने प्रश्न से उलझन में हूँ प्रदर्शित करेगा। यह पहले से ही है। यह आपके खोज पथ पर किसी भी एम-फाइल के लिए काम करता है। –

+0

आप बिल्कुल सही हैं, मैंने स्पष्टता के लिए प्रश्न संपादित किया। –

+3

मैंने हाल ही में पाया है कि फ़ंक्शन के लिए टूलटिप को MATLAB संपादक में Ctrl + F1 द्वारा कॉल किया जा सकता है। ठंडा! – yuk

उत्तर

0

एक विधि है, अगर आप उनके नाम के सभी चर आदानों की अधिकतम संख्या और पता है, की तरह कुछ करने के लिए है:

function out = my_func(var1, var2, var3) 

    if nargin < 1 
     var1 = default_var1_value; 
    end 
    if nargin < 2 
     var2 = default_var2_value; 
    end 
    if nargin < 3 
     var3 = default_var3_value; 
    end 

end 

जब आप ऐसा करते, मैटलैब की मदद से आप 0,1 के साथ my_func कहते हैं, 2 या 3 तर्क।

my_func(var1, var2, var3) 

यह मेरे लिए, कम से कम ... की तुलना में बेहतर लगता है: लेकिन टूलटिप केवल एक ही प्रविष्टि नहीं होगी। मुझे नहीं पता कि कैसे इसे एक से अधिक टूलटिप प्रदर्शित करना संभव है।

संपादित करें: ऐसा लगता है कि अंतर्निहित कार्यों को कहीं और अतिरिक्त विशेषाधिकार मिलता है। उदाहरण के लिए, फ़ंक्शन rank मैटलैब के साथ आता है और दो टूलटिप्स प्रदर्शित करता है। यदि आप edit rank, कोड को एक नई फ़ाइल my_func.m में कॉपी करें, और फ़ंक्शन my_func का नाम बदलें, तो यह केवल एक टूलटिप प्राप्त करता है। तो यह शीर्ष पर टिप्पणी की गई लाइनों के कुछ विशेष स्वरूपण नहीं है।

+0

समस्या यह है कि कुछ युद्धों के अलग-अलग अर्थ हो सकते हैं (जैसे कार्यों में निर्मित अधिकांश मैटलैब), और फिर यह काम नहीं करेगा। –

1

मैं आपको 'सिंटेक्स' संपादित किए बिना वहां ले जा सकता हूं जो वर्तमान रिलीज पर काम करता है, हालांकि थोड़ा गंदा है।

नीचे दिए गए फ़ंक्शन में इनपुट के लिए आवश्यक, वैकल्पिक और वैकल्पिक नाम-मूल्य जोड़े की एक श्रृंखला होती है। मैं उपकरण टिप को आवश्यक और वैकल्पिक इनपुट पर उपयोगकर्ता जानकारी देना चाहता हूं। varargin हमेशा मौजूद है भले ही इसमें कोई चर पारित न हो, और इनपुट पार्सर varargin सौंपे जाने पर बहुत अच्छी तरह से काम करता है। मैं फ़ंक्शन कॉल पर अपने वैकल्पिक इनपुट को छोड़कर इसका लाभ उठाने जा रहा हूं, लेकिन फिर मैंने उनके साथ काम करने से पहले वेरागिन में उन्हें ढेर कर दिया।

टूल टिप पीछे (आवृत्ति, gain_optional, phase_optional, ...)

function myFun(frequency, gain_optional, phase_optional, varargin) 

%% Get mandatory and optional Inputs using inputParser 
p = inputParser; 

% mandatory inputs 
argName = 'frequency'; 
validation = @(x) validateattributes(x, {'numeric'}, {'2d','positive'}); 
p.addRequired(argName, validation); 


% optional inputs 

% start by packaging all optional inputs into varargin. The two optional 
% inputs were kept out of varargin so they will display in the tooltip 
if nargin > 2 
    varargin = [{phase_optional} , varargin]; 
end 
if nargin > 1 
    varargin = [{gain_optional} , varargin]; 
end 

% add optional inputs into inputParser 
argName = 'gainLinear'; 
default = []; 
validation = @(x) validateattributes(x, {'numeric'}, {'2d','positive'}); 
p.addOptional(argName, default, validation); 

argName = 'phaseDeg'; 
default = []; 
validation = @(x) validateattributes(x, {'numeric'}, {'2d','positive'}); 
p.addOptional(argName, default, validation); 

% name-value pairs 
argName = 'model'; 
default = []; 
validation = @(x) validateattributes(x, {'numeric'}, {'vector','positive'}); 
p.addParameter(argName, default, validation); 

argName = 'order'; 
default = []; 
validation = @(x) validateattributes(x, {'numeric'}, {'scalar','integer','>',0,'<',3}); 
p.addParameter(argName, default, validation); 

% pull out all passed data with the inputParser and stash into input struct 
p.parse(frequency, varargin{:}); 
input = p.Results 
संबंधित मुद्दे