2011-06-28 14 views
10

मेरे पास एक सी ++ विंडोज प्रोग्राम है और मैं इस सी ++ ऐप से मौजूदा डेटालैब प्रोग्राम में कुछ डेटा कन्वर्ट और विज़ुअलाइज़ करना चाहता हूं।Matlab <-> सी ++ इंटरफ़ेस

वर्तमान में मैं सी ++ ऐप से डेटा में डेटा लिख ​​रहा हूं। साथ ही Matlab ऐप फ़ाइलों को पढ़ता है और डेटा को संसाधित करता है। (मतदान) यह मूल रूप से काम करता है लेकिन जब डेटा लोड उच्च हो जाता है तो मैं प्रदर्शन परेशानियों में दौड़ रहा हूं।

इस कार्यक्रम के बीच डेटा स्थानांतरित करने का सबसे अच्छा समाधान क्या है? मैं एक तरह की संदेश कतार या सॉकेट इंटरफ़ेस के बारे में सोच रहा हूं।

+0

शायद यह लिंक मदद कर सकता है? [सी ++ के लिए प्लॉटिंग लाइब्रेरी के रूप में मैटलैब का उपयोग करना?] (Http://www.mathworks.de/matlabcentral/newsreader/view_thread/81552) और यह: [सी/सी ++ और फोरट्रान प्रोग्राम से MATLAB इंजन को कॉल करना] (http: // www.mathworks.com/help/techdoc/matlab_external/f38569.html) और सॉकेट प्रोग्रामिंग के बारे में: [MATLAB में सॉकेट प्रोग्रामिंग?] (http://stackoverflow.com/questions/3164348/socket-programming-in-matlab) वहां मैटलैब फ़ाइल एक्सचेंज में भी फाइलें हैं जो आपकी मदद कर सकती हैं: [MATLAB में टीसीपी/आईपी सॉकेट संचार] (http://www.mathworks.com/matlabcentral/fileexchange/21131) हालांकि मुझे लगता है कि –

उत्तर

5

Use the Matlab API सी ++ से मैटलैब में अपना डेटा भेजने के लिए, फिर उस पर एक प्लॉट कमांड निष्पादित करें। मोटे तौर पर, निम्न कार्य करें - कोई त्रुटि जाँच देखते हैं, लेकिन सार है:

#include <engine.h> 
//open the engine 
Engine *m_engine; 
m_engine = engOpen("\0"); 

//put our data 
//pretend this is a 2 column, n row matrix, so we can do a 2D plot 
mxArray* mx = mxCreateDoubleMatrix(mat->n_rows, mat->n_cols, mxREAL); 
memcpy(mxGetPr(mx),some_data,data->n_elem*sizeof(double)); 
put("data",mx); 
mxDestroyArray(mx); 

//plot 
engEvalString(m_engine, "plot(data(:,1),data(:,2),'-o')"); 

बस इतना याद रखें मैटलैब, स्तंभ प्रमुख में काम करता है सी ++ पंक्ति प्रमुख है, जबकि।

+0

यह जवाब है! –

0

सी/सी ++ कोड से MATLAB इंजन का उपयोग करने का सबसे अच्छा तरीका है। आपको बस इतना करना है कि MATLAB इंजन को सी/सी ++ प्रोग्राम से आह्वान करना है और फिर आप आसानी से सी/सी ++ प्रोग्राम से MATLAB आदेश निष्पादित कर सकते हैं।

कृपया ध्यान रखें कि आपको परियोजना में MATLAB की अतिरिक्त लाइब्रेरी फ़ाइलों को शामिल करने के लिए, इसमें काम करना होगा। आप here दिखाए गए के लिए एक कामकाजी उदाहरण देख सकते हैं।

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