2010-12-22 14 views
6

मैं गणित से एक मैटलैब फ़ंक्शन को कॉल करना चाहता हूं। यह कैसे करना सबसे अच्छा है?गणित से एक matlab फ़ंक्शन कैसे शुरू करें?

मुझे ऐसा करने का एक तरीका बताते हुए ancient post on Wolfram site मिला है, क्या यह अभी भी दोनों को जोड़ने का तरीका है?

+0

+1 मुझे यह जानना अच्छा लगेगा कि यह कैसे करना है, मैटलैब में कुछ चीजें आसान हैं और कुछ चीजें गणित में आसान हैं! – mor22

+0

जॉन, क्या आपने मई 2013 में पोस्ट किए गए दूसरे उत्तर की कोशिश की है? – Szabolcs

+0

@ स्ज़ाबॉल्क्स नोप, मैंने पोस्ट किया था जब मैं एक नई नौकरी पर गया था, जहां मैं सिर्फ मैटलैब का उपयोग करता हूं। मेरे पास घर पर गणित है, लेकिन घर पर इस प्रकार की क्रॉस स्क्रिप्टिंग करने की आवश्यकता नहीं है। – John

उत्तर

2

आप mEngine उपयोग कर सकते हैं। प्रीकंपिल्ड विंडोज मैथलिंक निष्पादन योग्य मैथमैटिका 8 के साथ काम करता है। विंडोज़ पर आपको add MATLAB to the system path की आवश्यकता हो सकती है।

नेटलिंक विधि की तुलना में इसका लाभ यह है कि गणित और MATLAB के बीच चर स्थानांतरित करना mGet["x"] या mPut["x"] जितना आसान होगा। यद्यपि यह नेटलिंक के साथ भी संभव हो सकता है, एमईएनजीन का लाभ यह है कि आपको इसे स्वयं लागू करने की आवश्यकता नहीं है (जो मुझे अच्छा है अगर आपको COM या .NET के बारे में कुछ भी पता नहीं है)

+0

कृपया [यह अन्य उत्तर] देखें (http://stackoverflow.com/a/16329357/695132) [MATLink] (http://matlink.org) के बारे में। MATLink mEngine से प्रेरित था और इससे कहीं बेहतर है (कार्यक्षमता और विश्वसनीयता में)। – Szabolcs

1

मुझे लगता है कि यह सामान्य रूप से एक कठिन समस्या है, लेकिन किसी विशेष मामले के लिए थोड़ा प्रोग्रामिंग के साथ आसानी से हल किया जा सकता है। मैं सी # के साथ प्रदर्शन करेंगे।

मैं इस तरह की कॉल की एक स्ट्रिंग का निर्माण करूंगा।

  • मेथेमेटिका MathLink के माध्यम से एक सी # कार्यक्रम कहता है,। यह सेटअप के लिए छोटा है, और गणित के पास गणित \ 8.0 \ SystemFiles \ लिंक \ NETLink निर्देशिका में नमूना प्रोजेक्ट है।
  • सी # प्रोग्राम Matlab कहते हैं। इस कॉल को बनाने के कई तरीके हैं, और this handy link वर्णन करता है कि यह कैसे करें और नमूना कोड प्रदान करें।
  • सी # प्रोग्राम Matlab परिणाम देता है।

सब कुछ मैं एक विशिष्ट समस्या के लिए सी # कोड की 50 से कम लाइनों में ऐसा कर सकता था। दूसरे शब्दों में, बहुत अधिक काम नहीं है। संभावित समस्याएं डेटा रूपांतरण हैं, लेकिन यदि आप डेटा के पीछे और आगे भेजने के लिए भेजना चाहते हैं, मैथलिंक बॉक्स से बहुत कुछ प्रदान करता है। इसी प्रकार मैथमैटिका को जावा के माध्यम से MATLAB से जोड़ा जा सकता है, हालांकि मैंने इसे स्वयं नहीं किया है।

शायद पायथन के माध्यम से सबसे आसान कनेक्शन बनाया जा सकता है। मैथमैटिका मैथलिंक पाइथन लाइब्रेरी प्रदान करता है, मैथमैटिका \ 8.0 \ सिस्टमफाइल \ लिंक \ NETLink पर स्थित है, और मैटलैब में पीमैट नामक एक एडन लाइब्रेरी है, जिसे here डाउनलोड किया जा सकता है, लेकिन यह पैकेज लंबे समय तक बनाए रखा नहीं गया है समय और केवल Matlabs के सबसे प्राचीन का समर्थन करता है।

वैकल्पिक रूप से आप एसएजी और/या numpy के पक्ष में पूरी तरह से Matlab से गुजर सकते हैं।

6

आप इस के लिए NETLink कोशिश कर सकते हैं कम से कम Windows के तहत:

In[1]:= Needs["NETLink`"] 
matlab = CreateCOMObject["matlab.application"] 

Out[2]= «NETObject[COMInterface[MLApp.DIMLApp]]» 

और फिर आप Matlab कार्यों आह्वान कर सकते हैं:

In[4]:= [email protected]["version"] 

Out[4]= " 
ans = 

7.9.0.529 (R2009b) 

" 

In[5]:= [email protected]["a=2"] 

[email protected]["a*2"] 

Out[5]= " 
a = 

    2 

" 

Out[6]= " 
ans = 

    4 

" 

HTH

0

अब है इसके लिए एक नया पैकेज --- MATLink। यह सबसे पूरा पैकेज है जिसे मैं जानता हूं। (अस्वीकरण: मैं MATLink के डेवलपर्स में से एक हूं।)

MATLink आप की सुविधा देता है ...

  • मूल फोन MATLAB कार्यों मेथेमेटिका

    दो प्रणालियों

अधिकांश MATLAB डेटा प्रकार समर्थित हैं, सहित के बीच

  • हस्तांतरण डेटा फार्म स्पैस सरणी, structs और कोशिकाओं।

    एक और पूरा विवरण उपलब्ध है here। विस्तृत उदाहरणों के लिए, website देखें।

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