2012-03-01 15 views
15

मैं चाहता हूं कि मैटलैब प्रोग्राम एक जावा फाइल को कॉल करे, अधिमानतः एक उदाहरण के साथ।MATLAB से जावा को कॉल करना?

+10

प्रलेखन पढ़ें। [MATLAB से जावा पुस्तकालयों का उपयोग] (http://www.mathworks.ch/help/techdoc/matlab_external/f44062.html) – zellus

उत्तर

23

ठीक है, मैं यहां एक मिनी उदाहरण देने की कोशिश करूंगा। या तो मैटलैब विंडो से जावा फ़ंक्शंस का उपयोग करें क्योंकि ज़ेलस सुझाव देता है, या, अगर परमिट की आवश्यकता है, तो अपनी खुद की जावा क्लास बनाएं। यहां एक उदाहरण दिया गया है:

package testMatlabInterface; 

public class TestFunction 
{ 
    private double value; 

    public TestFunction() 
    { 
     value = 0; 
    } 

    public double Add(double v) 
    { 
     value += v; 
     return value; 
    } 
} 

फिर इसे एक जार फ़ाइल में बदल दें। मान लें कि आप एक फ़ोल्डर testMatlabInterface कहा जाता है में फ़ाइल डाल दिया, आदेश पंक्ति पर इस कमांड चलाएँ: सभी आयात करने के लिए import testMatlabInterface.*

jar cvf testMatlab.jar testMatlabInterface 

फिर, मैटलैब में, निर्देशिका जहाँ आपके testMatlab.jar फ़ाइल स्थित है पर जाएँ और चलाने के आदेश, testMatlabInterface पैकेज में कक्षाएं। फिर आप इस तरह कक्षा का उपयोग कर सकते हैं:

>> methodsview testMatlabInterface.TestFunction 
>> me = testMatlabInterface.TestFunction() 

me = 

[email protected] 

>> me.Add(10) 

ans = 

    10 

>> me.Add(10) 

ans = 

    20 

>> me.Add(10) 

ans = 

    30 

मुझे बताएं कि क्या मैं और सहायता कर सकता हूं।

+0

बहुत बहुत धन्यवाद! आपकी पोस्ट बहुत उपयोगी रही है। –

28

विचार करने के लिए तीन मामले हैं।

  1. जावा अंतर्निर्मित पुस्तकालयों।

    यह है कि here वर्णित कुछ भी है। इन वस्तुओं को सीधे सीधे कहा जा सकता है। उदाहरण के लिए:

    map = java.util.HashMap; 
    map.put(1,10); 
    map.put(2,30); 
    map.get(1) %returns 10 
    

    एकमात्र जटिलता मैटलैब मैटलैब डेटा प्रकारों और जावा डेटा प्रकारों के बीच मैपिंग करता है। इन मैपिंग्स को here (Matlab to Java) और here (Java to Matlab) वर्णित किया गया है। (Tl; डॉ: आमतौर पर मैपिंग के रूप में आप उम्मीद करेंगे कर रहे हैं)

  2. Precompiled * .jar फ़ाइलें

    आप पहली बार मैटलैब के जावा वर्ग पथ के लिए इन जोड़ने की जरूरत है। इस प्रकार आप इस गतिशील रूप से कर सकते हैं (कि, प्रति-मैटलैब सत्र है, कोई साथ आवश्यक मैटलैब राज्य),:

    javaaddpath('c:\full\path\to\compiledjarfile.jar') 
    

    तुम भी संपादन classpath.txt फ़ाइल से स्थिर इन जोड़ सकते हैं। अधिक जानकारी के लिए docsearch java class path का उपयोग करें।

  3. प्रीकंपिल्ड * .class फ़ाइलें।

    ये * .jar फ़ाइल के समान हैं, सिवाय इसके कि आपको कक्षा फाइलों की बजाय श्रेणी फ़ाइल वाली निर्देशिका को जोड़ने की आवश्यकता है। उदाहरण के लिए:

    javaaddpath('c:\full\path\to\directory\containing\class\files\') 
    %NOT THIS: javaaddpath('c:\full\path\to\directory\containing\class\files\classname.class') 
    
+0

बहुत बहुत धन्यवाद। आपके मार्गदर्शन ने वास्तव में मदद की! –

+0

कक्षा को अपवाद नहीं मिला है, हालांकि मैंने पथ को जोड़ा है – zinking

+1

@ ज़िंकिंग सुनिश्चित करें कि जब आप अपनी जावा कक्षाओं को संकलित करते हैं, तो आप कम से कम पुराने रूप में जेआरई संस्करण को लक्षित कर रहे हैं, जो कि MATLAB रिलीज के साथ जहाजों का उपयोग कर रहे हैं। यदि आपके क्लासफ़ाइल के पास MATLAB के जेआरई द्वारा समर्थित एक नया संस्करण संख्या है, तो उन्हें लोड नहीं किया जाएगा और जब आप उनका उपयोग करने का प्रयास करेंगे तो आपको क्लास नॉटफाउंड अपवाद प्राप्त होगा। उदाहरण के लिए, आर 2006 बी जेआरई 5 के साथ जहाज है, इसलिए आपको 'javac --ource 1.5 - लक्ष्य 1 का उपयोग करने की आवश्यकता है।5 <अन्य तर्क> 'यदि आप जेडीके 6 या नए के साथ संकलित कर रहे हैं। – rob

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