Neden / ne zaman Octave yerine MATLAB'ı tercih etmeliyim?


82

Küçültücü operasyonumuzda, gömülü donanım üzerinde bir C uygulamasına geçmeden önce algoritmaları daha yüksek seviyeli bir dilde prototiplememiz gerekir.

Şimdiye kadar bunu yapmak için MATLAB kullanıyorduk, ancak lisanslama maliyetleri zarar vermeye başlıyor. MATLAB kodumuzu Octave'a taşımayı düşünüyoruz.

Bunu yapmamak için özel bir sebep var mı? Özellikle MATLAB kullanmakta ısrar eden harici ortaklarımız varsa, herhangi bir uyumluluğu bozacak mıyız? Bekleyebileceğimiz herhangi bir performans cezası var mı?


7
Göç ve eğitim masraflarını göz önünde bulundurmalısınız.
Daniel Moura

10
Neden Python değil? stackoverflow.com/questions/1776290/… MATLAB kullanıcıları için NumPy: mathesaurus.sourceforge.net/matlab-numpy.html
Mikhail

5
@Mikhail: Matlab kullanan ortaklarla etkileşim olduğu için.
Jonas

2
@Jonas: Dış ortaklar da ikna olabilir ... Herkesin Python'a geçişten bahsettiğini görürlerse ...
Mikhail

Bu soru hala ilgili konularda sıkça gündeme geliyor, ancak şimdi korkunç derecede modası geçmiş (10+ yıl).
Tasos Papastylianou

Yanıtlar:


52

2008'de de aynı şeyi yapmayı denedim. Aşağıdaki gösteri durdurucuları çabucak fark ettim:

  • Araç kutuları tam değildir ve o kadar iyi test edilmemiştir. Özellikle benim çalışmamın büyük ölçüde dayandığı görüntü işleme araç kutusu (büyük gösteri durdurucu, dönüşümün uygulanmamasıydı).
  • Octave hata ayıklayıcı ve profil oluşturucu, Matlab'ınkine kıyasla ilkeldi.
  • Başkalarıyla birlikte çalışırsanız, onların değişmesini sağlamak çok zor olabilir.
  • Üçüncü taraf araç kutularını kullanırsanız, bunları kendi başınıza çalıştırabilirsiniz.
  • Octave grafikleri yayın kalitesinde değildir.

Ancak Octave'nin Matlab ile ne kadar uyumlu olmasından genel olarak etkilendiğimi söylemeliyim, eğer Matlab kullanımınız basitse, şanslı olabilirsiniz. Sonunda bu 2008 yılındaydı, iki yıl içinde işler çok değişebilir.


8
Sorunun MATLAB kullanıcıları ile ilgisi olduğunu sanmıyorum. Bir FOSS alternatifinin olması ve böyle bir çaba üzerinde çalışmak isteyenlerin bunu yapması harika. İnsanlar yapmak istedikleri her şeyi zamanlarıyla hallederler. Belirli bir programın kullanıcılarını eleştirmek çocukça.
carlosdc

2
İlgilenen herkes için Octave 3.8 Windows yükleyici bağlantısını izler: mxeoctave.osuv.de
juliohm

2
Bu sorunların üstesinden bountysource.com/teams/gnu-octave/issues web sitesi üzerinden bir Matlab lisansından on kat daha düşük maliyetle ulaşılabilir .
Sergei

2
2017 itibariyle, gerçekten denemelisiniz. MATLAB komut dosyalarınızın tümü olmasa da çoğunun kutudan çıkıp (belirli araç kutuları dışında), bir öğleden sonrayı bazı küçük uyumsuzlukları düzeltmek için harcamanız gerektiğine şaşıracaksınız. Lisanssız, açık kaynaklı yazılım geliştirmenin kazancıyla karşılaştırıldığında bir öğleden sonra nedir?
Hugo Raguet

24

Sadece kafamın tepesinde:

  1. İki yarıyıl önce bir Makine Öğrenimi dersinde ödev yapmaya çalıştığımda keşfettiğim gibi, Octave'de olmayan birçok araç kutusu var.
  2. Octave, çok daha düşük bir hata ayıklayıcıya sahiptir. Birlikte çalışmak neredeyse imkansızdı.
  3. Matlab, birçok işlem türü için çok daha hızlıdır.
  4. Matlab'ın planları çok daha güzel.
  5. Octave, yerel bir GUI'ye sahip değildir. Octave için GUI'ler vardır, ancak bunlar Matlab'ın doğal arayüzünden daha düşüktür.

5. nokta için +1. Octave için kurabileceğim ücretsiz bir GUI bile bulamadım ve bu da güvenilir bir şekilde çalışıyor, iyi olanı bırakın. SciLab, Matlab'a iyi bir alternatif olabilir, ancak 1-4. Noktalarla ilgili ne kadar iyi olduğunu bilmiyorum.
Stefan Smith

15

Oktav ve R'yi de test ettim.

Oktav ile ilgili olarak: Oktav sözdiziminin benzerliğinden çok etkilendim. MATLAB betiklerimi oktava taşımak çok zamanımı almadı. Bununla birlikte, işaretleyicilerin basımında Jarno Rajahalme tarafından nabble'da düzeltilen ve xtick yazı tipi boyutunu değiştirmek için hata çubuğuyla birlikte belirli bir sorun yaşıyorum, bu geçici çözüm, nabble'da bir soru yanıtında aldığım geçici çözüm. Yani hala biraz çaba ile üstesinden gelinebilecek bazı hataları var. Bazı sorunlarla karşılaşırsanız, nabble posta forumunu deneyebilirsiniz: help-octave@octave.org. Bu arada ekibim MATLAB'a adapte oldukları için buna (kullanıcı dostu) adapte olamıyor, bu yüzden hala MATLAB kullanıyoruz. MATLAB, gnuplot altında oluşturulduğundan, hatalarını düzeltmenin başka bir yolu, oluşturulan gnuplot dosyasını düzenlemektir. Bulduğum en iyi IDE, kısa bir inceleme yaptığım QtOctave idi. "

R ile ilgili olarak: SciViews tarafından yapılan bir araştırmaya göre, R'nin performansı MATLAB ve oktavdan daha üstün. R. ile pek tecrübem yok. R.'de EM Kümeleme hakkında bir wikibook bölümü yazmak için mclust paketi üzerinde çalıştım. Bu arada, çok aktif bir topluluğa sahipler gibi görünüyorlar. Bu nedenle, IMO kadar standartlaştırılmamış tekliflere yönelik üçüncü taraf paketleri bulabilirsiniz. Bulduğum en iyi IDE, tutulma için StatET eklentisi, JGR (R için Java GUI) ve emacs idi. Yeni bir programlama dili öğrenmenin zaman maliyetine rağmen, deney grafiklerimi ve bazı veri madenciliği analizlerimi yapmak için açık kaynaklı bir platform seçersem, R.


10

Octave, matlab üzerinde birkaç sözdizimsel geliştirmeye sahiptir, örneğin sadece endif endforve endfunctionyerine, endhata ayıklamayı çok daha kolay hale getiren diyebilirsiniz .

Octave ayrıca dinamik olarak fonksiyonlar oluşturmanıza ve komut dosyalarında ve fonksiyon dosyasında tanımlanmış birden fazla fonksiyona sahip olmanıza izin verir. Bu matlab'ın tek dosyalı tek işlevli yaklaşımından çok daha güzel.

Son olarak, oktav sahiptir parcellfunve pararrayfuntamamen yoksun Matlab çok güçlü paralel işlem araçları olan. Orada bir olduğu parforMatlab'de ama bence bunu yapmanın en iyi yolu bu değil.

Oktavın dezavantajları, alet kutularında biraz geride kalmalarıdır, ancak bakarsanız benzer şeyler bulabilirsiniz. fsolveve lsodenedense oktavda biraz daha yavaş ama daha sağlam görünüyor. Ayrıca bazı insanlar için büyük bir serseri, sembolik bağlantı ve DAQ araç kutusunun eksikliği olma eğilimindedir, ancak bu şeyler yine de tescilli olacaktır.

Python / Numpy kesinlikle denemeye değer: daha güçlü ama sözdizimi daha karmaşık kod parçalarını hedefliyor.


1
Daha yeni denedim ve anlayabildiğim kadarıyla pararrayfun / parcellfun Windows'ta desteklenmiyor (doğal olarak Cygwin olmadan değil) failed to open pipe: pipe: not supported on this system. Önceden oluşturulmuş Windows ikili dosyalarını kullanıyorum Octave_3.6.1_VS2010.
Amro

2
evet sanırım bu, pararrayfun / parcelfun bazı alt süreçleri üreterek çalıştığı için, Windows ve Linux'ta kabuk komut dosyalarının nasıl çalıştırıldığındaki farklılıklara bağlı. Bunun pencerelerde nasıl çalıştığını bilmiyorum, Windows ikili dosyasının bir kabukta çalıştırılıp çalıştırılmadığından veya öykünüp taklit edildiğinden bile emin değilim.
user1240280

1
çok kötü, cellfun / arrayfunc'un (taşınabilir) paralel bir sürümü iyi bir fikir gibi görünüyor ... Belki MATLAB bunları da yapmalı :)
Amro

@ user1240280: bir betik içinde işlevleri tanımlayabilmek, IMHO'nun, Octave'nin Matlab'a göre büyük bir avantajıdır. Programın tamamını modüler bir şekilde yazmanıza ve tek bir dosyada saklamanıza olanak tanır, böylece onu kendinize veya başkalarına kolayca gönderebilirsiniz. Ancak Octave'nin GUI eksikliği büyük bir dezavantajdır.
Stefan Smith

@stefan smith: Octave artık yerel bir GUI'ye sahip, hala deneysel ama son deneyimlerime göre oldukça kullanışlı ve az ya da çok kararlı. ile deneyebilirsinizoctave --force-gui
Legionair

9

Octave'de yoktur guide, bu da GUI'leri oluşturmayı çok kolaylaştırır. MATLAB kullanmayan meslektaşlarım için araçlar yapmak için düzenli olarak kılavuz kullanıyorum.


6
Octave'nin bir rehber eşdeğeri var mı? Bu yüzden mi reddedildim?
Doresoom

8

Kullanım durumunuz için oktav, MATLAB'dan daha üstün olabilir:

  • C'ye biraz daha yakın bir kod yazmanıza izin verecek sözdizimine sahiptir, yani + =, - =, varsayılan işlev parametre değerleri, çift tırnaklı dize değişmezleri, vb.

  • Yongalarınızın bir masaüstü işlemciden daha yavaş olduğunu varsayarsak, hız büyük olasılıkla bir sorun olmayacaktır.

  • Matlab'den çok daha hızlı başladığından, test için kabuk betiklerine entegre etmek daha pratiktir.

  • Prototipleme için çizim, fazlasıyla yeterlidir; insanlar sadece MATLAB'ın tarzına alışmıştır.

  • Araç kutularının göreceli eksikliği, hedef platformunuzda zaten mevcut olmayacağından büyük bir sorun değildir.

İkisini de kullanıyorum ve ne zaman geçiş yapsam diğerinin özelliklerini özlüyorum.


6

Açık kaynak alternatifinin istatistik için nasıl çalıştığını, ancak sayısal analiz için nasıl çalıştığını görmek ilginç. R (istatistik oktavı) günümüzde ticari S-plus'tan (istatistik matlabından) çok daha popülerdir. Diğer cevaplarda bulunan matlab'dan uzaklaşmama nedenleri olarak belirtilen konular R için de geçerliydi. Ancak yine de herkes katkıda bulunmaya başladı ve şimdi R standart, daha iyi grafikler, daha iyi paketler ve artık satıcıya bağlı kalma yok.

Yani mahkum ikilemini aşabilirseniz matlab yerine oktavı da tercih edebilirsiniz.


4
Bunu bir cevaba değil yoruma koymalıydın.
Dima

5

MATLAB'da MATLAB ve Octave arasındaki farkların bir listesini içeren iyi bir WikiBook var .

Deneyimlerime göre, çekirdek MATLAB Octave'a iyi bir şekilde taşındı, ancak araç kutuları farklı uyumluluk seviyelerine sahip, bu yüzden kararınız tam olarak neyi kodlamaya çalıştığınıza bağlı.

Octave'de olmayan bazı şeyler, AFAIK, .NET kodu ve gui oluşturucu ile sıkı entegrasyondur guide(Octave'nin kullanabileceği birçok başka GUI oluşturma aracı olmasına rağmen).

Ayrıca, diğerlerinin de belirttiği gibi, MATLAB ile ödediğinizin çoğu, kaygan arayüz ve hata ayıklama / profil oluşturma araçlarıdır. Deneyimli kodlayıcılar muhtemelen alternatiflerle baş edebilir, ancak yeni başlayanlar zorlanabilir.


3

Octave'in Matlab'da bulunmayan dil yapılarını desteklediğine dikkat edin (örn., Otomatik artış operatörleri, yapılacak işler, vb.). Bu, Octave'de geliştirilen kodu (Matlab'ın sınırlamalarına aşina olmayan biri tarafından) bir Matlab ortamına aktarmayı bazen can sıkıcı hale getirir.

Octave FAQ'da başka sınırlamalar / farklılıklar da vardır .


2

Ödeyebiliyorsanız kesinlikle Matlab'ı Octave'e tercih etmelisiniz.

Octave ile fazla deneyimim olmadı, ancak kodunuz Matlab araç kutuları, süslü araziler veya Matlab gui kullanıyorsa sorunlar beklerdim.

OpenOffice ve MS Office gibi olmasını beklerdim. Çoğunlukla uyumlu, ancak başınızı ağrıtacak kadar farklı.


0

Bazı doğrusal regresyon ve ikinci dereceden programlama uygulamalarını başarılı bir şekilde Octave'a taşıdım.

Doğrusal regresyon (ters eğik çizgi operatörü) herhangi bir ayarlama yapmadan çalıştı. İkinci dereceden programlama durumunda, benzer sonuçlar veren fmincon () ' dan sqp ()' ye geçmek zorunda kaldım .

Yine de, Octave'deki araç kutuları ve GUI, son iki yılda hızla ilerleme kaydetmesine rağmen, aslında daha az olgun (temel şeyler için çok zaman harcadım).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.