Perbedaan antara Oktaf dan MATLAB? [Tutup]

272

Saya seorang programmer yang tahu Python, Ruby dan beberapa C yang mencoba memutuskan apakah akan belajar GNU Octave atau Matlab. Saya tahu mereka memiliki banyak kesamaan , tetapi tidak jelas bagi saya seberapa mirip sintaksnya atau bahkan struktur datanya. Semua orang mengatakan mereka "mirip", tetapi tidak ada yang mengatakan betapa miripnya mereka sebenarnya. Tautan di atas menunjukkan beberapa contoh di mana mereka secara sintaksis sama atau identik, apakah ini benar untuk seluruh bahasa?

Saya mencoba mempelajari bahasa secara umum untuk melakukan lebih banyak komputasi ilmiah, mungkin menggunakan beberapa perpustakaan analisis gambar. Saya tahu ada banyak bahasa lain yang bisa saya programkan, tetapi penasihat saya mengatakan bahwa mengetahui MATLAB atau Oktaf sangat penting dalam sains.

Selain itu, apakah Matlab sepadan dengan biayanya? Saya tidak punya banyak uang, tetapi jika ada perbedaan penting di perpustakaan atau di tempat lain, saya yakin saya dapat menemukan uang itu.

lwim
sumber
8
Karena Anda seorang siswa, ada baiknya memeriksa apakah sekolah Anda menyediakan matlab untuk siswa secara gratis / murah; baik sarjana dan pascasarjana saya melakukan itu, yang membuatnya agak lebih mudah untuk memutuskan untuk pergi dengan matlab.
Dougal
23
Ya, tetapi ketika dia meninggalkan universitas dan pergi ke beberapa pusat penelitian, dia harus membelinya dan pada saat itu hanya akan tahu Matlab dan bukan alternatif. Jadi berpikir jangka panjang, jika Anda ingin membuat karier dalam sains yang sepertinya ia inginkan, Anda tidak boleh mengabaikan ini. Belum lagi bahwa lisensi semacam itu biasanya tidak dapat digunakan untuk cluster juga.
carandraug
2
Meskipun Anda seorang pelajar, Anda harus bisa mendapatkan lisensi matlab dengan harga sekitar 100 dolar (USD). Memang jika Anda ingin beberapa kotak peralatan lain, mereka adalah 29 USD tambahan per kotak peralatan. Jadi tidak tahu kotak alat apa yang Anda inginkan / butuhkan, sulit untuk membenarkan biaya.
Ben A.
23
+1 Saya baru mulai belajar Octave hari ini karena saya sedang belajar Machine Learning dan guru merekomendasikan untuk belajar Octave (karena gratis, karena METLAB mahal, dan karena siswa akan jauh lebih produktif membuat algoritma mesin bekerja dengan pertama-tama menggunakan Octave atau METLAB terlebih dahulu, kemudian setelah berfungsi, kemudian beralih ke Java atau C ++)
Anthony
7
Saya akan menyarankan Anda untuk menggunakan python +
opencv

Jawaban:

235

Daripada memberi Anda daftar lengkap perbedaan, saya akan memberi Anda pandangan saya tentang masalah ini.

Jika Anda membaca dengan seksama halaman wiki yang Anda berikan, Anda akan sering melihat kalimat seperti "Oktaf mendukung keduanya, sedangkan MATLAB memerlukan yang pertama" dll. Ini menunjukkan bahwa pengembang Octave mencoba menjadikan sintaksis Oktaf "unggul" dari MATLAB.

Sikap ini membuat Octave kehilangan tujuannya sepenuhnya. Gagasan di balik Oktaf adalah (atau telah menjadi , saya harus mengatakan, lihat komentar di bawah) untuk memiliki alternatif open source untuk menjalankan m-code. Jika ia mencoba menjadi "lebih baik", maka ia mencoba untuk menjadi berbeda , yang tidak sejalan dengan alasan kebanyakan orang menggunakannya. Dalam pengalaman saya, menjalankan hal-hal yang dikembangkan di MATLAB tidak pernah berhasil dalam sekali jalan, kecuali untuk hal-hal yang sangat sederhana, sangat pendek - Untuk fungsi yang cukup besar, saya selalu harus menerjemahkan banyak hal sebelum bekerja di Octave, jika tidak menulis ulang dari awal. Bagaimana ini lebih baik , saya benar-benar tidak melihat ...

Juga, jika Anda mempelajari Oktaf, ada banyak sintaks yang diperbolehkan dalam Oktaf yang tidak diizinkan dalam MATLAB. Arti - kode yang ditulis dalam Oktaf sering tidak berfungsi di MATLAB tanpa banyak konversi. Itu juga tidak kompatibel sebaliknya!

Saya bisa melanjutkan: MathWorks memiliki banyak kotak peralatan untuk MATLAB, ada Simulink dan produk-produk terkait yang tidak ada padanannya dalam Octave (ya, Anda harus membayar semua itu. Tetapi seringkali majikan / sekolah Anda tetap melakukannya) , dan setidaknya sudah ada ), kepatuhan terbukti dengan beberapa standar industri, alat pengujian, alat validasi, sistem manajemen persyaratan, pembuatan laporan, komunitas & basis pengguna yang jauh lebih besar, dll. dll. MATLAB hanyalah sebagian kecil sesuatu yang jauh lebih besar. Oktaf adalah ... hanya oktaf.

Jadi, saran saya:

  • Cari tahu apakah sekolah Anda akan membayar untuk MATLAB. Seringkali mereka akan melakukannya.
  • Jika tidak, dan jika Anda dapat mengumpulkan uang, belilah MATLAB dan pelajari cara menggunakannya dengan benar. Dalam jangka panjang itu adalah keputusan yang lebih baik.
  • Jika Anda benar-benar tidak dapat memperoleh uang - gunakan Octave, tetapi pelajari sintaks MATLAB dan jauhi sintaks khusus Octave. (Lihat Catatan)

Mengapa ini poin terakhir? Karena dalam sains, seringkali ada basis kode besar yang seluruhnya ditulis dalam MATLAB. Ada profesor, insinyur, mahasiswa, coders profesional, banyak dan banyak orang yang tahu semua detail rumit MATLAB, dan tidak begitu banyak tentang Oktaf.

Jika Anda mendapatkan pekerjaan baru, dan semua orang di kantor baru Anda berbicara bahasa Spanyol, agak sombong untuk menuntut semua orang bahwa mereka mulai berbicara bahasa Inggris sejak saat itu, hanya karena Anda tidak berbicara / menyukai bahasa Spanyol. Sama dengan MATLAB dan Oktaf.

NB - jika semua downvoters hanya dapat meninggalkan komentar dengan argumen dan alasan mereka tidak setuju dengan saya, itu akan bagus :)

Catatan: Oktaf dapat dijalankan dalam "mode tradisional" (dengan menyertakan flag --traditional saat memulai oktaf) yang membuatnya memberikan kesalahan ketika sintaks hanya oktaf-tertentu digunakan.

Rody Oldenhuis
sumber
25
Tentang kurangnya JIT sudah diterapkan pada versi pengembangan Octave. Saya tidak tahu kapan itu akan dirilis tetapi saya telah membangunnya dan perbedaannya sangat besar untuk kode gila. Dan untuk menjauh dari sintaks hanya Oktaf, ada opsi - tradisional Oktaf. Saya tidak mengatakan bahwa kode Matlab selalu berjalan di Octave tetapi ini menjadi jauh lebih baik dengan setiap rilis dan kompatibilitas adalah salah satu prioritas mereka (belum lagi bahkan versi Matlab yang berbeda memiliki cukup ketidakcocokan di antara mereka).
carandraug
14
Dan apa yang Anda panggil melekat pada sintaksis superior ... jika Anda memiliki kebebasan untuk mengubah Matlab, tambahkan sintaks tambahan atau fungsi yang berbeda, bukan? Ini adalah fitur yang diterapkan pengguna dan tidak merusak kompatibilitas. Lebih sering tidak, hal-hal baru ditolak dengan alasan itu. Idenya adalah bahwa bahasa Matlab adalah bagian dari bahasa Oktaf. Jika Anda pikir idenya luar biasa, maka Anda harus bergabung karena itu adalah proyek komunitas, dan memiliki fitur yang ingin dikembangkan komunitas.
carandraug
19
@RodyOldenhuis tidak seharusnya menjadi tiruan. Pengembangan oktaf tidak dimulai dengan cara itu, hanya saja semakin didorong ke arah itu oleh pengguna yang terus mengirimkan tambalan untuk itu sciencedirect.com/science/article/pii/S0959152412000911
carandraug
9
Apakah pembuat alat pemrograman mana pun pernah berhasil bertanggung jawab atas bug?
Martin Beckett
6
@carandraug: ah persetan dengan itu. Kebenaran lebih penting daripada semua itu :)
Rody Oldenhuis
79

Tautan yang lebih lengkap ke daftar perbedaan ada di FAQ Oktaf . Secara teori, semua kode yang berjalan di Matlab harus berjalan di Octave dan pengembang Octave memperlakukan ketidakcocokan dengan Matlab sebagai bug. Jadi jawaban untuk pertanyaan pertama Anda adalah ya secara teori. Tentu saja, semua perangkat lunak memiliki bug, baik Oktaf atau Matlab (ya, Matlab juga) aman dari mereka. Anda dapat melaporkannya dan seseorang akan mencoba memperbaikinya

Oktaf juga memiliki fitur tambahan , kebanyakan dari mereka adalah sintaks tambahan yang menurut saya membuat kode lebih mudah dibaca dan lebih masuk akal, khususnya jika Anda terbiasa dengan bahasa pemrograman lain.

Tetapi ada lebih dari satu oktaf dari sekedar biaya moneter. Oktaf gratis juga dalam arti kebebasan, itu gratis, tetapi saya tidak berpikir ini adalah tempat untuk berteriak-teriak tentang kebebasan perangkat lunak.

Saya melakukan pemrosesan gambar dalam Oktaf saja dan menemukan bahwa paket gambar sesuai dengan kebutuhan saya. Saya tidak tahu, apa yang akan menjadi milik Anda. Jadi jawaban saya jika sepadan dengan biayanya adalah tidak, tetapi yang pasti orang lain tidak akan setuju.

carandraug
sumber
23

MATLAB adalah, pertama dan terutama, penawaran komersial. Oleh karena itu, semua yang ada di MATLAB berfungsi dengan baik. Semua fungsionalitas inti solid, dan jika Anda bekerja pada proyek khusus maka MATLAB mungkin memiliki add-on, mereka dapat menjual Anda yang menambahkan banyak file .m khusus domain tambahan untuk Anda. Ini tidak murah, tetapi bekerja dan itu akan menyelesaikan pekerjaan tanpa keluhan.

Octave selalu menunjukkan sumber terbuka, akar informasi yang ingin bebas. Gratis, dan ini akan mengingatkan Anda bahwa gratis di setiap kesempatan. Ini dikembangkan oleh relawan yang membenci Windows dengan penuh semangat. Karena itu Oktaf berjalan di Windows dengan enggan. Cukup mengejutkan bahwa banyak fitur MATLAB yang ada.

Tapi ini intinya. Setiap kali Anda mencoba melakukan sesuatu yang lebih rumit daripada sepele, Oktaf tiba-tiba pecah dengan cara yang halus dan sulit dipahami. Ups - driver terminal mengalami limpahan di suatu tempat jauh di dalam lapisan OpenGL. Anda tidak dapat mencetak. Ups - plot gambar melakukan hal-hal aneh dengan font mereka. Semoga beruntung mencari tahu alasannya. Ups - ada beberapa ketergantungan tersembunyi antara Oktaf dan beberapa perangkat lunak bebas lainnya yang tidak jelas, sehingga tidak akan dikompilasi. Semoga berhasil mengetahui yang mana itu.

Dan tanggapan Oktaf adalah hei! Ini perangkat lunak gratis! Anda memiliki semua kode sumber, Anda dapat memperbaiki sendiri semua bug itu! Mungkin jika saya memiliki waktu dan sumber daya tak terbatas di tangan saya, saya dapat menghabiskan seluruh waktu saya untuk memperbaiki bug dalam perangkat lunak bebas, tetapi saya pribadi tidak. Jika saya bekerja di dunia akademis, saya mungkin.

Jadi pada intinya, masalah apakah akan memilih MATLAB atau Oktaf muncul ke satu pertanyaan. Menariknya, pertanyaan itu selalu sama, ketika memilih antara varian perangkat lunak komersial dan bebas.

Dan pertanyaannya adalah:

Apakah Anda memiliki lebih banyak uang daripada waktu?

Johnwbyrd
sumber
2
Pertanyaan lain adalah: apa yang perusahaan gunakan di mana Anda akhirnya bisa bekerja? Mungkin Matlab karena alasan yang sama.
user276648
14

Oktaf pada dasarnya adalah versi open source dari MATLAB. Itu ditulis hanya untuk itu. MATLAB memiliki GUI yang sangat bagus yang membuatnya sedikit lebih mudah digunakan tetapi rilis stabil selanjutnya dari OCTAVE juga akan memiliki GUI, yang telah saya uji dalam rilis yang tidak stabil, dan terlihat fantastis. Oktaf jauh lebih buggy karena dikembangkan dan dikelola oleh sekelompok relawan, di mana pengembangan MATLAB didanai oleh jutaan dolar oleh industri. Saya masih mahasiswa dan saya menggunakan versi mahasiswa MATLAB, tetapi saya berpikir untuk pergi ke Octave setelah versi stabil dengan GUI dirilis.

MATLAB mungkin jauh lebih kuat daripada Oktaf, dan algoritme berjalan lebih cepat, tetapi untuk sebagian besar aplikasi, Oktaf lebih dari cukup dan, menurut saya 'alat luar biasa yang benar-benar gratis, di mana Oktaf benar-benar gratis.

Saya akan mengatakan menggunakan MATLAB sementara Anda dapat menggunakan versi akademis, tetapi beralih ke Oktaf harus mulus karena mereka menggunakan sintaks yang sama persis.

Terakhir, ada masalah SIMULINK. Jika Anda ingin melakukan simulasi atau desain sistem kontrol (mungkin ada sejuta kegunaan lain) SIMULINK fantastis dan dilengkapi dengan MATLAB. Saya tidak berpikir ada yang dekat dengan ini, meskipun Scilab tampaknya merupakan alternatif open source yang 'baik', saya belum mencobanya.

Perdamaian.

Jonny
sumber
"... karena dikembangkan dan dikelola oleh sekelompok relawan, di mana pengembangan MATLAB didanai oleh jutaan dolar oleh industri." Jumlah uang dalam suatu proyek bukanlah kausalitas untuk kualitas dan bebas bug. Mereka bahkan mungkin bukan korelasi.
gagarine
"Mereka menggunakan sintaks yang sama persis" Tidak, mereka tidak.
Cris Luengo
8

Saya baru saja mulai menggunakan Oktaf. Dan saya telah melihat orang menggunakan Matlab. Dan satu perbedaan utama seperti yang disebutkan di atas adalah bahwa Oktaf memiliki antarmuka baris perintah dan Matlab memiliki GUI. Menurut saya memiliki GUI sangat baik untuk debugging. Di Ocatve Anda harus menjalankan perintah untuk melihat berapa panjang sebuah matriks dll, tetapi di Matlab itu dengan baik menunjukkan semuanya menggunakan antarmuka yang baik. Tapi Oktaf gratis dan bagus untuk tugas-tugas dasar yang saya lakukan. Jika Anda yakin bahwa Anda akan melakukan hal-hal mendasar atau Anda tidak yakin dengan apa yang Anda butuhkan saat ini, maka pilihlah Oktaf. Anda dapat membayar Matlab saat Anda benar-benar merasa perlu.

sachinr
sumber
2
Oktaf memiliki GUI yang saat ini dalam versi beta. Gunakan perintah --force-gui saat mengeksekusi oktaf.
ig343
6
... dan mulai dari Octave versi 4, GUI adalah UI default.
Ruslan
7

Hal yang membuat Matlab begitu populer dan istimewa adalah kotak alatnya yang sangat baik di berbagai disiplin ilmu. Karena tujuan utama Anda adalah mempelajari Matlab, jadi tidak ada perbedaan sama sekali jika Anda bekerja dengan Oktaf atau Matlab!

Hanya pergi dan membeli Matlab tanpa kotak alat keren (yang pada dasarnya tergantung pada jurusan Anda) sebenarnya bukan pengeluaran yang masuk akal!

Anda pasti dapat memiliki awal yang baik dengan Octave, dan ikuti banyak tutorial tentang Matlab di internet.

pengguna702846
sumber
4

Tidak banyak yang ingin saya tambahkan ke jawaban Rody Oldenhuis. Saya biasanya mengikuti strategi bahwa semua fungsi yang saya tulis harus dijalankan di Matlab.

Beberapa fungsi spesifik yang saya uji pada kedua sistem, untuk kasus penggunaan berikut:

a) oktaf tidak memerlukan server lisensi - mis. jika institusi Anda tidak mendukung lisensi lokal. Saya menggunakannya sekali dalam situasi di mana sistem saya menggunakan skrip tidak memiliki koneksi ke internet dan akan berjalan untuk waktu yang sangat lama (di sudut di lab) dan digunakan oleh banyak pengguna yang berbeda. Catatan: itu bukan tentang biaya lisensi, tetapi tentang masalah teknis terkait.

b) Octave mendukung platform lain, misalnya, Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - yang mungkin berguna.

Alexander Kemp
sumber
3

Fungsi dan penutupan bersarang sekarang didukung oleh banyak bahasa, termasuk MATLAB. JavaScript mempromosikan penutupan sebagai prinsip desain kelas satu.

Sayangnya, Oktaf tidak mendukung penutupan (fungsi bersarang dengan pelingkupan leksikal).

Menurut http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html orang bahkan mungkin mendapatkan kesan bahwa pengembang tidak ingin atau tidak dapat memperbaikinya.

Ini akan memecah banyak kode, keduanya. Tidak ada solusi.

Wolfgang Kuehn
sumber
Saya tidak yakin ini akurat lagi. Fungsi bersarang diimplementasikan dalam Octave, dan saya menemukan mereka lebih fleksibel daripada Matlab: misalnya, bisa mendeklarasikan fungsi (selain lambda) di dalam skrip, yang tidak mungkin dengan Matlab terakhir kali saya mencobanya.
MayeulC
@MayeulC Bagian yang lebih fleksibel sebenarnya memotong dua arah.
Wolfgang Kuehn
0

Oktaf dan matlab memiliki banyak kesamaan. Tapi Oktaf adalah antarmuka baris perintah. Anda harus mengetik setiap perintah di command prompt, sementara matlab dilengkapi dengan GUI terbaik. Saya sarankan terlebih dahulu Anda menggunakan versi siswa matlab; setelah mempelajari pelajaran dasar gunakan gnu oktaf permentaly. Sekarang gnu oktaf hadir dengan gui, tetapi sekarang versi pengembangan. Ada beberapa front end gui untuk gnu oktaf, seperti guioctave, xoctave (tidak gratis), DomainMath IDE, dll.

vinu kn
sumber
2
versi pengembangan oktaf (3.7.5 menjadi) hadir dengan gui asli, yang terlihat lebih bagus!
kjetil b halvorsen