2009-10-16 17 views
14

ऐसा लगता है कि सी सी ++ में मैटलैब को कॉल करने और मैटलैब में सी सी ++ को कॉल करने के कई तरीके हैं। जबकि मैं उन्हें यहां सूचीबद्ध करने का प्रयास करता हूं, कृपया इसे इंगित करें यदि मुझे कुछ याद आती है।सी सी ++ में सीएल ++ और सी ++ में मैटलैब

मैटलैब में सी सी ++ को कॉल करने के लिए, दो विधियां भी हैं। पहला साझा सी पुस्तकालयों में कार्यों को कॉल करना है। दूसरा, सी सी ++ कोड को बाइनरी मेक्स-फाइलों में बनाना है, जिसे MATLAB कमांड लाइन से कॉल किया जाएगा। पहली विधि के लिए, सी साझा लाइब्रेरी केवल सामान्य हैं, यानी मैटलैब के लिए उनके सी कोड में बदलाव किए बिना और सामान्य सी संकलक से जीसीसी जैसे संकलित किए गए हैं?

सी सी ++ में मैटलैब कोड कॉल करने के लिए, दो विधियां उपलब्ध हैं। पहला मैटलैब इंजन है। दूसरा, MATLAB कंपाइलर एमसीसी का उपयोग अपने MATLAB कोड से सी या सी ++ साझा लाइब्रेरी बनाने के लिए करना है।

मैटलैब और सी सी ++ के अलावा कुछ फ़ाइल (जैसे मैट फ़ाइल, टेक्स्ट फ़ाइल) से डेटा लिखने और पढ़ने के माध्यम से संवाद कर सकते हैं।

यहां प्रत्येक लक्ष्य को पूरा करने के एक से अधिक तरीके होने के बाद, क्या आप मुझे बता सकते हैं कि इनमें से कौन से मामले सबसे अच्छे हैं? यानी सी साझा किए गए लाइब्रेरीज़ वीएस बिल्डिंग सी सी ++ कोड में बाइनरी मेक्स-फाइलों में कॉलिंग फ़ंक्शन, मैटलैब इंजन वीएस सी सी ++ साझा लाइब्रेरी में मैटलैब कोड संकलित करता है।

धन्यवाद और सम्मान!

+0

सी/सी ++ नामक कोई भाषा नहीं है। सी और एक्स के बीच इंटरफेसिंग सी ++ और एक्स –

+11

के बीच इंटरफेसिंग से कहीं अधिक आसान होगा। आप जानते हैं कि मेरा क्या मतलब है, "सी और/या सी ++" – Tim

+1

सी उत्तर सी ++ उत्तरों से बहुत कम होंगे (और कुछ मामलों में , सी ++ उत्तर "सी में लिखने वाले रैपर" होंगे)। आप किससे अधिक चिंतित हैं? –

उत्तर

8

मुझे केवल MATLAB से सी या सी ++ फ़ंक्शंस कॉल करने की आवश्यकता है। ऐसा लगता है कि साझा लाइब्रेरी में कॉलिंग फ़ंक्शंस और एमएक्स फ़ाइल से कॉलिंग फ़ंक्शंस के बीच एकमात्र अंतर यह है कि साझा लाइब्रेरी के साथ, आपको 'कॉललिब' के साथ फ़ंक्शन को कॉल करना होगा जो एक कमांड लाइन प्रकार फ़ंक्शन और MEX फ़ंक्शन अनुमति देता है आप कार्यों को कॉल करने के लिए जैसे कि वे अंतर्निहित फ़ंक्शंस हैं ताकि इंटरफ़ेस थोड़ा क्लीनर हो।

मेरे सुझाव

  • आप के लिए गोंद के रूप में MATLAB का उपयोग कर रहे हैं (एक साझा लाइब्रेरी में एक सी ++ उपयोग करने के लिए एक आवरण लिखने के लिए आपको हो सकता है) MEX फ़ाइलों का उपयोग करने के लिए करता है, तो

    • आप सी का उपयोग कर रहे ++ है अनुकूलित सी या सी ++ दिनचर्या की एक बड़ी संख्या। आप उन्हें साफ-सुथरा कॉल करने में सक्षम होना चाहेंगे। साझा लाइब्रेरी

    उपयोग करता है, तो

    • आप पहले से ही एक मौजूदा सी पुस्तकालय है कि संशोधन के बिना इस्तेमाल किया जा सकता है।
    • आपको सी कार्यों में केवल थोड़ी सी कॉल की आवश्यकता है।

    वास्तव में, यह इंटरफ़ेस पर आता है। मैं व्यक्तिगत रूप से एमएक्स फ़ाइल रूट पसंद करता हूं क्योंकि यह MATLAB से आपके सी या सी ++ फ़ंक्शन में सबसे साफ इंटरफ़ेस प्रदान करता है। आप इसे मानक MATLAB प्रकारों के साथ बस एक और फ़ंक्शन की तरह कॉल कर सकते हैं। एक साझा पुस्तकालय के साथ, आप सी ++ (फारसी भाषा)

    सामग्री सी में मैटलैब और Matlab में ++ का उपयोग कर के बारे में पुस्तकालय समारोह

  • 3

    मुझे लगता है कि तरीकों में नामित किया गया है सही हैं (यह कुछ समय के बाद से मैं उन्हें का उपयोग किया है किया गया है)

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

    असल में: सी से मैटलैब को कॉल करना कुछ ऐसा है जो आपको कड़े इंटरफ़ेस की आवश्यकता होती है; उदाहरण के लिए यदि आप 2 टूल्स सिंक्रनाइज़ करना चाहते हैं, या आपके एस-फ़ंक्शन (सिमुलिंक) को अतिरिक्त जानकारी की आवश्यकता है। लेकिन फिर, ऐसी फ़ाइल को मैटलैब/सिमुलिंक द्वारा पहली जगह में बुलाया जाता है।

    मैटलैब से कॉलिंग सी वह है जो आप करना चाहते हैं यदि आप अपने स्वयं के एस-फ़ंक्शन या एक्सटेंशन को मैटलैब में लिखते हैं।

    सी और सी ++ के बीच की पसंद आपकी है; यदि आप एक खाली शीट से शुरू करते हैं तो मेरा सुझाव है कि आप सी ++ का उपयोग करें; आपको पूर्ण कार्यक्षमता का उपयोग करने की आवश्यकता नहीं है लेकिन यह अधिक स्वतंत्रता की अनुमति देता है। आजकल सी ++ के लिए और भी पुस्तकालय उपलब्ध हैं।

    सी आपको पसंद की भाषा है यदि आपको बहुत अलग वातावरण में माइग्रेट करने की आवश्यकता है; उदाहरण के लिए सी से डीएसपी संकलित करने के लिए। या यदि आपके पास से शुरू करने के लिए सी में विरासत कोड है। मिक्सिंग सी और सी ++ संभव है, लेकिन थोड़ा बोझिल हो सकता है; मुझे यकीन है कि आप अकेले इस विषय पर स्टैक ओवरव्लो पर विषय पाएंगे।

    2

    प्रशिक्षण वीडियो कॉल करने से पहले कुछ डेटा स्वरूपण करना पड़ सकता है:

    1 - पहचान

    • Introduction.wmv [02:00 1.2 एमबी, 800x600]

    2 - सी ++ मैटलैब में

    • बेसिक concepts.wmv [09:04, 5.9 एमबी, 800x600]
    • विन्यास और एक साधारण परियोजना [08:25, 13 एमबी, 800x600]
    • नमूने [02:17, 2.7 MB, 800x600]
    • डिबगिंग [02:38, 3.4 एमबी, 800x600]

    3 - मैटलैब C++

    • मैटलैब सी ++ साझा DLL.wmv [05:42, 6.8 एमबी, 800x600]
    • कुलपति से मैटलैब का उपयोग ++ [10:52, 14.2 एमबी, 800x600]

    Watch or Download from Google

    Download from 4Shared

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