2012-02-08 12 views
14

मैं वर्तमान में मैटलैब में कुछ एल्गोरिदम प्रोटोटाइप कर रहा हूं जो मैट्रिक्स, डीएसपी, आंकड़े और छवि विश्लेषण कार्यक्षमता पर भरोसा करते हैं।मैटलैब से सी ++ में पोर्टिंग के लिए उपयोग करने के लिए कौन सी संख्यात्मक लाइब्रेरी का उपयोग करना है?

मैं क्या आवश्यकता हो सकती है के कुछ उदाहरण:

  • eigenvectors
  • 2 डी और 3 डी में
  • घुमाव के
  • FFT
  • कम समय फूरियर रूपांतरण
  • हिल्बर्ट
  • Chebyshev polynomials
  • बदलना
  • कम पास फ़िल्टर
  • यादृच्छिक मल्टीवेरिएट गाऊसी संख्या
  • kmeans

बाद में मैं सी ++ में इन एल्गोरिथम को लागू करने की आवश्यकता होगी।

मेरे पास सी ++ में न्यूमेरिकल व्यंजनों का लाइसेंस भी है, जो मुझे पसंद है क्योंकि यह अच्छी तरह से प्रलेखित है और इसमें विभिन्न प्रकार के एल्गोरिदम हैं। मुझे एक कक्षा भी मिली जो एमईएक्स में एनआर कार्यों को लपेटने में मदद करती है: nr3matlab.h। इसलिए इस कक्षा का उपयोग करके मुझे रैपर उत्पन्न करने में सक्षम होना चाहिए जो मुझे Matlab से एनआर कार्यों को कॉल करने की अनुमति देता है। यह मेरे लिए बहुत महत्वपूर्ण है, ताकि मैटलैब से सी ++ में पोर्टिंग करते समय मैं प्रत्येक चरण की जांच कर सकूं। हालांकि सी में न्यूमेरिकल व्यंजनों है ++ और कुछ महत्वपूर्ण कमियों:

  • एल्गोरिदम एक सरल में लागू, और जरूरी बहुत ही कुशल नहीं ढंग
  • पिरोया नहीं

इसलिए मैं एक और संख्यात्मक लाइब्रेरी का उपयोग पर विचार कर रहा हूँ। आदर्श पुस्तकालय चाहिए:

  • के रूप में गुंजाइश और कार्यक्षमता में के रूप में व्यापक होना संभव
  • अच्छी तरह से प्रलेखित किया जाना
  • (राशि वाणिज्यिक समर्थन)
  • पहले से ही बना दिया है मैटलैब रैपर
  • बहुत मजबूत
  • बहुत कुशल
  • थ्रेड
  • (एक GPU कार्यान्वयन है कि एक "स्विच")

कौन सा संख्यात्मक पुस्तकालय (पुस्तकालयों) आप सुझाव है साथ सीपीयू के बजाय पर कर दिया जा सकता है?

किसी भी उत्तर के लिए अग्रिम धन्यवाद!

+2

कुछ विशिष्ट फ़ंक्शंस/एल्गोरिदम सूचीबद्ध करता है जिन्हें आप ढूंढ रहे हैं, अभी यह प्रश्न बहुत अस्पष्ट है। –

+0

धन्यवाद। दिमाग में उगने वाले कुछ सूचीबद्ध हैं। – Andy

+0

बस सोचा कि मैं भविष्य के संदर्भ के लिए उल्लेख करता हूं कि इस तरह के प्रश्न [scicomp.SE] पर एक अच्छा घर ढूंढते हैं। –

उत्तर

3

वास्तव में आपको openCV पर एक नज़र रखना चाहिए।

हालांकि इसका पहला लक्ष्य कंप्यूटर दृष्टि/छवि प्रसंस्करण है, इस पुस्तकालय में कई रैखिक बीजगणित उपकरण हैं (लगभग सभी जो आप पूछते हैं)। सबसे पहले, इस लाइब्रेरी को इंटेल द्वारा कार्यान्वित किया गया है, जिसमें प्रदर्शन पर बहुत ध्यान केंद्रित किया गया है। यह बहु थ्रेड, आईपीपी, संभाल सकता है ... सामान्य सी ++ लाइब्रेरी से सिंटैक्स का उपयोग करना आसान है।

आपको इस cheat sheet पर एक नज़र रखना चाहिए। मेटाबैब की नकल करने के लिए संस्करण 2.0 के बाद से वाक्यविन्यास बदल दिया गया है। इस पुस्तकालय का व्यापक रूप से उपयोग किया जाता है, और अच्छी तरह से सक्रिय (अंतिम बड़ा अगस्त अगस्त 2011)।

+0

मुझे आश्चर्य है कि आपने ईजिन के बजाय ओपनसीवी का सुझाव दिया है। – CroCo

3

NAG एक अच्छा विकल्प हो सकता है। वित्तीय संस्थानों के भार इसे अपने गणितीय पुस्तकालयों में उपयोग करते हैं। हालांकि, जब मैंने पिछली बार इसका उपयोग किया था, तो GPU कार्यान्वयन नहीं है।

+0

धन्यवाद। बहुत अच्छा लग रहा है। क्या आप जानते हैं कि लगभग 1 डेवलपर लाइसेंस लागत कितनी है? – Andy

+0

@ एंड्रियास वर्नर पॉलसेन - Google ने इसे पाया। http://www.eduserv.org.uk/lns/agreements/nag/nag-pricing। सुनिश्चित नहीं है कि यह आपकी कितनी मदद करता है। शैक्षिक संस्थानों को वरीयता मूल्य मिलता है, उनकी वेबसाइट से लगता है। – DumbCoder

4

आपके पास आवश्यकताओं की एक लंबी सूची है, और यह सभी को एक पुस्तकालय के साथ कवर करना चुनौतीपूर्ण हो सकता है।

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

+0

धन्यवाद। यह भी बहुत अच्छा लग रहा है। मुझे विशेष रूप से यह पसंद है कि यह लैपैक पर बनाया गया है जबकि एक बहुत आसान और मैटलैब-जैसे इंटरफ़ेस साबित हुआ है। – Andy

+0

बीएलएएस के शीर्ष पर, जो एक इंटरफ़ेस है। तो आप डिफ़ॉल्ट LAPACK के बजाय हमेशा तेज BLAS में ड्रॉप कर सकते हैं। और कॉनराड अपनी सामग्री जानता है और साथ काम करने में खुशी है। –

2

ईजिन लाइब्रेरी भी है: http://eigen.tuxfamily.org लेकिन इसका उपयोग अधिकतर बड़े ढांचे के हिस्से के रूप में किया जाता है। यह बुनियादी (और थोड़ा अधिक जटिल) बीजगणित

+0

यह सी ++ टेम्पलेटिंग का टूर डी फोर्स है, लेकिन संकलन धीमे हैं और त्रुटि संदेश बहुत लंबे (भयानक * और * लंबे) हो सकते हैं। – denis

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

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