दिलचस्प पोस्ट
JQuery के यूआई 1.10 में एक डायलॉग के शीर्षक में HTML का उपयोग करना क्रोम एक्सटेंशन – DOM सामग्री प्राप्त करें जेडीबीसी कनेक्शन पूल (ग्लासफ़िश) का उचित उपयोग कमांड लाइन पर इनपुट छुपाएं क्या मेमोरी रिसाव बनाया जाता है यदि .Net में MemoryStream बंद नहीं होता है? मैं एक PHP फार्म कैसे बना सकता हूं जो स्वयं को सबमिट करता है? जब एक संख्या की उम्मीद होती है तो स्ट्रिंग टाइप करते समय कान के साथ अनंत लूप मैं एक छवि के नीचे सीधे पाठ कैसे संरेखित कर सकता हूं? वेबव्यू में एंड्रॉइड परिसंपत्ति फ़ाइलों को प्रदर्शित करना? ट्रान्सेंडैंटल समीकरण के समाधान की सटीकता में वृद्धि मौजूदा आईफोन प्रोजेक्ट को कोर डेटा जोड़ना कैसे केवल एकल उद्धरणों से बचने के लिए? टीएलएस के साथ जावामेल का उपयोग करना कैसे xcode4 में आवेदन परीक्षण को लागू करने के लिए? जावा में एक "सरोगेट जोड़ी" क्या है?

MATLAB में, क्या मैं एक फाइल में स्क्रिप्ट और फ़ंक्शन परिभाषा कर सकता हूं?

मान लीजिए मेरे पास एक फ़ंक्शन है f() और मैं इसे my_file.m में उपयोग करना चाहता my_file.m , जो कि एक स्क्रिप्ट है

  1. क्या my_file.m में फ़ंक्शन परिभाषित करना संभव है?
  2. यदि नहीं, मान लीजिए कि मैंने इसे fm में परिभाषित किया है मैं इसे my_file.m में कैसे कॉल my_file.m ?

मैंने ऑनलाइन प्रलेखन पढ़ा, लेकिन यह स्पष्ट नहीं था कि यह करने का सबसे अच्छा तरीका क्या है।

Solutions Collecting From Web of "MATLAB में, क्या मैं एक फाइल में स्क्रिप्ट और फ़ंक्शन परिभाषा कर सकता हूं?"

रिलीज़ R2016b के रूप में, आप लिपियों में स्थानीय कार्य भी कर सकते हैं, जैसे:

 data = 1:10; %# A vector of data squaredData = f(data); %# Invoke the local function function y = f(x) y = x.^2; end 

R2016b को रिलीज़ करने से पहले, केवल एक प्रकार का फ़ंक्शन जिसे MATLAB स्क्रिप्ट के अंदर परिभाषित किया जा सकता है एक अनाम फ़ंक्शन था । उदाहरण के लिए:

 data = 1:10; %# A vector of data f = @(x) x.^2; %# An anonymous function squaredData = f(data); %# Invoke the anonymous function 

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

जिस तरह से मैं इस सीमा के आसपास मिलती हूं, मेरी स्क्रिप्ट को ऐसे फ़ंक्शन में बदलना है जो कोई तर्क नहीं लेते (यदि मुझे वैश्विक नाम स्थान से चर की जरूरत है, तो मैं उन्हें स्पष्ट रूप से फ़ंक्शन में पास कर देता हूं या उन्हें पकड़ने के लिए "एवलिन" का उपयोग करता हूं।)

फिर आप "स्क्रिप्ट" में आवश्यक अतिरिक्त सभी कार्यों को परिभाषित कर सकते हैं। यह एक हैक है, लेकिन मुझे उन मामलों में काफी ताकतवर पाया गया है जहां मुझे कई गैर-तुच्छ कार्यों की आवश्यकता है।

संपादित करें: यहां एक सरल उदाहरण है। यह सब एक ही फाइल में रह सकता है

 function [] = myScriptAsAFunction() img = randn(200); img = smooth(img); figure(1); imagesc(img); axis image; colorbar; end function simg = smooth(img) simg = img / 5; end 

आप ऐसा कुछ कर सकते हैं (अपनी फ़ाइल को संभालने के लिए my_file.m नाम दिया my_file.m ):

 function my_file %script here end function out = f(in) %function here end 

यदि आप रन बटन पर क्लिक करते हैं फ़ंक्शन my_file को डिफ़ॉल्ट के रूप में निष्पादित किया जाएगा।

1) आप एक स्क्रिप्ट के अंदर फ़ंक्शन को घोंसला नहीं कर सकते।

2) सुनिश्चित करें कि एफएम आपके पथ पर या वर्तमान निर्देशिका में है, और आप इसे किसी अन्य फ़ंक्शन की तरह कॉल कर सकते हैं।

R2016b के रूप में , आप एक स्क्रिप्ट के भीतर स्थानीय फ़ंक्शन को परिभाषित कर सकते हैं।

 x = 1; y = add1(x); function z = add1(x) z = x + 1; end 

मैंने जॉन द्वारा समाधान लागू किया है , और मुझे यह उपयोगी पाया गया। लेकिन कुछ कमियां हैं (ओक्टेव में; Matlab संभवतः इसी तरह व्यवहार करता है):

  1. यदि आपके मुख्य फ़ंक्शन के अंदर कोड सहायक कार्यों का उपयोग करने से पहले clear all होता है, तो यह काम नहीं करेगा। फाइल में test3.m , सभी टिप्पणी / test3.m clear all करता है जो कोड काम करता है / काम नहीं करता है

     function [] = test3() %clear all a = myfunc( 1 ); a endfunction; %--------------------------------- % Auxiliary functions function retval = myfunc( a ) retval = 2 * a; endfunction; 

    से ऐसा लगता है कि एक स्क्रिप्ट चलाने पर, एक पहला पास है जहां कोड के बाहर कार्य निष्पादित होता है (इस मामले में, ऐसा कोई कोड नहीं), और परिभाषित कार्य (इस मामले में, test3 और myfunc ) कार्यस्थान में जोड़ दिए गए हैं। एक दूसरा पास मुख्य फ़ंक्शन निष्पादित करेगा, जो clear all नहीं होगा कि clear all सक्रिय हैं myfunc

  2. जैसा कि शतरोफ़ोर्नर्ड द्वारा बताया गया है, आउट-द-द-बॉक्स आपके मुख्य फ़ंक्शन के वेरिएबल कार्यस्थान पर नहीं जाते हैं।

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

हालांकि, जवाब खोजने का सबसे आसान तरीका है ~ प्रयास करना