Apakah mungkin menggunakan Octave untuk mempelajari pemrograman MATLAB?

23

Saya ingin belajar pemrograman MATLAB sehingga saya dapat melakukan beberapa penelitian / analisis saya sendiri dan juga, sehingga saya dapat mempelajari / memodifikasi beberapa skrip MATLAB yang telah saya temukan online dll.

Namun, masalahnya adalah saya tidak mampu membeli MATLAB. GNU Octave, dari apa yang saya dengar, cukup cocok untuk MATLAB. Tantangan dengan Octave adalah dokumentasinya sangat jarang.

Jadi MATLAB di satu sisi, sangat mahal (-ve), tetapi memiliki banyak dokumentasi, tutorial, dan skrip yang bagus secara online (+), sedangkan Oktaf gratis (seperti bir), walaupun (dapat dimengerti) ia tidak memiliki dokumentasi yang komprehensif, dll. .

Saya berpikir untuk mengunduh dan menginstal Octave, tetapi menggunakan dokumentasi MATLAB (dan skrip) untuk membantu saya melanjutkan. Saya menyadari bahwa ada beberapa perbedaan antara Oktaf dan MATLAB - yang saya coba selesaikan adalah apakah perbedaannya cukup besar untuk menggagalkan upaya saya untuk (secara efektif) "mempelajari MATLAB dengan menggunakan Oktaf".

Setiap umpan balik konstruktif diterima.

Homunculus Reticulli
sumber
3
Selamat datang, Homunculus. Kami berusia kurang dari dua bulan dan belum memiliki banyak tag. Saya telah menambahkan tag oktaf untuk Anda.
David Ketcheson
Pilihan lain, jika tujuan Anda hanya menggunakan perangkat lunak komputasi untuk penggunaan pribadi Anda adalah Mathematica. Versi lengkap lengkap tersedia untuk penggunaan pribadi kurang dari $ 300. Saya tidak tahu apakah ini sesuai dengan anggaran Anda atau tidak. Tetapi untuk apa yang didapatkan seseorang (versi yang sama dengan versi komersial penuh), saya pikir itu layak dilakukan. Catatan: Jika Anda seorang siswa, maka Matlab dan Mathematica juga tersedia untuk siswa dengan harga yang sama.
Nasser
1
Singkatnya, ya. Perbedaan antar bahasa cukup kecil. Dokumentasi untuk Matlab tersedia gratis di Internet dari Mathworks.com (pembuat Matlab). Hal utama yang akan Anda lewatkan adalah GUI Matlab. GUI yang bagus untuk Oktaf sulit ditemukan. Versi pengembangan Oktaf memiliki GUI tetapi sulit untuk menginstal. Saya menginstal QtOctave, yang saya dapatkan di outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Ini berfungsi dengan baik, kecuali selalu ada pesan kesalahan saat startup, dan saya tidak bisa menghentikan proses tanpa membunuh Oktaf sepenuhnya. Saya menggunakan Notepad ++ ...
Stefan Smith
... alih-alih editor QtOctave, dan sepertinya berfungsi lebih baik. Hal lain, perbedaan antara Oktaf dan Matlab, seperti mereka, secara luas didokumentasikan di situs Web gratis.
Stefan Smith
Karena saya tidak memiliki reputasi yang cukup untuk berkomentar, saya ingin menambahkan bahwa pernyataan dalam jawaban yang diterima: "Tentu saja, ada fitur MATLAB (terutama di kotak peralatan, tetapi Oktaf tidak memilikinya)" sepenuhnya salah. Octave memiliki banyak paket di Octave-forge yang mencakup setiap fungsi paket Matlab yang pernah saya butuhkan (saya bekerja dalam pemrosesan gambar dan optimisasi untuk gambar medis, dan membutuhkan beberapa kotak peralatan / paket). Selain itu, jawaban yang diterima tidak membahas masalah besar, yaitu tidak ada kode yang ditulis oleh si penanya yang dapat digunakan oleh laboratorium atau individu
barnhillec

Jawaban:

24

Penafian: Saya terkadang merasa kesal ketika seseorang mencoba memberi tahu saya apa yang menurut mereka harus saya lakukan daripada menjawab pertanyaan yang saya tanyakan. Tetapi saya akan mengambil risiko dan menyarankan alternatif bagi Anda.

Saya akan menyarankan melihat paket komputasi ilmiah Python: numpy , matplotlib , dan scipy . Bersama-sama, mereka memberikan Anda sebagian besar fungsi inti dari MATLAB (dalam beberapa kasus mereka memberi Anda lebih dari MATLAB). Mereka gratis dan open source, dan saat ini mungkin memiliki basis pengguna yang lebih luas daripada Octave. Sebagian besar infrastruktur komputasi ilmiah di Python didukung oleh Enthought Inc. , dan saya akan merekomendasikan agar Anda menginstal Distribusi Python Enthought gratis mereka , yang mencakup ketiga paket yang saya sebutkan dan banyak lagi.

Tentu saja, ada fitur MATLAB (terutama di kotak alat, tetapi Oktaf tidak memilikinya) yang tidak dimiliki Python. Tapi saya menggunakan Python dalam kombinasi dengan bahasa tingkat rendah untuk sebagian besar pekerjaan saya, dan itu memungkinkan saya untuk memprogram dalam bahasa yang hampir sama nyamannya dengan MATLAB, antarmuka dengan sejumlah paket berguna yang tidak dimiliki MATLAB, dan untuk menjalankan kode yang mudah dibaca sama pada superkomputer.

Sunting : Anda mungkin juga ingin mencoba distribusi Anaconda Python dari Continuum Analytics. Ada versi gratis yang mencakup semua paket di atas dan banyak lagi.

David Ketcheson
sumber
7
Itu tergantung pada apakah Homunculus ingin belajar MATLAB karena mereka secara khusus perlu mempelajari MATLAB (misalnya, untuk suatu pekerjaan), atau mereka ingin belajar MATLAB untuk melakukan komputasi ilmiah, dalam hal ini Python mungkin merupakan pilihan yang lebih baik mengingat kendala keuangan.
Geoff Oxberry
3
@ Davidvideteson: Saya sebenarnya menggunakan numpy dan matplotlib (karena saya terbiasa dengan Python). Namun, saya terus mendapatkan banyak kode MATLAB, jadi saya ingin dapat belajar dari skrip MATLAB yang tersedia, dll (tanpa harus membayar biaya lisensi). Selain itu selalu baik untuk memiliki pemrograman MATLAB sebagai bulu ekstra di topi saya - itu sebabnya saya berpikir untuk belajar MATLAB melalui pintu belakang (menggunakan Octave).
Homunculus Reticulli
+1 untuk Python di sini, ini juga merupakan bahasa pemrograman nyata :) Meskipun saya harus mengatakan bahwa saya mulai dengan mempelajari MATLAB.
boyfarrell
Oktaf adalah tiruan Matlab dengan lisensi gratis. Sintaks bahasanya hampir sepenuhnya kompatibel. Python memecahkan masalah yang sangat berbeda dari Matlab dan Oktaf. Sintaksnya jauh lebih rumit dan bertele-tele karena bahasanya lebih fleksibel. Untuk membuat prototipe sistem linier, Anda akan menggunakan Matlab atau Oktaf, kemudian untuk mengimplementasikan perangkat lunak siap-produksi Anda akan bermigrasi ke python / Java. Sebelum beralih dari Matlab ke Python atau R, Anda harus memahami apa yang Anda hadapi.
FistOfFury
@FistOfFury Saya menggunakan Python3 murni untuk sistem linear. Untuk perangkat lunak siap produksi, Anda biasanya menggunakan C / Fortran atau tertanam.
perkusi
17

GNU Octave "sebagian besar kompatibel dengan Matlab", seluk-beluk tertentu berarti tidak semua skrip portabel dari MATLAB ke Oktaf.

Sebaiknya baca dokumentasi untuk bahasa dan / atau catatan kompatibilitas di FAQ atau di wikibooks . Ada juga porting note .

Paket yang mirip dengan kotak alat MATLAB ada, tetapi Anda harus memeriksanya untuk mengetahui seberapa miripnya. Juga ada upaya skrip konversi yang menangani perbedaan antara kedua bahasa, tetapi setahu saya tidak ada yang sempurna.

Gareth A. Lloyd
sumber
12

Ya, Anda dapat mempelajari MATLAB melalui Oktaf. Tetapi sintaksis Oktaf kurang membatasi dan lebih sejalan dengan bahasa skrip modern. MATLAB tampaknya ketinggalan dalam hal ini. Lihat tautan wiki ini Pemrograman MATLAB / Perbedaan antara Oktaf dan MATLAB

Perbedaan besar lainnya bagi saya adalah ketersediaan perpustakaan tertentu untuk MATLAB tetapi tidak untuk Oktaf.

Antrian Magang
sumber
9

Untuk mempelajari pemrograman bahasa-M secara umum dan cara kerja MATLAB, ya, Oktaf baik-baik saja. Jika Anda memerlukan kotak alat tertentu sebagai bagian dari pekerjaan Anda, dan tidak ada yang menerapkan versi gratisnya, maka Anda kurang beruntung.

MATLAB edisi siswa tidak terlalu mahal. Jika Anda berada di universitas, bahkan mungkin mereka memiliki lisensi situs. Anda harus melihat kedua kemungkinan tersebut.

Bill Barth
sumber
7

Saya telah menggunakan Oktaf dan MATLAB secara bergantian pada potongan kode yang sama di masa lalu; Saya tidak punya masalah dengan kompatibilitas. Perbedaan utama sejauh yang saya tahu adalah:

  1. MATLAB dapat dikompilasi dengan byte, dan sedikit lebih cepat.
  2. Oktaf dapat menggunakan salah satu #atau %untuk komentar, Matlab hanya menggunakan%
  3. Oktaf menghasilkan plot yang jauh lebih baik.
Dan
sumber
1
Saya akan tertarik untuk mendengar, dalam hal apa Oktaf menghasilkan plot yang jauh lebih baik (bukan karena saya sangat suka plot MATLAB ...).
Dirk
Oktaf menggunakan gnuplot sebagai backend. Mungkin saja saya suka gnuplot terlihat lebih. Satu-satunya hal spesifik yang dapat saya pikirkan adalah bahwa saya tidak perlu melakukan sesuatu yang istimewa untuk mendapatkan antialiasing; secara otomatis diaktifkan.
Dan
1
Pengalaman saya dengan Octave plotting telah tercampur, dan setelah mempelajari satu atau dua hal dengan MATLAB, kualitas gambar yang saya dapatkan sekarang sangat bagus. Mungkin Anda memiliki beberapa contoh di mana Oktaf mengalahkan Matab untuk ini? Aso, byte-dikompilasi? Apakah Anda berbicara tentang pembuat kode MATLAB? Anda tidak bisa hanya memasukkan kode MATLAB sewenang-wenang ke alat itu, dan jika saya ingat itu adalah alat yang agak mahal juga, tentu saja tidak tersedia dalam versi berlisensi siswa.
Reid.Atcheson
Aduh, aku mengerti maksudmu untuk kompilasi. Salahku.
Reid.Atcheson
Maaf, tapi apa maksudnya Matlab dapat di-byte-compile?
user17915
6

Memang mungkin, terutama jika Anda menggunakan GUI, seperti GUIOctave . Bahasa lain yang mungkin berguna bagi Anda karena banyak paket telah ditulis untuk itu adalah R. Ada juga GUI untuk bahasa R, yang disebut RStudio, dan dokumen terjemahan antara R dan MatLab .

Jean-Victor Côté
sumber
5

Mengenai pertanyaan Anda:
Saya akan menjawab ya. Hanya karena paradigma dan prinsipnya sama. Perbedaan dalam sintaksis diabaikan dan dapat diringkas dalam lembar contekan (jika Anda bekerja terutama dengan MATLAB satu hari).


Saran lain untuk alternatif:
Sebagai alternatif MATLAB, saya menggunakan SciLab . Ini gratis karena Octave, memiliki komunitas yang layak memberikan bantuan dan dukungan dan dokumentasinya cukup bagus. Dokumentasi built-in dan bantuan untuk fungsi mirip dengan yang MATLAB. (Yang paling saya sukai adalah kemampuan untuk mengeksekusi contoh dengan satu klik). Sintaksnya juga mirip dengan MATLAB.

Mengenai persamaan dan perbedaan antara SciLab dan MATLAB, dokumen ini mungkin menarik bagi Anda: Pengantar Scilab dari Sudut Pandang Pengguna Matlab, Eike Rietsch, Mei 2010 (PDF) .

Kelebihan lainnya untuk SciLab daripada MATLAB: Start-up dan GUI jauh lebih cepat. Saya belum mencoba Oktaf.

Torbjörn
sumber
1
Saya bukan penggemar Scilab, kesan pertama saya adalah bahwa ada banyak perbedaan kecil dalam sintaks dan fungsi dasar (relatif terhadap Matlab), tapi tidak ada awsome yang python memiliki untuk menebus ketidaksesuaian.
mdaoust
Hm ... sesuai dengan komentar Anda dan David Ketcheson menjawab sepertinya sangat layak untuk dicoba Python.
Torbjörn
5

Contoh praktis:

Saya menggunakan MATLAB di tempat kerja, dan saya mengambil kelas pembelajaran mesin online Stanford semester lalu.

Saya melakukan semua pekerjaan rumah di oktaf.

Saya hanya memperhatikan 2 perbedaan (saya hanya menggunakan fungsionalitas inti):

  • Oktaf sedikit lebih fleksibel tentang jenis ekspresi apa yang dapat diindeks. Jadi, jika Anda memanfaatkannya, kode Anda tidak akan portabel.
  • Dalam instalasi saya, plot pcolor () dan image () tidak berfungsi untuk array berukuran cukup, seperti 1000x1000, yang kecil, seperti 50x50, berfungsi dengan baik.
mdaoust
sumber
5

Ada beberapa perbedaan halus dalam interpretasi Octave tentang bahasa pemrograman MATLAB. Oktaf menggunakan " endif" dan " endwhile" masing-masing untuk menutup ifdan whilepernyataan. Oktaf juga memungkinkan Anda untuk mendeklarasikan fungsi pada baris perintah. Namun, ia harus mem-parsing apa pun yang juga di-parsing oleh MATLAB, jadi jika Anda tetap menggunakan bahasa pemrograman MATLAB, Anda harus baik-baik saja.

Ketahuilah bahwa perbedaan terbesar antara kedua program ini adalah fungsi bawaan yang melakukan sebagian besar pengangkatan angka secara numerik, misalnya " quad", " ode15s" dan semacamnya. Namun, semua fungsi ini harus didokumentasikan dengan baik ketika menggunakan perintah " help". Ada juga milis untuk Oktaf jika Anda memiliki pertanyaan yang lebih spesifik yang tidak dicakup oleh bantuan online.

Pedro
sumber
3
Oktaf lebih dari senang untuk menerima "akhir" untuk akhir dari kedua sementara loop dan jika statemtents.
Bill Barth
4

Ya Anda benar-benar bisa, saya lakukan. Namun, sebagian besar daya MATLAB hadir dengan beberapa kotak alat dan bawaannya yang sangat mudah digunakan yang mungkin memiliki atau mungkin tidak memiliki padanan dalam Oktaf.

Perlu diketahui juga bahwa sementara bahasa dasar itu sendiri kompatibel (kecuali untuk fitur OO yang baru di MATLAB), Oktaf memiliki beberapa 'tambahan' pada sintaks, seperti dapat menggunakan "! =" Untuk NEQ, dan juga memiliki beberapa alternatif perilaku default seperti bagaimana mem-parsing fungsi sebaris. Ini adalah hal-hal kecil yang akan menyebabkan kode Oktaf tidak berjalan di MATLAB langsung, kecuali Anda sudah berhati-hati untuk tidak mengandalkan perilaku itu.

Juga MATLAB adalah lingkungan komputasi penuh, dan bukan hanya bahasa yang berinteraksi dengan rutinitas aljabar linier yang dioptimalkan. Jadi apa yang Anda pelajari dari Oktaf hanya akan sejauh ini. Anda akan berfungsi dalam MATLAB jika Anda mahir dengan Oktaf, tetapi Anda tidak akan seproduktif mungkin dengan MATLAB.

Reid.Atcheson
sumber
2

Bahasa gratis terbaik yang memiliki sintaks seperti MATLAB adalah Julia. Ini juga lebih cepat dan memiliki sistem paket yang lebih luas (di antara alasan lain mengapa itu lebih baik ...), tetapi sintaks aljabar linier hampir persis sama (banyak algoritma yang dapat Anda terjemahkan ke MATLAB dengan mengubah A[i]pengindeksan ke A(i)). Saya percaya ini adalah bahasa terbaik untuk dipelajari saat ini, dan Anda akan "secara tidak sengaja mengenal MATLAB" hanya dengan menggunakannya.

Chris Rackauckas
sumber
0

Ya, Anda dapat mempelajari Matlab menggunakan Oktaf. Tentu ada beberapa batasan.

Oktaf dan Matlab membagikan banyak sintaks mereka. Keduanya bisa dipertukarkan dalam hal itu. Pengalaman di Matlab lebih kaya dan ramah pengguna, terutama ketika bekerja dengan grafis, meskipun Octave memiliki antarmuka pengguna grafis (GUI) baru yang dalam versi beta. Kedua sistem kemungkinan akan bertemu lebih lanjut karena lingkungan grafis untuk Oktaf meningkat.

Ada banyak kursus gratis di Coursera yang memberi Anda lisensi siswa Matlab sementara gratis selama kursus berlangsung. Cari kursus pembelajaran mesin.

Tinjuan kemarahan
sumber