क्यों / कब मुझे ऑक्टेव पर MATLAB पसंद करना चाहिए?


82

हमारे shoestring ऑपरेशन में हमें एम्बेडेड हार्डवेयर पर C कार्यान्वयन करने से पहले कुछ उच्च-स्तरीय भाषा में एल्गोरिदम को प्रोटोटाइप करने की आवश्यकता होती है।

अब तक हम ऐसा करने के लिए MATLAB का उपयोग कर रहे हैं, लेकिन लाइसेंस की लागत को नुकसान पहुंचाने लगे हैं। हम अपने MATLAB कोड को ऑक्टेव में पोर्ट करने पर विचार कर रहे हैं।

क्या ऐसा करने का कोई विशेष कारण नहीं है? क्या हम किसी अनुकूलता को तोड़ेंगे, खासकर अगर हमारे बाहरी साथी जो MATLAB का उपयोग करने पर जोर देते हैं? क्या कोई प्रदर्शन दंड हम उम्मीद कर सकते हैं?


7
आपको प्रवास और प्रशिक्षण की लागतों पर विचार करना चाहिए।
डैनियल मौरा

10
अजगर क्यों नहीं? stackoverflow.com/questions/1776290/… MATLAB उपयोगकर्ताओं के लिए NumPy: mathHTML.sourceforge.net/matlab-numpy.html
मिखाइल

5
@ मिखाइल: मतलाब का उपयोग करने वाले भागीदारों के साथ हस्तक्षेप करने के कारण।
जोनास

2
@ जोनास: बाहरी साथी भी आश्वस्त हो सकते हैं ... अगर वे देखते हैं कि हर कोई पायथन के प्रवास के बारे में बात कर रहा है ...
मिखाइल

जवाबों:


52

2008 में मैंने यही काम करने की कोशिश की। मैंने जल्दी से निम्नलिखित शो स्टॉपर्स पर ध्यान दिया:

  • टूलबॉक्स पूर्ण नहीं हैं और साथ ही परीक्षण नहीं किया गया है। विशेष रूप से छवि प्रसंस्करण टूलबॉक्स जो मेरे काम पर बहुत अधिक निर्भर करता था (बड़ा शो स्टॉपर यह था कि imtransform लागू नहीं किया गया था)।
  • मैटलैब की तुलना में ऑक्टेव डिबगर और प्रोफाइलर आदिम थे।
  • यदि आप दूसरों के साथ काम करते हैं, तो उन्हें बदलना बहुत मुश्किल हो सकता है।
  • यदि आप थर्ड पार्टी टूलबॉक्स का उपयोग करते हैं, तो आप अपने काम पर लग जाते हैं।
  • ऑक्टेव के प्लॉट प्रकाशन गुणवत्ता नहीं हैं।

लेकिन मुझे यह कहना होगा कि मैं आमतौर पर प्रभावित था कि मतलेब के साथ ऑक्टेव कितना संगत है, अगर आपका माटलैब का उपयोग बुनियादी है, तो आप भाग्यशाली हो सकते हैं। अंत में यह 2008 में था, दो साल में चीजें बहुत बदल सकती हैं।


8
मुझे नहीं लगता कि समस्या MATLAB उपयोगकर्ताओं के साथ कुछ भी करना है। यह बहुत अच्छा है कि एक FOSS विकल्प है और जो लोग इस तरह के प्रयास पर काम करना चाहते हैं वे ऐसा करते हैं। लोग अपने समय के साथ जो कुछ भी करना चाहते हैं, उन्हें करने के लिए मिलता है। दिए गए प्रोग्राम के उपयोगकर्ताओं की आलोचना करना बचकाना है।
कारोलडेक

2
जो कोई भी इच्छुक है, वह Octave 3.8 विंडोज इंस्टॉलर के लिए लिंक का अनुसरण करता है: mxeoctave.osuv.de
juliohm

2
इन मुद्दों को पैसे की लागत के लिए bountysource.com/teams/gnu-octave/issues वेबसाइट के माध्यम से ओवरले किया जा सकता है, फिर एक मैटलैब लाइसेंस।
सर्गेई

2
2017 तक, आपको वास्तव में इसे आज़माना चाहिए। आपको आश्चर्य होगा कि सबसे अधिक, यदि नहीं, तो आपकी MATLAB स्क्रिप्ट्स आउट-ऑफ-द-बॉक्स (विशिष्ट टूलबॉक्स के अलावा) चलेंगी, तो आपको कुछ छोटी असंगतताओं को ठीक करने में एक दोपहर खर्च करना होगा। लाइसेंस-मुक्त, ओपन सोर्स सॉफ्टवेयर पर विकसित होने की तुलना में एक दोपहर क्या है?
ह्यूगो रैगेट

24

बस मेरे सिर के ऊपर से:

  1. कई टूलबॉक्स हैं जो ऑक्टेव के पास नहीं हैं, जैसा कि मैंने दो साल पहले मशीन लर्निंग कोर्स में होमवर्क करने की कोशिश की थी।
  2. ऑक्टेव में एक बहुत हीन डिबगर है। इसके साथ काम करना लगभग असंभव था।
  3. कई तरह के ऑपरेशन के लिए मतलाब बहुत तेज है।
  4. मतलाब के भूखंड बहुत अच्छे हैं।
  5. ऑक्टेव में एक देशी जीयूआई नहीं है। ऑक्टेव के लिए GUI हैं, लेकिन वे Matlab के मूल निवासी से नीच हैं।

बिंदु # 5 के लिए +1। मुझे ऑक्टेव के लिए एक मुफ्त जीयूआई भी नहीं मिला है जिसे मैं स्थापित कर सकता हूं और यह मज़बूती से काम करता है, अकेले एक अच्छा चलो। SciLab Matlab का एक अच्छा विकल्प हो सकता है, लेकिन मुझे नहीं पता कि यह अंक # 1-4 के बारे में कितना अच्छा है।
स्टीफन स्मिथ

15

मैंने ऑक्टेव और आर का भी परीक्षण किया है।

सप्तक के बारे में: मैं ऑक्टेव सिंटैक्स की समानता से बहुत प्रभावित था। मुझे अपनी MATLAB लिपियों को सप्तक तक पहुँचाने में ज्यादा समय नहीं लगा। मीनवीहाइल मुझे एररबार के साथ संयुक्त रूप से प्रिंट करने वाले मार्करों पर एक विशेष समस्या है, जिसे जर्नो राजहल्मे ने बड़प्पन में तय किया था और xtick फॉन्ट साइज को बदलने के लिए, मुझे बड़बड़ाहट में एक सवाल के जवाब में जो वर्कअराउंड मिला था। तो इसमें अभी भी कुछ कीड़े हैं जिन्हें कुछ प्रयास से दूर किया जा सकता है। यदि आप कुछ समस्याओं का अनुभव करते हैं तो आप भ्रामक मेलिंग फोरम की कोशिश कर सकते हैं: help-octave@octave.org। वैसे मेरी टीम इसे (उपयोगकर्ता के अनुकूल) अनुकूल नहीं कर सकती है जैसे कि वे MATLAB के अनुकूल हैं, इसलिए हम अभी भी MATLAB का उपयोग कर रहे हैं। चूंकि MATLAB को gnuplot के तहत बनाया गया है, इसलिए इसकी बग्स को ठीक करने का एक और तरीका जनरेट किया गया gnuplot फ़ाइल है। मुझे जो सबसे अच्छा IDE मिला, वह था QtOctave, कि मैंने इसमें एक छोटी समीक्षा की "

R के बारे में: SciViews द्वारा किए गए एक शोध के अनुसार, R का प्रदर्शन MATLAB और ऑक्टेव से बेहतर है। आर के पास मुझे ज्यादा अनुभव नहीं है। मैंने एम। क्लस्टीरिंग के बारे में आर में क्लीक करने के लिए एक विकिपुक अध्याय लिखा है। इसलिए आपको प्रस्तावों के लिए तीसरे पक्ष के पैकेज मिल सकते हैं, जो आईएमओ के मानकीकृत नहीं हैं। मुझे मिला सबसे अच्छा आईडीई ग्रहण के लिए स्टेटेट प्लगइन था, जेजीआर (आर के लिए जावा जीयूआई) और एमएसीएस। एक नई प्रोग्रामिंग भाषा सीखने के लिए समय की लागत के बावजूद, अगर मैं अपने प्रयोग ग्राफिक्स और कुछ डेटा खनन विश्लेषण करने के लिए एक खुला स्रोत प्लेटफ़ॉर्म चुनूंगा तो मैं आर की कोशिश करूंगा।


10

ओक्टेव में मतलाब पर कई वाक्यात्मक सुधार हैं, उदाहरण के लिए आप कह सकते हैं endif endforऔर endfunctionसिर्फ इसके बजाय end, जो डिबगिंग को बहुत आसान बनाते हैं।

ऑक्टेव आपको गतिशील रूप से फ़ंक्शन करने की अनुमति देता है, और स्क्रिप्ट और फ़ंक्शन फ़ाइल में कई फ़ंक्शन परिभाषित होते हैं। मैटलैब के वन-फाइल-वन-फंक्शन दृष्टिकोण की तुलना में यह किस तरह से अच्छा है।

अंत में, ऑक्टेव में है parcellfunऔर pararrayfunजो बहुत शक्तिशाली समानांतर प्रसंस्करण उपकरण हैं, जिसमें पूरी तरह से मैटलैब का अभाव है। वहाँ एक है parformatlab में है, लेकिन यह मेरी राय में यह ऐसा करने का सबसे अच्छा तरीका नहीं है।

ऑक्टेव के लिए विपक्ष यह है कि वे टूलबॉक्स पर थोड़ा पीछे हैं, हालांकि यदि आप देखते हैं तो आप समान चीजें पा सकते हैं। fsolveऔर lsodeकिसी कारण से सप्तक में थोड़ा धीमा, लेकिन अधिक मजबूत लगता है। इसके अलावा कुछ लोगों के लिए एक बड़ा बम्पर सिमलिंक और DAQ टूलबॉक्स की कमी है, लेकिन यह सामान वैसे भी मालिकाना होने जा रहा है।

अजगर / Numpy निश्चित रूप से एक चक्कर के लायक है: यह अधिक शक्तिशाली है, लेकिन उनके सिंटैक्स कोड के अधिक जटिल टुकड़ों के उद्देश्य से है।


1
मैंने अभी इसकी कोशिश की, और जहां तक ​​मैं बता सकता हूं, pararrayfun / parcellfun विंडोज पर समर्थित नहीं हैं (अच्छी तरह से मूल रूप से सिग्विन के बिना नहीं) failed to open pipe: pipe: not supported on this system। मैं पूर्वनिर्मित विंडोज बायनेरिज़ का उपयोग कर रहा हूं Octave_3.6.1_VS2010
अमरो

2
हाँ, मुझे लगता है कि विंडोज़ और लिनक्स में शेल स्क्रिप्ट को कैसे चलाया जाता है, इसके अंतरों के बारे में नीचे बताया गया है, क्योंकि कुछ बाल प्रक्रियाओं को जन्म देने के द्वारा pararrayfun / parcelfun काम करता है। मुझे नहीं पता कि यह खिड़कियों पर कैसे काम करेगा, मुझे भी यकीन नहीं है कि क्या विंडोज़ बाइनरी को शेल में निष्पादित किया जाता है या यदि इसका अनुकरण किया जाता है?
user1240280

1
बहुत बुरा, सेलफुन / अरफुनक का एक (पोर्टेबल) समानांतर संस्करण एक अच्छे विचार की तरह लगता है ... शायद MATLAB उन भी चाहिए :)
अमरो

@ user1240280: एक स्क्रिप्ट के भीतर कार्यों को परिभाषित करने में सक्षम होने के नाते, Matlab पर ओक्टेव का एक बड़ा लाभ IMHO है। यह आपको मॉड्यूलर फैशन में एक संपूर्ण कार्यक्रम लिखने और इसे एक फ़ाइल में रखने में सक्षम बनाता है, जिससे आप इसे आसानी से अपने या दूसरों को भेज सकते हैं। लेकिन ऑक्टेव की एक जीयूआई की कमी एक बड़ी खामी है।
स्टीफन स्मिथ

@stefan स्मिथ: ऑक्टेव में अब एक देशी जीयूआई है, जो अभी भी प्रायोगिक है लेकिन मेरे हाल के अनुभवों से यह काफी उपयोगी और कम या ज्यादा स्थिर है। आप इसे बाहर की कोशिश कर सकते हैंoctave --force-gui
Legionair

9

ऑक्टेव के पास नहीं है guide, जो GUIs के निर्माण को आसान बनाता है। मैं नियमित रूप से अपने गैर-MATLAB सहयोगियों के लिए उपकरण बनाने के लिए गाइड का उपयोग करता हूं।


6
क्या ऑक्टेव के पास एक गाइड है? क्या इसीलिए मुझे नीचा दिखाया गया?
14

8

आपके उपयोग के मामले के लिए, सप्तक MATLAB से बेहतर हो सकता है:

  • इसमें सिंटैक्स है जो आपको कोड लिखने की अनुमति देगा जो कि सी। यानी + =, - = के करीब है, डिफ़ॉल्ट फ़ंक्शन पैरामीटर मान, डबल-उद्धृत स्ट्रिंग शाब्दिक, आदि ...

  • मान लें कि आपके चिप्स एक डेस्कटॉप प्रोसेसर की तुलना में धीमी हैं, तो गति संभवतः एक समस्या नहीं होगी।

  • चूंकि यह मैटलैब की तुलना में बहुत तेजी से लॉन्च होता है, इसलिए परीक्षण के लिए शेल स्क्रिप्ट में एकीकृत करना अधिक व्यावहारिक है।

  • प्रोटोटाइप के लिए, प्लॉटिंग पर्याप्त से अधिक है; लोग केवल MATLAB की शैली के लिए उपयोग किए जाते हैं।

  • टूलबॉक्स की सापेक्ष कमी कोई बड़ी बात नहीं है क्योंकि वे आपके लक्षित मंच पर वैसे भी उपलब्ध नहीं होंगे।

मैं दोनों का उपयोग करता हूं, और जब भी मैं स्विच करता हूं, मैं दूसरे से सुविधाओं को याद करता हूं।


6

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

तो आप मतलाब के ऊपर भी ऑक्टेव को पसंद कर सकते हैं, यदि आप कैदियों की दुविधा पर कदम रख सकते हैं।


4
आपको इसे एक टिप्पणी में रखना चाहिए, एक उत्तर में नहीं।
दीमा

5

MATLAB और ऑक्टेव के बीच अंतर की सूची के साथ MATLAB पर एक अच्छा विकीबुक है ।

मेरे अनुभव में, कोर MATLAB को ऑक्टेव में अच्छी तरह से चित्रित किया गया है, लेकिन टूलबॉक्स में संगतता के विभिन्न स्तर हैं, इसलिए आपका निर्णय इस बात पर निर्भर करता है कि आप वास्तव में क्या कोड करने का प्रयास कर रहे हैं।

कुछ चीजें जिनमें ऑक्टेव का अभाव है, एएफएआईके, .NET कोड और गुई बिल्डर के साथ कसकर एकीकरण हैं, guide(हालांकि कई अन्य जीयूआई उपकरण हैं जो ऑक्टेव का उपयोग कर सकते हैं)।

इसके अलावा, जैसा कि अन्य ने बताया है, MATLAB के साथ आप जो भी भुगतान करते हैं, उसका अधिकांश हिस्सा स्लिक इंटरफ़ेस और डीबगिंग / प्रोफाइलिंग टूल है। अनुभवी कोडर शायद विकल्पों के साथ प्रबंधन कर सकते हैं, लेकिन नए शौक संघर्ष कर सकते हैं।


3

ध्यान दें कि ऑक्टेव भाषा निर्माणों का समर्थन करता है जो कि मटलब में मौजूद नहीं हैं (उदाहरण के लिए, ऑटो-इंक्रीमेंट ऑपरेटर, डू-जब तक स्टेटमेंट आदि)। यह कभी-कभी विकसित किए गए पोर्ट कोड से परेशान होता है (किसी ऐसे व्यक्ति द्वारा जो मतलूब की सीमाओं से परिचित नहीं है)।

ऑक्टेव FAQ में कुछ अन्य सीमाएँ / अंतर हैं


2

यदि आप इसे वहन कर सकते हैं तो आपको निश्चित रूप से ऑक्टेव के लिए मटलब को पसंद करना चाहिए।

मुझे ऑक्टेव के साथ बहुत अनुभव नहीं है, लेकिन मैं मुद्दों की उम्मीद करूंगा कि अगर आपका कोड Matlab टूलबॉक्स, फैंसी प्लॉट या Matlab gui का उपयोग कर रहा है।

मुझे उम्मीद है कि यह OpenOffice बनाम MS Office की तरह होगा। ज्यादातर संगत है, लेकिन आपको सिरदर्द देने के लिए बस अलग है।


0

मैंने ऑक्टेव में कुछ रैखिक प्रतिगमन और द्विघात प्रोग्रामिंग अनुप्रयोगों को सफलतापूर्वक पोर्ट किया है।

रैखिक प्रतिगमन (बैकस्लैश ऑपरेटर) ने बिना किसी समायोजन के काम किया। द्विघात प्रोग्रामिंग के मामले में मुझे इसी तरह के परिणाम देते हुए fmincon () से sqp () तक स्विच करना पड़ा ।

फिर भी, ऑक्टेव में टूलबॉक्स और जीयूआई वास्तव में कम परिपक्व हैं (मैंने मूल सामान पर इतना समय बिताया है), हालांकि यह पिछले दो वर्षों में तेजी से प्रगति कर रहा है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.