से स्थानीय कार्यों को कॉल करना मेरे पास एक एम-फाइल में local function परिभाषित है। उदाहरण के लिए:कमांड लाइन
% begining of public_function.m file
function fh = public_function()
%
% do some computation...
fh = @local_function; % return function handle to local function defined below
function y = local_function(x)
%
% a local function inside public_function.m file
%
% some manipulation on x
y = x;
% end of public_function.m file NOTE THAT local_function is NOT nested
अब, मैं कमांड लाइन से local_function
(और public_function
से नहीं) कॉल करना चाहते हैं। मैं समारोह संभाल public_function
से लौटे का उपयोग कर ऐसा करने में सक्षम था:
>> fh = public_function(); % got handle to local_function
>> y = fh(x); % calling the local function from command line :-)
मेरा प्रश्न:
वहाँ किसी अन्य तरीके से (अलग स्पष्ट रूप से पारित समारोह संभाल) कमांड लाइन से स्थानीय समारोह कॉल करने के लिए (या अन्य है एम-फ़ाइल/कार्य)?
अधिक सटीक, मैं किसी फ़ाइल में किसी स्थानीय फ़ंक्शन तक पहुंचने का तरीका चाहता हूं (बशर्ते कि मैं इसका नाम जानूं)। इसलिए, अगर मेरे पास public_function.m
फ़ाइल (और फ़ंक्शन) है और I पता है कि local_function
उस फ़ाइल के लिए स्थानीय है, तो क्या कमांड लाइन से local_function
तक पहुंचने का कोई तरीका है?
आप मुख्य कार्य के तर्क के रूप में उप-समारोह के नाम पर पारित कर सकते हैं। दूसरा उदाहरण देखें: http://www.mathworks.de/support/solutions/en/data/1-19LN6/?solution=1-19LN6 –
क्या आपने matlab फ़ाइल एक्सचेंज पर mklib को चेक किया था? यह आपके द्वारा फ़ंक्शन तर्क के रूप में सूचीबद्ध फ़ाइल में स्वचालित रूप से किसी भी स्थानीय फ़ंक्शन को हैंडल बनाता है: http://www.mathworks.de/matlabcentral/fileexchange/7597-mklib-a-pedestrian-function-library-loader- जनरेटर –
एक बेहतर प्रश्न यही कारण है कि यदि आप इसे एम-फाइल के बाहर से कॉल करने की दबाने की ज़रूरत है तो आप फ़ंक्शन को स्थानीय फ़ंक्शन बना रहे हैं। स्थानीय कार्य करने का विचार अपने दायरे को सीमित करना है। शायद आपको इसे अपनी एम-फाइल में रखना चाहिए, या इसे एक निजी समारोह बनाना चाहिए। मैं अधिक जानकारी के लिए [इस सवाल] (http://stackoverflow.com/q/3569933/52738) पर एक नज़र डालने का सुझाव देता हूं। – gnovice