MATLAB programlamasını öğrenmek için Octave kullanmak mümkün müdür?


23

MATLAB programlamasını öğrenmek istiyorum, böylece kendi başıma bazı araştırma / analizler yapabilirim, ayrıca çevrimiçi bulduğum bazı MATLAB komut dosyalarını inceleyebilir / değiştirebilirim.

Ancak sorun şu ki, MATLAB'ı karşılayamam. GNU Octave, duyduğum kadarıyla oldukça MATLAB ile uyumlu. Octave ile olan zorluk, belgelerin çok seyrek olmasıdır.

Yani bir yandan MATLAB, pahalı bir şekilde pahalı (-ve) fakat çok fazla iyi dokümantasyona, çevrimiçi öğreticilere ve komut dosyalarına (+) sahipken, Octave ücretsiz (birada olduğu gibi), (anlaşılır şekilde) kapsamlı dokümantasyondan yoksun olsa da, vb. .

Octave'yi indirmeyi ve yüklemeyi düşünüyorum, fakat gitmeme yardımcı olmak için MATLAB belgelerini (ve komut dosyalarını) kullanarak. Octave ve MATLAB arasında bazı farklılıklar olduğunun farkındayım - çalışmaya çalıştığım şey, farklılıkların "Octave kullanarak MATLAB öğrenmek" çabalarını engellemek için yeterince büyük olup olmadıklarıdır.

Herhangi bir yapıcı geri bildirim hoş geldiniz.


3
Hoşgeldin Homunculus. İki aydan daha azız ve henüz çok fazla etiketimiz yok. Senin için oktav etiketini ekledim.
David Ketcheson,

Başka bir seçenek ise, amacınız sadece kişisel kullanımınız için hesaplamalı bir yazılım kullanmaksa, Mathematica. Tam sürüm 300 $ 'dan daha az kişisel kullanım için kullanılabilir. Bunun bütçeniz dahilinde olup olmadığını bilmiyorum. Ancak bunun için ne alırsa (tam ticari sürümle aynı sürüm), sanırım buna değer. Not: Eğer öğrenciyseniz, Matlab ve Mathematica da yaklaşık aynı fiyata öğrenciler için kullanılabilir.
Nasır

1
Bir kelimeyle, evet. Dillerin arasındaki farklar oldukça küçük. Matlab belgeleri, İnternette Mathworks.com'dan (Matlab'ın üreticileri) ücretsiz olarak kullanılabilir. Özleyeceğiniz en önemli şey Matlab'ın GUI'si. Octave için iyi bir GUI bulmak zor. Octave'nin geliştirme sürümü bir GUI'ye sahip ancak kurulumu zor. Outsch.org/2011/01/29/qtoctave-0-10-1-for-windows adresinde aldığım QtOctave'i kurdum . Her şey yolunda, başlangıçta her zaman bir hata mesajı olması dışında ve tamamen Octave'yi öldürmeden bir işlemi sonlandıramıyorum. Notepad ++ kullanıyorum ...
Stefan Smith

... QtOctave editörünün yerine, daha iyi çalışıyor gibi görünüyor. Bir başka şey, Octave ve Matlab arasındaki farklar, olduğu gibi, ücretsiz Web sitelerinde kapsamlı bir şekilde belgelenmiştir.
Stefan Smith,

Yorum yapmak için yeterli saygınlığım olmadığı için, kabul edilen cevabın bir ifadesinde şunu eklemek isterim: "Tabii ki, MATLAB'ın özellikleri var (özellikle araç kutularında, ancak Octave'ın bunlara sahip değil)" tamamen yanlış. Octave, Matlab'ın şimdiye kadar ihtiyaç duyduğum her paket işlevini içeren Octave forge'da zengin bir paket kümesine sahiptir (tıbbi görüntüler için görüntü işleme ve optimizasyonda çalışıyorum ve oldukça az sayıda araç kutusu / paketine ihtiyacım var). Ayrıca, kabul edilen cevap önemli bir konuyu ele almamaktadır; bu nedenle, sorgulayanın yazdığı hiçbir kod laboratuar veya
indivi

Yanıtlar:


24

Sorumluluk reddi: Birisi sorduğum soruyu yanıtlamak yerine ne yapmam gerektiğini düşündüğümü söylemeye çalıştığında bazen sinirleniyorum. Ama bir risk alıp sana bir alternatif önereceğim.

Python'un bilimsel bilgi işlem paketlerine bakmayı öneririm : numpy , matplotlib ve scipy . Birlikte, size MATLAB'ın temel işlevlerinin çoğunu sağlarlar (bazı durumlarda size MATLAB'dan daha fazlasını verirler). Onlar ücretsiz ve açık kaynaklıdır ve günümüzde Octave'dan daha geniş bir kullanıcı tabanına sahip olabilirler. Python'daki bilimsel bilgi işlem altyapısının çoğu, Enthought Inc. tarafından desteklenmektedir ve onların ücretsiz Enthought Python Dağıtımını kurmanızı tavsiye ederim. bahsettiğim üç paketi de dahil olmak üzere .

Tabii ki, MATLAB'ın özellikleri (özellikle araç kutularında, ancak Octave'ın sahip olmadığı) Python'un sahip olmadığı özellikler var. Ancak Python'u çalışmalarımın çoğu için daha düşük seviyeli dillerle birlikte kullanıyorum ve MATLAB'ın neredeyse elverişli bir dilde programlanmasına, MATLAB'ın sahip olmadığı pek çok yararlı paketin arayüzünü kullanmam ve çalıştırmamı sağlıyor. Bir süper bilgisayarda aynı kolay okunur kod.

Düzenleme : Continuum Analytics'ten Anaconda Python dağıtımını da denemek isteyebilirsiniz . Yukarıdaki paketlerin tamamını ve daha fazlasını içeren ücretsiz bir sürümü var.


7
Homunculus'un MATLAB öğrenmek isteyip istemediğine bağlıdır, çünkü özellikle MATLAB (örneğin bir iş için) öğrenmeleri gerekir veya bilimsel hesaplama yapmak için MATLAB öğrenmek isterler; bu durumda Python finansal kısıtlamalar göz önüne alındığında daha iyi bir seçim olabilir.
Geoff Oxberry,

3
@DavidKetcheson: Ben aslında numpy ve matplotlib kullanıyorum (Python'u tanıdığımdan beri). Ancak, birçok MATLAB kodunun karşısına gelmeye devam ediyorum, bu yüzden mevcut MATLAB komut dosyalarından vb. (Lisans ücretini ödemek zorunda kalmadan) öğrenmek istiyorum. Bunun yanı sıra, MATLAB programlamanın beynimde fazladan bir tüy olarak bulunması da iyi - bu yüzden MATLAB'ı arka kapıdan öğrenmeyi düşünüyordum (Octave kullanarak).
Homunculus Reticulli

Burada Python için +1, aynı zamanda gerçek bir programlama dilidir :) Her ne kadar MATLAB öğrenerek başladığımı söylemeliyim.
boyfarrell

Octave, ücretsiz lisanslı bir Matlab klonudur. Dil sözdizimi neredeyse tamamen uyumludur. Python, Matlab ve Octave'den çok farklı bir problem çözüyor. Dili çok yönlü olduğu için sözdizimi çok daha karmaşık ve ayrıntılı. Doğrusal sistemlerin prototiplenmesi için Matlab veya Octave kullanırsınız, daha sonra üretime hazır yazılımı uygulamak için python / Java'ya geçirirsiniz. Matlab'dan Python veya R'ye geçmeden önce neye bulaştığınızı anlamalısınız.
FurOfFury

@FistOfFury Doğrusal sistemler için saf Python3 kullanıyorum. Üretime hazır yazılımlar için genellikle C / Fortran veya gömülü yazılımlara gidersiniz.
Perşembe

17

GNU Octave "çoğunlukla Matlab ile uyumludur", bazı incelikler tüm scriptlerin MATLAB'den Octave'a taşınabilir olmadıkları anlamına gelir.

Bu okunmaya değer olduğunu dile belgelerine ve / veya uyumluluk notları SSS veya üzerinde Vikikitap'a . Ayrıca taşıma notları var .

MATLAB araç kutularına benzer paketler mevcuttur, ancak ne kadar benzer olduklarını anlamak için onları kontrol etmeniz gerekir. Ayrıca, iki dil arasındaki farkları önemseyen dönüşüm komut dosyalarında da girişimler var, ancak bildiğim kadarıyla hiçbiri mükemmel değil.


12

Evet, MATLAB'ı Octave üzerinden öğrenebilirsiniz. Ancak Octave sözdizimi, modern betik dilleri ile uyumlu olarak daha az kısıtlayıcı ve daha fazladır. Bu konuda MATLAB geride gözüküyor. Bu wiki linkini gör MATLAB Programlama / Octave ve MATLAB arasındaki farklar

Benim için bir başka önemli fark MATLAB için bazı kütüphanelerin mevcudiyeti idi, fakat Octave için değil.


9

Genel olarak M dili programlama ve MATLAB'ın nasıl çalıştığını öğrenmek için, evet, Octave gayet iyi. Çalışmanızın bir parçası olarak belirli bir araç kutusuna ihtiyaç duyuyorsanız ve hiç kimse bunun ücretsiz bir sürümünü uygulamadıysa, o zaman şansınız kalmaz.

MATLAB'ın bir öğrenci baskısı bu kadar pahalı değil. Üniversitedeyseniz, site lisanslarına sahip olmaları bile mümkündür. Her iki olasılığa da bakmalısın.


7

Geçmişte aynı kod parçaları üzerinde Octave ve MATLAB'ı birbirlerinin yerine kullandım; Uyumluluk konusunda hiçbir sorun yaşamadım. Söyleyebileceğim en büyük farklar şunlardır:

  1. MATLAB byte-derlenebilir ve biraz daha hızlıdır.
  2. Octave ya kullanabilir ya #da %yorumlar için, Matlab sadece kullanır%
  3. Octave çok daha iyi araziler üretir .

1
Octave'nin hangi açıdan daha iyi araziler ürettiğini duymak isterdim (özellikle MATLAB arazilerini sevdiğimden değil ...).
Dirk

Octave, gnuplot'u arka uç olarak kullanır. Gnuplot'un daha çok görünmesini sevdiğimden olabilir. Aklıma gelen tek şey antialiasing için özel bir şey yapmak zorunda olmadığım; otomatik olarak etkindir.
Dan

1
Octave komploları ile ilgili deneyimim karışıktı ve MATLAB ile bir iki şey öğrendikten sonra çıkardığım grafiklerin kalitesi artık çok iyi. Belki Octave'nin bunun için Matab'ı geride bıraktığı bazı örnekler vardır? Aso, bayt derlenmiş? MATLAB kodlayıcıdan mı bahsediyorsunuz? Bu araca sadece rasgele MATLAB kodu giremezsiniz ve hatırlarsam oldukça pahalı bir araçtır, kesinlikle öğrenci lisanslı bir sürümde mevcut değildir.
Reid.Atcheson,

Hata! Derleme için ne demek istediğini anlıyorum. Benim hatam.
Reid.Atcheson,

Üzgünüm ama Matlab'ın byte-derlenmiş olabileceği ne anlama geliyor?
user17915


5

Sorunuzla ilgili olarak:
Evet derdim. Çünkü paradigmalar ve ilkeler aynıdır. Sözdizimindeki farklılıklar ihmal edilebilir ve bir levhada özetlenebilir (çoğunlukla bir gün MATLAB ile çalışıyorsanız).


Bir alternatif için başka bir öneri:
: Bir MATLAB alternatifi olarak SciLab kullanıyorum . Octave kadar ücretsiz, yardım ve destek sağlayan iyi bir topluluk var ve dokümantasyonu oldukça iyi. Yerleşik belgeler ve işlevler için yardım MATLAB'ınki ile benzerdir. (En çok sevdiğim şey, örnekleri tek bir tıklamayla yürütme yeteneği). Sözdizimi MATLAB'a da benzer.

SciLab ve MATLAB arasındaki benzerlik ve farklılıklar açısından, bu belge sizin için ilgi çekici olabilir: Matlab Kullanıcı Bakış Açısından Scilab'a Giriş, Eike Rietsch, Mayıs 2010 (PDF) .

MATLAB üzerinden SciLab için bir başka artı: Start-up ve GUI çok daha hızlı. Henüz Octave'ı denemedim.


1
Ben bir Scilab hayranı değilim, ilk izlenimim, sözdizimi ve temel işlevlerde (Matlab'a göre) çok küçük farklılıklar olduğu, ancak python'un uyumsuzluk için telafi ettiği hiçbir awsome olduğuydı.
mdaoust

Hm ... yorumuna ve David Ketcheson'un cevabına göre Python'u denemeye gerçekten değer görünüyor.
Torbjörn

5

Pratik örnek:

MATLAB'ı işte kullanıyorum ve Stanford'ın ücretsiz çevrimiçi makine öğrenim dersini geçen dönem aldım .

Bütün ödevleri oktavda yaptım.

Sadece 2 fark fark ettim (sadece temel işlevselliği kullanıyordum):

  • Octave, ne tür ifadelerin indekslenebileceği konusunda biraz daha esnektir. Bundan faydalanırsanız, kodunuz taşınabilir olmayacak.
  • Kurulumumda pcolor () ve image () grafikleri , 1000x1000 gibi küçük boyutlarda, 50x50 gibi küçük boyutlarda kullanılamaz.

5

Octave'nin MATLAB'ın programlama dilini yorumlamasında bazı ince farklılıklar vardır. Octave kapatmak için " endif" ve " endwhile" kullanır ifvewhile sırasıyla bildirimler. Octave ayrıca komut satırında işlevleri bildirmenizi sağlar. Bununla birlikte, MATLAB'ın da ayrıştırdığı herhangi bir şeyi ayrıştırmalıdır, bu nedenle MATLAB'ın programlama diline bağlı kalırsanız, iyi olmalısınız.

İki program arasındaki en büyük farklılıkların, örneğin " quad", " ode15s" gibi sayısal ağır kaldırma işlemlerinin çoğunu yapan yerleşik işlevlerde olduğunu unutmayın . Bununla birlikte, bu işlevlerin tümü " help" komutunu kullanırken iyi belgelenmelidir . Çevrimiçi yardımın kapsamadığı daha spesifik sorularınız olursa, Octave için posta listeleri de vardır.


3
Octave, hem döngüler hem de statemtents için "sonu" kabul etmekten çok mutludur.
Bill Barth

4

Evet kesinlikle yapabilirsin. Bununla birlikte, MATLAB’ın gücünün büyük bir kısmı, Octave’da eşdeğer olabilecek ya da bulunmayan araç kutularını ve yapılarını kullanmak oldukça kolaydır.

Ayrıca, temel dillerin kendileri ile uyumlu olmasına dikkat edin (MATLAB'daki yeni OO özellikleri hariç), Octave, NEQ için "! =" Kullanabilmek gibi, sözdizimine birkaç "ekleme" yapmıştır. satır içi işlevleri ayrıştırma gibi alternatif varsayılan davranışlar. Bunlar, bu davranışa güvenmemek için özen göstermediğiniz sürece, Octave kodunun MATLAB'da yarasadan çalışmamasına neden olacak küçük şeylerdir.

Ayrıca MATLAB, tam bir bilgi işlem ortamıdır ve sadece optimize edilmiş doğrusal cebir rutinleriyle ara yüz oluşturan bir dil değildir. Öyleyse, Octave'dan öğrendikleriniz yalnızca çok ileri gidecek. Eğer Octave konusunda uzmansanız, MATLAB'da işlevsel olacaksınız, ancak MATLAB'da olabileceğiniz kadar üretken olmayacaksınız.


2

MATLAB benzeri bir sözdizimine sahip en iyi ücretsiz dil Julia'dır. Ayrıca daha hızlıdır ve daha kapsamlı bir paket sistemine sahiptir (neden daha iyi olmasının diğer nedenleri arasında ...), ancak doğrusal cebir sözdizimi neredeyse tamamen aynıdır ( A[i]endeksleme için değiştirerek MATLAB'a çevirebileceğiniz birçok algoritma A(i)). Şu an öğrenmenin en iyi dili olduğuna inanıyorum, ve yalnızca yanlışlıkla MATLAB'ı tanıyacaksınız.


0

Evet, Octalab'ı kullanarak Matlab'ı öğrenebilirsin. Elbette bazı sınırlamalar var.

Octave ve Matlab, sözdizimlerinin çoğunu paylaşırlar. İkisi bu açıdan birbirlerinin yerine geçebilir. Octalab'ın beta sürümünde yeni bir grafik kullanıcı arayüzü (GUI) olmasına rağmen, özellikle grafiklerle çalışırken Matlab'daki deneyim daha zengin ve kullanıcı dostu. İki sistem, Octave için grafiksel ortam geliştikçe büyük olasılıkla daha fazla birleşecektir.

Kurs'ta size kurs süresince ücretsiz bir geçici Matlab öğrenci lisansı veren birçok ücretsiz kurs vardır. Makine öğrenimi kursları arayın.

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.