अस्वीकरण
यह एक बहुत ही स्वच्छंद एक विशेष परियोजना के लिए मेरे expirience के आधार पर पोस्ट है। मैंने कोडर के नवीनतम संस्करण का उपयोग नहीं किया है, लेकिन मेरे पास मैटलैब कोड को C++ में परिवर्तित करने के लिए समकक्ष उत्पाद (एम्बेडेड कोडर) के साथ समाप्ति है जिसे पूर्व वास्तविक समय कार्यशाला उत्पाद के हिस्से के रूप में शामिल किया गया था। ये टिप्पणियां अभी भी लागू होनी चाहिए। आपकी माइलेज भिन्न हो सकती है।
प्रारंभिक लाभ ...
मेरी स्थिति में, एम्बेडेड सांकेतिक शब्दों में बदलनेवाला एक प्रोसेसिंग ब्लॉक कि एक बड़ा ऑडियो आवेदन के हिस्से में फिट बनाने के लिए इस्तेमाल किया गया था। प्रसंस्करण ब्लॉक में वास्तविक समय में नमूना बफर की निरंतर धारा को संसाधित करने का काम था। मैंने मैटलैब में मूल एल्गोरिदम बनाया, और रूपांतरण टूल ने शुरुआती प्रोटोटाइप को उस चीज़ में परिवर्तित करने के लिए काफी सरल बना दिया जिसे देशी कोड में संकलित किया जा सकता था और वास्तविक समय एप्लिकेशन में उपयोग किया जा सकता था।यह मानना भी अच्छा था कि परिवर्तित कोड रूपांतरण प्रक्रिया में मानव त्रुटि की संभावना के बिना संख्यात्मक रूप से मूल रूप से समान रूप से काम कर रहा था (महावर्क्स इंजीनियरों की अतिमानवी क्षमताओं को मानते हुए)।
लाभ यह बहुत ही प्रारंभिक प्रोटोटाइप चरण के बाद समाप्त हो गया ...
समस्या 1: समय बर्बाद कर
इंटरफ़ेस के रूप में एल्गोरिथ्म जटिलता में वृद्धि हुई, मैं अधिक से अधिक कोड करने के बारे में चिंता करना शुरू कर दिया फ़ंक्शन में मैटलैब इंटरफ़ेस ताकि रूपांतरण के बाद, सी ++ ढांचे के साथ इंटरफ़ेस करना आसान हो (मैं वास्तविक समय में आंतरिक राज्यों की निगरानी करना चाहता था)। इसने अंततः वास्तविक एल्गोरिदम विकास के रूप में उतना ही समय उपयोग करना शुरू कर दिया, इस प्रकार इस तरह के एक उपकरण का उपयोग करने के उद्देश्य को हराया। मैं एल्गोरिदम को छोटे हिस्सों में तोड़ सकता था और फिर सी ++ का उपयोग करके उन्हें एक साथ चिपका सकता था, लेकिन फिर मैं पूर्ण एल्गोरिदम की प्रत्यक्ष मैटलैब-केवल तुलना करने की क्षमता खो देता था।
समस्या 2: सभी कार्यों का समर्थन किया या समर्थित नहीं हैं पूरी तरह से
सांकेतिक शब्दों में बदलनेवाला एक subset of the Matlab language का समर्थन करता है। कुछ मामलों में, समर्थित फ़ंक्शंस किसी भी तरह से सीमित हैं। उदाहरण के लिए, जिस एप्लिकेशन पर मैं काम कर रहा था, मैं वास्तविक समय में फ़िल्टर की विशेषताओं को संशोधित करने में सक्षम होना चाहता था। मैं मानक मैटलैब फ़िल्टर प्रोटोटाइप फ़ंक्शंस का उपयोग नहीं कर सका, क्योंकि कोड जनरेशन टूल वैरिएबल तर्कों के साथ फ़िल्टर प्रोटोटाइप फ़ंक्शन पर कॉल की अनुमति नहीं देगा। मैंने अपने स्वयं के कार्यान्वयन को विकसित करने वाली डीएसपी पुस्तक के साथ समय बिताना समाप्त कर दिया, भले ही हमारे पास सिग्नल प्रोसेसिंग टूलबॉक्स लाइसेंस हो।
समस्या 3:
मैं इंटरफ़ेस मुद्दों से निराश हो गया और C++ हाथ से एल्गोरिथ्म कोडित स्वचालित रूप से तैयार किए गए कोड अक्षम था। मेरे आवेदन के लिए, परिवर्तित कोड पर हाथ लिखित कोड के पक्ष में 75% प्रदर्शन वृद्धि हुई थी। आपके आवेदन के आधार पर प्रदर्शन अंतर बहुत अलग होंगे, संभवतः उपयोग किए गए रूपांतरण टूल का संस्करण, और आपके प्रोफाइलर का आपका प्यार। रूपांतरण उपकरण स्वयं एक जटिल उत्पाद है जिसमें सीखने के लिए कई सेटिंग्स हैं। प्रदर्शन को बेहतर बनाने के लिए सेटिंग और मैटलैब कोड को ट्विक करने के तरीके को करने का प्रयास करने से हाथ कोडिंग करने में अधिक समय लगता है।
मैं के बाद से रूपांतरण उपकरण इस्तेमाल नहीं किया है ...
मैं अब एक और अधिक परीक्षण सहायता प्रदान की दृष्टिकोण पसंद करते हैं। मैं Matlab में एक प्रोटोटाइप कोड और tweak जब तक मुझे यकीन है कि यह व्यवहार करता है क्योंकि मैं इसे भी चाहता हूँ। मैं फिर सी ++ में सोचता हूं और एल्गोरिदम को ऐसे तरीके से रिकोड करता हूं जो उस भाषा के लिए अधिक स्वाभाविक है। मैं फिर एक मैक्स फ़ाइल बना देता हूं जो मेरे सी ++ कोड के साथ इंटरफेस करता है, इसलिए मैं इसे अपने विश्वसनीय मैटलैब समकक्ष के खिलाफ परीक्षण कर सकता हूं। जिस समस्या में मैं काम करता हूं, उसके लिए यह काम करने के लिए एक बहुत अधिक कुशल (मानव और मशीन) तरीका है।
निष्कर्ष में, यह सिर्फ एक उपयोगकर्ता की राय है। शायद (जैसा कि आपकी मूल पोस्ट पर एक टिप्पणी में बताया गया है) आपको यह देखने के लिए साइन अप करना चाहिए कि आप कैसे साथ जाते हैं। हालांकि, यदि आप सी ++ निंजा का थोड़ा सा हिस्सा हैं, तो मैक्स फ़ाइलों के निर्माण से परीक्षण के लिए ऐड-ऑन उत्पाद के लिए एक महंगी लाइसेंस की आवश्यकता नहीं होती है और यह आपको एक बेहतर डेवलपर बनाती है।
आप MATLAB कोडर परीक्षण क्यों नहीं डाउनलोड करते हैं, देखें कि यह आपके लिए कैसे काम करता है, और आपके द्वारा किए गए पिछले काम के परिणामों की तुलना करें? – mpontes
एक उच्च स्तरीय भाषा का उपयोग करने के बारे में जो काम करने के लिए अच्छा है, लेकिन अभी भी तेज़ मूल कोड के लिए संकलित है, अभी? हास्केल काफी अच्छा है। सी ++ 11 अब भी बुरा नहीं है, या तो। – leftaroundabout
सच है, लेकिन मैटलैब में बहुत से फ़ंक्शंस हैं जो बहुत सुविधाजनक हैं। – s5s