Oktav ve MATLAB arasındaki farklar? [kapalı]


272

Python, Ruby ve GNU Octave veya Matlab'ı öğrenmeye karar vermeye çalışan bir C'yi bilen bir programcıyım. Çok ortak noktaları olduğunu biliyorum , ancak sözdiziminin ne kadar benzer olduğu ve hatta veri yapılarının ne olduğu net değil. Herkes "benzer" olduklarını söyler, ama hiç kimse gerçekte ne kadar benzer olduklarını söylemez. Yukarıdaki bağlantı sözdizimsel olarak benzer veya özdeş oldukları birkaç örneği göstermektedir, bu tüm dil için geçerli midir?

Muhtemelen bazı görüntü analiz kütüphanelerini kullanarak daha bilimsel bilgi işlem yapmak için dili genel olarak öğrenmeye çalışıyorum. Programlayabileceğim birçok dil olduğunu biliyorum, ancak danışmanlarım MATLAB veya Octave bilmenin bilimlerde çok önemli olduğunu söylüyor.

Ek olarak, Matlab maliyete değer mi? Çok param yok, ama kütüphanelerde veya başka yerlerde önemli farklılıklar varsa, parayı bulabileceğime eminim.


8
Bir öğrenci olduğunuzdan, okulunuzun öğrencilere ücretsiz / ucuz matlab sağlayıp sağlamadığını kontrol etmeye değer; hem lisans hem de grad okullarım bunu yapıyor, bu da matlab ile gitmeye karar vermeyi biraz daha kolay hale getiriyor.
Dougal

23
Evet, ama üniversiteden ayrılıp bir araştırma merkezine gittiğinde, onu satın almak zorunda kalacak ve o zamana kadar alternatifleri değil sadece Matlab'ı tanıyacak. Uzun vadede düşünmek, eğer bilimde istediği gibi görünen bir kariyer yapmak istiyorsanız bunu görmezden gelmemelisiniz. Bu tür lisansların genellikle kümeler için de kullanılamayacağından bahsetmiyoruz bile.
carandraug

2
Bir öğrenciyken yaklaşık 100 dolar (USD) için matlab lisansı alabilmelisiniz. Diğer araç kutularının bazılarını istiyorsanız, bunlar araç kutusu başına ek 29 USD'dir. Hangi araç kutularını isteyebileceğiniz / ihtiyaç duyacağınızı bilmemek, maliyeti haklı çıkarmak zordur.
Ben

23
+1 Bugün Octave öğrenmeye başladım çünkü şu anda Makine Öğrenimi okuyorum ve öğretmen Octave öğrenmeyi önermişti (çünkü ücretsiz, çünkü METLAB pahalı ve öğrenci makine algoritmasını çalışmak için çok daha verimli olacak önce Octave veya METLAB kullanarak, daha sonra bir kez çalıştıktan sonra Java veya C ++ 'ya geçin)
Anthony

7
Python + opencv
gukoff

Yanıtlar:


235

Size farklılıkların tam bir listesini sunmak yerine, size konu hakkındaki görüşümü vereceğim.

Sağladığınız wiki sayfasını dikkatlice okursanız, genellikle "Octave her ikisini de destekler, MATLAB ilkini gerektirir" vb. Gibi cümleler görürsünüz. Bu, Octave geliştiricilerinin Octave sözdizimini MATLAB'lara "üstün" yapmaya çalıştığını gösterir .

Bu tutum Octave'nin amacını tamamen kaybetmesine neden oluyor. Octave'nin arkasındaki fikir , m kodunu çalıştırmak için açık kaynaklı bir alternatife sahip olmak (veya söylemeliyim, aşağıdaki yorumlara bakın). Eğer "daha iyi" olmaya çalışırsa, bu yüzden farklı olmaya çalışır , bu da çoğu insanın bunu kullanma nedenleri ile uyumlu değildir. Deneyimlerime göre, MATLAB'da geliştirilen şeyleri çalıştırmak, gerçekten basit, gerçekten kısa şeyler hariç, tek seferde işe yaramıyor - Herhangi büyük bir işlev için, Octave'da çalışmadan önce her zaman çok şey çevirmem gerekiyorsa, sıfırdan yeniden yazmayın. Bu nasıl daha iyi , gerçekten görmüyorum ...

Ayrıca, Octave öğrenirseniz, Octave'de MATLAB'da izin verilmeyen birçok sözdizimine izin verilir. Anlamı - Octave'de yazılan kod, çok sayıda dönüşüm olmadan MATLAB'da genellikle çalışmaz. Ayrıca tam tersi de uyumlu değil!

Devam edebilirim: MathWorks'ün MATLAB için birçok araç kutusu var, Simulink ve onunla ilgili ürünler Octave'de gerçekten eşdeğer olmayan (evet, tüm bunları ödemek zorunda kalacaksınız). ve en azından mevcut ), çeşitli endüstri standartlarına, test araçlarına, doğrulama araçlarına, gereksinim yönetim sistemlerine, rapor oluşturmaya, çok daha büyük bir topluluk ve kullanıcı tabanına vb. daha büyük bir şey. Oktav ... sadece Oktav.

Benim tavsiyem:

  • Okulunuzun MATLAB için ödeme yapıp yapmayacağını öğrenin. Genellikle yapacaklar.
  • Eğer yapmazlarsa ve parayı kazıyabilirseniz, MATLAB'ı satın alın ve uygun şekilde kullanmayı öğrenin. Uzun vadede daha iyi bir karar.
  • Parayı gerçekten alamıyorsanız - Octave kullanın, ancak MATLAB'ın sözdizimini öğrenin ve salt oktav sözdiziminden uzak durun. (notu gör)

Neden bu son nokta? Çünkü bilimlerde, tamamen MATLAB'da yazılmış büyük kod tabanları vardır. Profesörler, mühendisler, öğrenciler, profesyonel kodlayıcılar, MATLAB'ın karmaşık ayrıntılarını bilen çok sayıda insan var ve çok fazla Octave değil.

Eğer yeni bir iş bulmak ve yeni ofisteki herkes İspanyolca konuşur karar verirlerse, çünkü, o andan itibaren İngilizce konuşmaya başlayın o herkesin talep tür ukala ait olduğunu Eğer İspanyolca gibi / konuşmuyorum. MATLAB ve Octave ile aynı.

Not : Eğer tüm iniş çıkışçılar argümanları ve benimle aynı fikirde olmama nedenleri ile bir yorum bırakabilirlerse, bu harika olurdu :)

Not: Oktav "geleneksel modda" (Oktav başlatılırken -değişsel bayrak ekleyerek) çalıştırılabilir, bu da yalnızca Oktav-sadece sözdizimi kullanıldığında hata verir.


25
JIT eksikliği hakkında zaten Octave geliştirme sürümünde uygulandı. Ne zaman piyasaya sürüleceğini bilmiyorum ama yaptım ve fark döngüsel kod için çok büyük. Ve sadece Octave sözdiziminden uzak durmak için Octave'nin geleneksel seçeneği vardır. Matlab kodunun her zaman Octave'de çalıştığını söylemiyorum ama bu her sürümde çok daha iyi oluyor ve uyumluluk önceliklerinden biri (farklı Matlab sürümlerinin bile aralarında yeterli uyumsuzluğa sahip olduğundan bahsetmiyorum).
carandraug

14
Ve aradığınız şey üstün bir sözdizimine bağlı kalmaktır ... Matlab'ı değiştirme, ekstra sözdizimi veya farklı işlevler ekleme özgürlüğünüz olsaydı, değil mi? Bunlar, kullanıcıların uyguladığı özelliklerdir ve uyumluluğu bozmazlar. Daha sık olmamakla birlikte, yeni şeyler reddedilir. Fikir, Matlab dilinin Oktav dilinin bir alt kümesidir. Fikrin harika olduğunu düşünüyorsanız, o zaman katılmalısınız çünkü bu bir topluluk projesidir ve topluluğun geliştireceği rahatsız edici özelliklere sahiptir.
carandraug

19
@RodyOldenhuis bir klon olması gerekiyordu. Oktav geliştirme bu şekilde başlamadı, onun için yamalar göndermeye devam eden kullanıcılar tarafından gittikçe daha fazla itildi sciencedirect.com/science/article/pii/S0959152412000911
carandraug 23:00 '

9
Herhangi bir programlama aracının üreticisi bir hatadan başarıyla sorumlu tutuldu mu?
Martin Beckett

6
@carandraug: ah onunla cehenneme. Doğruluk tüm
bunlardan

79

Farklılıklar listesine daha eksiksiz bir bağlantı Octave'nin SSS bölümündedir . Teorik olarak, Matlab'da çalışan tüm kodlar Octave'de çalışmalı ve Octave geliştiricileri Matlab ile uyumsuzluğu hata olarak ele almalıdır. İlk sorunuzun cevabı teoride evet. Tabii ki, tüm yazılımların hataları var, ne Octave ne de Matlab (evet, Matlab da) onlardan güvende değil. Onları rapor edebilirsiniz ve birisi bunları düzeltmeye çalışacaktır

Octave ayrıca ekstra özelliklere de sahiptir , bunların çoğu, bence kodu daha okunaklı ve daha anlamlı hale getiren ekstra sözdizimidir, özellikle diğer programlama dillerine alışkınsanız.

Ancak Octave için sadece parasal maliyetten daha fazlası var. Oktav, özgürlük anlamında da özgürdür, özgürdür, ancak bunun yazılım özgürlüğü hakkında sıralanacak yer olduğunu sanmıyorum.

Görüntü işlemeyi sadece Octave'da yapıyorum ve görüntü paketinin ihtiyaçlarıma uygun olduğunu düşünüyorum. Ancak, senin ne olacağını bilmiyorum. Yani maliyete değip değmeyeceğine benim cevabım hayır, ama kesinlikle diğerleri aynı fikirde değil.


23

MATLAB, her şeyden önce ticari bir tekliftir. Bu nedenle, MATLAB'daki her şey kutudan çıkar çıkmaz çalışır. Tüm temel işlevler sağlamdır ve özel bir proje üzerinde çalışıyorsanız, o zaman MATLAB muhtemelen size satabilecek çok sayıda ek alana özgü .m dosyası ekleyen bir eklentiye sahiptir. Ucuz değil, ama işe yarıyor ve şikayeti olmadan işi yapacak.

Octave her zaman açık kaynaklı, bilgi istemek için özgür köklerini gösterir. Ücretsizdir ve size her fırsatta ücretsiz olduğunu hatırlatacaktır. Windows'dan bir tutkuyla nefret eden gönüllüler tarafından geliştirilmiştir. Bu nedenle Octave, Windows üzerinde isteksizce çalışır. Oldukça çok sayıda MATLAB özelliğinin olduğu gibi olması oldukça şaşırtıcı.

Ama işte sürtünme. Her zaman çok karmaşık bir şeyden daha fazlasını yapmaya çalıştığınızda, Octave aniden ince ve anlaşılması zor yollarla kırılır. Hata! Terminal sürücüsü OpenGL katmanının derinliklerinde bir yere taşmıştı. Yazdıramıyorsunuz. Hata! Şekil grafikleri yazı tipleriyle garip şeyler yapıyor. Nedenini bulmak için iyi şanslar. Hata! Octave ve diğer bazı belirsiz özgür yazılımlar arasında gizli bir bağımlılık var, bu yüzden derlenmeyecek. Hangisi olduğunu anlamak iyi şanslar.

Ve Octave yanıtı hey! Özgür yazılım! Tüm kaynak koduna sahipsiniz, tüm bu hataları kendiniz düzeltebilirsiniz! Belki de elimde sonsuz zaman ve kaynak olsaydı, tüm zamanımı hataları özgür yazılımda düzeltmek için harcayabilirdim, ama kişisel olarak yapmıyorum. Akademi'de çalışsaydım, yapabilirdim.

Yani özünde, MATLAB veya Octave seçilip seçilmeyeceği konusu bir soruya dönüşüyor. İlginçtir, ticari ve özgür yazılım varyantları arasında seçim yaparken bu soru her zaman aynıdır.

Ve soru şu:

Zamandan daha fazla paran var mı?


2
Başka bir soru şudur: Çalışmaya son verebileceğiniz şirketler ne işe yarar? Muhtemelen aynı nedenlerden dolayı Matlab.
user276648

14

Octave temelde MATLAB'ın açık kaynaklı bir sürümüdür. Sadece bu şekilde yazılmıştır. MATLAB, kullanımı biraz daha kolaylaştıran çok güzel bir GUI'ye sahiptir, ancak OCTAVE'nin bir sonraki kararlı sürümünde, kararsız sürümde test ettiğim ve harika görünen bir GUI de olacaktır. Oktav çok daha hatalı, çünkü MATLAB'ın gelişimine endüstri tarafından milyonlarca dolar tarafından finanse edilen bir grup gönüllü tarafından geliştirildi ve sürdürüldü. Hala öğrenciyim ve MATLAB'ın öğrenci sürümünü kullanıyorum, ancak GUI ile kararlı sürüm yayınlandıktan sonra Octave'a gitmeyi düşünüyorum.

MATLAB muhtemelen Octave'den çok daha güçlüdür ve algoritmalar daha hızlı çalışır, ancak çoğu uygulama için Octave yeterli olmaktan daha fazlasıdır ve bence Octave tamamen ücretsiz olan inanılmaz ücretsiz bir araçtır.

Akademik sürümü kullanırken MATLAB kullanın, ancak Octave'a geçiş aynı sözdizimini kullandıkları için sorunsuz olmalıdır.

Son olarak, SIMULINK sorunu var. Simülasyon veya kontrol sistemi tasarımı yapmak istiyorsanız (muhtemelen bir milyon başka kullanım var) SIMULINK harika ve MATLAB ile birlikte geliyor. Scilab'ın 'iyi' bir açık kaynak alternatifi olmasına rağmen başkalarının buna yaklaştığını sanmıyorum, denemedim.

Barış.


“... çünkü MATLAB'ın gelişimine endüstri tarafından milyonlarca dolar tarafından finanse edilen bir grup gönüllü tarafından geliştirildi ve sürdürüldü.” Bir projedeki para miktarı, kalite ve hatasız nedensellik değildir. Onların belki de bir korelasyonu yoktur.
gagarine

"tam olarak aynı sözdizimini kullanıyorlar." Hayır, kullanmıyorlar.
Cris Luengo

8

Octave kullanmaya yeni başladım. İnsanların Matlab kullandığını gördüm. Ve yukarıda belirtildiği gibi büyük bir fark, Octave'in bir komut satırı arayüzüne ve Matlab'ın bir GUI'ye sahip olmasıdır. Bana göre bir GUI'ye sahip olmak hata ayıklama için çok iyi. Ocatve'de, bir matrisin uzunluğunun ne olduğunu vb. Görmek için komutları yürütmeniz gerekir, ancak Matlab'da iyi bir arayüz kullanarak her şeyi güzelce gösterir. Ancak Octave, yaptığım temel görevler için ücretsiz ve iyi. Sadece temel şeyleri yapacağınızdan eminseniz veya şu anda neye ihtiyacınız olduğundan emin değilseniz Octave'a gidin. Gerçekten ihtiyaç duyduğunuzda Matlab için ödeme yapabilirsiniz.


2
Octave şu anda beta olan bir GUI'ye sahiptir. Oktav yürütürken --force-gui komutunu kullanın.
ig343

6
... ve Octave sürüm 4'ten başlayarak, GUI varsayılan kullanıcı arayüzüdür.
Ruslan

7

Matlab'ı bu kadar popüler ve özel yapan şey, farklı disiplinlerdeki mükemmel araç kutularıdır. Ana hedefiniz Matlab'ı öğrenmek olduğundan, Octave veya Matlab ile çalışıyorsanız hiç de farklı değil!

Sadece gidip Matlab'ı herhangi bir serin araç kutusu olmadan satın almak (temel olarak ana dalınıza bağlıdır) gerçekten makul bir masraf değildir!

Octave ile kesinlikle iyi bir başlangıç ​​yapabilir ve internette Matlab'da tonlarca öğreticiyi takip edebilirsiniz.


4

Rody Oldenhuis cevabına eklemek istediğim pek bir şey yok. Genellikle yazdığım tüm fonksiyonların Matlab'da çalışması gereken stratejiyi takip ederim.

Aşağıdaki kullanım durumları için her iki sistemde de test ettiğim bazı özel işlevler:

a) oktav bir lisans sunucusuna ihtiyaç duymaz - örneğin, kurumunuz yerel lisansları desteklemiyorsa. Bir kez bir senaryo kullandığım sistemin internet ile hiçbir bağlantısı olmadığı ve çok uzun bir süre (laboratuvarın bir köşesinde) çalışacağı ve birçok farklı kullanıcı tarafından kullanıldığı bir durumda kullandım. Not: Bu lisans maliyeti ile ilgili değil, ilgili teknik konularla ilgilidir.

b) Octave, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) gibi diğer platformları destekliyor .


3

İç içe geçmiş işlevler ve kapaklar artık MATLAB dahil birçok dil tarafından destekleniyor. JavaScript, birinci sınıf tasarım ilkesi olarak kapanmaları teşvik eder.

Ne yazık ki, Octave kapanışları desteklemiyor (sözlük kapsamı ile iç içe işlevler).

Http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html'ye göre , geliştiricilerin istemediği veya doğru bir şekilde yapamadığı izlenimi bile olabilir.

Bu, her iki yönde de çok kod kıracaktır. Geçici çözüm yok.


Bunun artık doğru olduğundan emin değilim. Yuvalanmış işlevler Octave'de uygulanır ve Matlab'ınkinden daha çok yönlü olduklarını gördüm: örneğin, bir komut dosyasında işlevleri (lambdalar dışında) bildirebilme, bu da son denediğimde Matlab ile mümkün değildi.
MayeulC

@MayeulC Daha çok yönlü bir parça olmak aslında her iki yolu da keser.
Wolfgang Kuehn

0

Oktav ve matlab'ın birçok benzerliği vardır. Ancak Octave bir komut satırı arayüzüdür. Matlab en iyi GUI ile birlikte gelirken, her komutu komut istemine yazmanız gerekir. İlk olarak matlab öğrenci sürümünü kullanmanızı öneririm; Temel dersleri öğrendikten sonra gnu oktav kullanın. Şimdi gnu octave gui ile geliyor, ama şimdi bir geliştirme versiyonu. Gnu oktav için guioctave, xoctave (ücretsiz değil), DomainMath IDE, vb. Gibi bazı gui ön uçları vardır.


2
oktav geliştirme sürümü (3.7.5 olmak) oldukça güzel görünüyor yerli bir gui ile geliyor!
kjetil b halvorsen
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.