Apa yang dapat dilakukan MATLAB yang tidak dapat dilakukan R? [Tutup]

137

Saya sering mendengar orang mengeluh betapa mahalnya lisensi MATLAB . Lalu aku bertanya-tanya mengapa mereka tidak hanya menggunakan Octave atau R . Tapi apakah yang terakhir benar? Bisakah Anda menggunakan R untuk mengganti MATLAB?

jujur
sumber
13
Omong
14
Secara teknis, apa pun yang dapat dilakukan dalam satu bahasa dapat dilakukan dalam bahasa apa pun (dari sudut pandang "apa yang dapat dihitungnya"). Ini hanya masalah kemudahan penggunaan dan pembelajaran
BlueRaja - Danny Pflughoeft
20
+1: Matlab dapat menghabiskan anggaran perangkat lunak saya. R belum berhasil melakukan ini.
Iterator
3
Untuk mengoreksi beberapa pernyataan lain: tidak benar bahwa seseorang dapat menggunakan kembali semua kode Matlab di Octave atau FreeMat. Ada beberapa kelas fungsi yang tidak diimplementasikan dengan baik sama sekali di versi lain. Saya memiliki blok kode yang besar yang menurut saya lebih baik untuk diterapkan lagi di lingkungan yang memiliki fungsionalitas yang kira-kira serupa hanya untuk kelas fungsi ini. Dari fungsionalitas yang Matlab miliki yang tidak dimiliki Octave, saya telah menemukan pengganti di R, Python, dan, sampai batas tertentu, Java dan C. Mengimplementasikan ulang pustaka lebih sulit daripada kode dasar. Perhatikan perpustakaan ...
Iterator
5
Penutupan pertanyaan ini tidak bisa dibenarkan. Pertanyaan ini bukan tentang polling, ini tentang apa sebenarnya yang dapat Anda lakukan di Matlab tetapi tidak di R. Hal-hal seperti itu dapat dengan mudah disebutkan dan didukung oleh referensi.
Frank

Jawaban:

128

Bisakah Anda menggunakan R untuk mengganti MATLAB?

Iya.

Saya menggunakan MATLAB selama bertahun-tahun tetapi beralih ke R dalam 3 tahun terakhir. Pada titik ini, mereka memiliki lebih banyak kesamaan daripada tidak. Ini sebagian tergantung pada bidang dan kasus penggunaan Anda. Dan seperti yang dikatakan Spencer Graves sebelumnya , itu juga tergantung pada "gereja mana yang kebetulan sering Anda kunjungi". Paling baik jika Anda melihat MATLAB toolkit vs. CRAN untuk tugas tertentu sebelum Anda memutuskan.

Pertanyaan serupa ditanyakan di R-Help beberapa tahun yang lalu dan baru-baru ini . David Hiebeler (di University of Maine) mempertahankan perbandingan R / MATLAB yang ekstensif , dan merupakan referensi terbaik tentang subjek tersebut. Anda juga dapat meninjau perbandingan fungsi dasar ini .

Berikut adalah beberapa hal yang saya amati di masa lalu, tidak ada yang bisa menjadi pemecah kesepakatan.

  • Secara umum, MATLAB memiliki lingkungan pemrograman yang lebih baik (misalnya dokumentasi yang lebih baik, debugger yang lebih baik, browser objek yang lebih baik) dan "lebih mudah" untuk digunakan (Anda dapat menggunakan MATLAB tanpa melakukan pemrograman apa pun jika Anda mau). Simulink memungkinkan Anda memprogram secara visual dengan menghubungkan blok dalam grafik. REvolution R mengatasi beberapa perbedaan ini dengan menyediakan IDE yang lebih baik dengan debugging yang ditingkatkan, tetapi ini masih selangkah di belakang.
  • MATLAB sedikit lebih cepat dengan konfigurasi normal ( lihat benchmark ini sebagai contoh ), meskipun ada beberapa hal yang dapat dilakukan untuk meningkatkan kinerja R jika itu menjadi masalah.
  • Karena komersial, itu juga bisa dibilang memiliki lebih banyak "produk" (dalam arti add-on terintegrasi) dan dukungan (tetapi Anda membayarnya). Lihat daftar produk . Misalnya, ia memiliki hal-hal seperti kompiler MATLAB yang membuat program MATLAB yang dapat dieksekusi yang dapat digunakan.
  • Sejauh menyangkut paket / toolkit, MATLAB memiliki lebih banyak dukungan untuk ilmu fisika sementara R lebih kuat untuk statistik, yang tidak berarti bahwa yang lain tidak dapat melakukan tugas-tugas ini. Dan keduanya dapat diperpanjang dengan mudah.

Jadi, jika kemudahan penggunaan bukanlah perhatian utama (dan tidak ada alasan bisnis lain untuk menghindari penggunaan alat open-source), maka saya pikir ada kasus nyata yang harus dibuat untuk menggunakan R. komunitas yang kuat di sekitarnya (milis R luar biasa), berkembang pesat (lihat CRAN), dan gratis (yang bukan masalah kecil!).

Sunting: Saya hanya akan menambahkan satu poin lebih lanjut untuk ini: buku "Analisis Data Fungsional dengan R dan MATLAB" mencakup bab tentang "Perbandingan Esensial Bahasa Matlab dan R". Ini mencakup beberapa perbedaan sintaksis yang penting (seperti interpretasi titik, atau arti tanda kurung siku []). Buku itu sendiri sangat layak dibaca bagi siapa pun yang tertarik dengan pemrograman fungsional (dalam kedua bahasa).

Shane
sumber
5
Ada referensi matlab / R bagus yang menunjukkan bagaimana melakukan tugas yang setara di masing-masing di sini: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire
4
"[MATLAB] juga bisa dibilang memiliki lebih banyak produk dan dukungan". Saya tidak setuju dengan ini. CRAN dan Bioconductor (untuk R) jauh lebih komprehensif daripada MATLAB + toolbox + File Exchange. Juga, milis R-Help biasanya sama efektifnya dengan dukungan berbayar, menurut pengalaman saya. Saya setuju bahwa kompiler MATLAB adalah fitur hebat yang tidak direplikasi di R.
Richie Cotton
2
Seringkali fungsi R didokumentasikan dengan lebih baik daripada yang ada di Matlab. Saya menemukan bahwa kualitas dokumentasi Matlab sangat bervariasi dari satu fungsi ke fungsi lainnya dan di antara kotak peralatan (komersial). Saya setuju bahwa Matlab IDE agak lebih ramah pemula, tetapi tidak lebih baik daripada misalnya ESS untuk R jika Anda menggunakannya pada basis harian.
Matti Pastell
10
RStudio adalah IDE R baru yang bagus
Jason Axelson
1
Sayang sekali pertanyaan ini ditutup. Ini adalah salah satu diskusi teknis terbaik yang pernah saya lihat di StackOverflow.
kd4ttc
32

R adalah lingkungan untuk analisis data statistik dan grafik. Asal MATLAB adalah dalam perhitungan numerik. Implementasi bahasa dasar memiliki banyak fitur yang sama jika Anda menggunakannya untuk manipulasi data (misalnya, operasi matriks / vektor).

R memiliki fungsionalitas statistik yang sulit ditemukan di tempat lain (> 2000 Paket di CRAN ), dan banyak ahli statistik yang menggunakannya. Di sisi lain, MATLAB memiliki banyak kotak peralatan (mahal) untuk aplikasi teknik seperti

  • pemrosesan gambar / akuisisi gambar,
  • desain filter,
  • logika fuzzy / kontrol fuzzy,
  • persamaan diferensial parsial,
  • dll.
rcs
sumber
R memiliki repositori paket besar yang disebut CRAN yang menyediakan banyak fitur tambahan (meskipun saya setuju dengan poin umum Anda). Contoh: pemecah PDE: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire
7
MATLAB juga memiliki analogi dengan CRAN: File Exchange yang cukup besar ( mathworks.com/matlabcentral/fileexchange ) dengan lebih dari 10.000 fungsi dan kotak alat yang dikirimkan pengguna dan tersedia secara gratis.
gnovice
2
Ada juga basis kode yang cukup besar dan gratis untuk MATLAB di luar File Exchange MATLAB Central.
Prediktor
26

Saya telah menggunakan R dan MATLAB untuk memecahkan masalah dan membangun model yang terkait dengan Teknik Lingkungan dan ada banyak tumpang tindih antara kedua sistem tersebut. Menurut pendapat saya, kelebihan MATLAB terletak pada aplikasi khusus domain khusus. Beberapa contohnya adalah:

  • Fungsi seperti merampingkan yang membantu dalam investigasi dinamika fluida.

  • Kotak alat seperti perangkat pemrosesan gambar. Saya belum menemukan paket R yang menyediakan implementasi alat yang setara seperti algoritme DAS.

Menurut pendapat saya, MATLAB memberikan kemampuan grafis interaktif yang jauh lebih baik. Namun, menurut saya R menghasilkan grafik kualitas cetak statis yang lebih baik, tergantung pada aplikasinya. Kotak alat matematika simbolik MATLAB juga terintegrasi lebih baik dan lebih mampu daripada setara R seperti Ryacas atau rSymPy. Keberadaan kompiler MATLAB juga memungkinkan sistem berdasarkan kode MATLAB untuk digunakan secara independen dari lingkungan MATLAB - meskipun ketersediaannya akan bergantung pada berapa banyak uang yang harus Anda keluarkan.

Hal lain yang harus saya perhatikan adalah bahwa MATLAB debugger adalah salah satu yang terbaik yang pernah saya kerjakan.

Keuntungan prinsip yang saya lihat dengan R adalah keterbukaan sistem dan kemudahan yang dapat diperpanjang. Ini menghasilkan keragaman paket yang luar biasa di CRAN. Saya tahu Mathworks juga memelihara repositori kotak alat kontribusi pengguna dan saya tidak dapat membuat perbandingan yang adil karena saya belum sering menggunakannya.

Keterbukaan R juga meluas ke penautan dalam kode yang dikompilasi. Beberapa waktu yang lalu saya memiliki model yang ditulis di Fortran dan saya mencoba untuk memutuskan antara menggunakan R atau MATLAB sebagai front-end untuk membantu menyiapkan masukan dan hasil proses. Saya menghabiskan satu jam membaca tentang antarmuka MEX untuk mengkompilasi kode. Ketika saya menemukan bahwa saya harus menulis dan mempertahankan rutinitas Fortran terpisah yang melakukan beberapa penyulingan penunjuk yang rumit untuk mengelola antarmuka, saya menyimpan MATLAB.

Antarmuka R terdiri dari pemanggilan .Fortran ([nama subrutin], [daftar argumen]) dan lebih cepat serta lebih bersih.

Sharpie
sumber
11
Saya juga harus menyebutkan bahwa R mendapat nilai tambah yang besar dalam buku saya untuk sistem Sweave untuk memungkinkan penelitian yang dapat direproduksi. Mengizinkan siapa pun untuk menjalankan ulang dan menganalisis penghitungan di balik makalah atau laporan menggunakan alat yang tersedia secara gratis sangat penting menurut saya.
Sharpie
22

Satu keuntungan besar MATLAB dibandingkan R adalah kualitas dokumentasi MATLAB. R, sebagai open source, menderita dalam hal ini, fitur yang umum pada banyak proyek open source.

Bagaimanapun, R adalah lingkungan dan bahasa yang sangat berguna. Ini banyak digunakan dalam komunitas bioinformatika dan memiliki banyak paket yang berguna dalam domain ini.

Alternatif untuk R adalah Octave ( http://www.gnu.org/software/octave/ ) yang sangat mirip dengan MATLAB, ia dapat menjalankan skrip MATLAB.

John
sumber
2
Semua paket yang dikirimkan R diuji untuk dokumentasi dan contoh.
Fernando
21

Dalam pengalaman saya pindah dari MATLAB ke Python adalah transisi yang lebih mudah - Python dengan numpy / scipy lebih dekat dengan MATLAB dalam hal gaya dan fitur daripada R. Ada juga klon MATLAB langsung sumber terbuka Oktaf dan Scilab .

Tentunya ada banyak hal yang dapat dilakukan MATLAB yang tidak dapat dilakukan R - di wilayah saya MATLAB banyak digunakan untuk akuisisi data waktu nyata - sebagian besar perusahaan perangkat keras menyertakan antarmuka MATLAB. Sementara ini mungkin dengan RI bayangkan itu akan jauh lebih terlibat. Juga Simulink menyediakan seluruh area fungsionalitas yang menurut saya hilang dari R. Saya yakin ada lebih banyak tetapi saya tidak begitu akrab dengan R.

robince
sumber
11

Jawaban singkatnya: tidak, tentu saja tidak. Meskipun paket perangkat lunak matematika mana pun akan tumpang tindih, paket perangkat lunak tersebut akan selalu memiliki bias terhadap domain masalah tertentu. Bias ini sangat menentukan apakah Anda ingin menggunakan salah satu paket ini atau tidak.

Contoh dari apa yang dapat dilakukan MATLAB yang tidak dapat dilakukan R adalah antarmuka ke perangkat keras waktu nyata untuk pemrosesan / akuisisi dan kontrol sinyal. Sebuah Simulink model dalam MATLAB dapat dikonfigurasi baik untuk berjalan dalam simulasi pada mesin Anda sebelum kompilasi kode untuk mengeksekusi pada sistem nyata mengambil data yang diukur sebagai input dan menghitung output yang sesuai (apa yang sebelumnya simulasi sistem kontrol sekarang berfungsi penuh satu). Dengan papan perangkat keras yang sesuai di mesin Anda, Anda dapat menjalankan sistem kontrol waktu nyata melalui PC.

R, sebaliknya, tampaknya secara tegas ditetapkan dalam peran statistik, di mana saya yakin itu melebihi apa yang dapat dilakukan MATLAB. Demikian pula, Mathematica lebih baik daripada MATLAB pada matematika simbolik; Python lebih baik dari MATLAB pada pemrograman umum; gnuplot lebih baik daripada semuanya dalam membuat grafik (eh, saya asumsikan); dan seterusnya.

Will Robertson
sumber
11
R sebenarnya dikenal sangat baik untuk membuat grafik. Mereka juga terlihat sangat bagus. Sebenarnya, alasan pertama bagi saya untuk melihat ke R adalah saya cemburu dengan beberapa grafik bagus yang dibuat rekan saya, menggunakan R. Jadi saya beralih dari gnuplot dan tidak pernah melihat ke belakang.
Frank
11

Saya setuju dengan banyak jawaban yang diberikan di atas. Karena jawabannya khusus untuk perbedaan kemampuan MATLAB dan R, saya akan menyebutkan yang sangat penting: MATLAB menyertakan JVM dan memiliki interoperabilitas yang sempurna dan kuat dengan Java. Semua perpustakaan alam semesta Java yang luas dapat diakses oleh pengguna MATLAB. IDE MATLAB hampir dapat digunakan sebagai Eclipse orang miskin. Sebagai perbandingan, rJava sangat tidak dewasa, meskipun ada upaya yang sangat berharga dari penciptanya (Roman Francois).

gappy
sumber
9

Kami tidak bisa karena itu diharapkan / dibutuhkan oleh pelanggan kami.

Nzbuu
sumber
3
Ini adalah jawaban yang sepenuhnya valid. Penting untuk disadari bahwa ada banyak industri yang tidak mau menerima solusi open source. Ada persyaratan kepatuhan yang dipertanyakan yang mengambil R dari pelat.
Brandon Bertelsen
1
@BrandonBertelsen: secara khusus, apa?
smci
3
@smci pernyataan itu tidak lagi benar seperti di tahun 2010. Penggunaan R telah berkembang biak.
Brandon Bertelsen
Oke, tetapi dapatkah Anda memberi tahu kami mulai tahun 2010, persyaratan kepatuhan apa yang membuat R lepas kendali (dan yang masih menjadi masalah)?
smci
1
Pelanggan kami umumnya juga menggunakan MATLAB dan kami sering diminta untuk bertukar kode dan model dengan mereka. Anda biasanya menemukan bahwa satu-satunya industri yang menggunakan R sebagian besar berkaitan dengan kumpulan data dan statistik.
Nzbuu
5

Dengan paket sqldf, R tidak hanya mampu untuk statistik, tetapi juga data mining yang serius - dengan asumsi ada cukup RAM pada mesin Anda.

Dan dengan paket RServe R menjadi server TCP / IP biasa; sehingga Anda dapat memanggil R dari java (atau bahasa lain jika Anda memiliki api). Ada juga paket di R untuk memanggil java keluar atau R.

Alex
sumber
Itu benar, tetapi pertanyaannya adalah "Apa yang bisa dilakukan MATLAB yang tidak bisa dilakukan R?" bukan "Apa yang bisa dilakukan R yang MATLAB tidak bisa lakukan?".
Marek
4

Sebagai pengguna MATLAB dan R, saya pikir mereka adalah aplikasi yang sangat berbeda. Saya sendiri memiliki latar belakang dalam ilmu komputer, dll. Dan saya tidak dapat berhenti berpikir bahwa R adalah oleh ahli statistik untuk ahli statistik sedangkan MATLAB oleh programmer untuk programmer.

R membuatnya sangat mudah untuk memvisualisasikan dan menghitung semua jenis statistik, tetapi saya tidak akan menggunakannya untuk mengimplementasikan pemrosesan sinyal apa pun yang terkait jika itu terserah saya.

Singkatnya, jika Anda ingin melakukan statistik, gunakan R. Jika Anda ingin memprogram, gunakan MATLAB atau beberapa bahasa pemrograman.

lhahne
sumber
4
Yang pertama, Radalah bahasa pemrograman.
Frank
6
"Matlab dibuat oleh programmer untuk programmer". MATLAB awalnya ditulis khusus untuk mengerjakan aljabar linier; itu bukan bahasa pemrograman tujuan umum. Banyak fitur bahasa tujuan umum telah ditempelkan setelahnya. (Ini hanya memiliki sistem berorientasi objek yang bisa diterapkan selama setahun.)
Richie Cotton
9
"Matlab dibuat oleh programmer untuk programmer": Apakah Anda serius? Satu-satunya hal yang benar-benar mengganggu saya dengan MATLAB adalah bahwa siapa pun yang menemukan bahasa bukanlah seorang programmer, mengingat kecanggungan bahasa yang ekstrem dalam beberapa situasi.
Hannes Ovrén
13
R dibuat oleh ahli statistik, Matlab dibuat oleh para insinyur. Keduanya adalah bahasa pemrograman yang sepenuhnya mampu.
Sharpie
3
@smci Terakhir kali saya menukar kode Matlab produksi untuk kode R adalah di Layanan Cuaca Nasional pada tahun 2008 dan sistem telah berjalan tanpa kesalahan sejak saat itu. Pemrosesan inti dari kumpulan data multi-gigabyte menggunakan algoritme rekursif sama sekali bukan merupakan perwakilan tugas dari komputasi ilmiah secara keseluruhan dan oleh karena itu merupakan pilihan patokan yang buruk untuk membuat pernyataan umum tentang kesesuaian bahasa pemrograman.
Sharpie
2

Dukungan untuk grafik interaktif jauh lebih baik di matlab daripada di R. Saya benci matlab sebagai bahasa, tapi saya cemburu ketika saya melihat bagaimana penggunanya dapat menjelajahi data dengan operasi mouse, sementara saya sibuk mengulangi perintah dengan nilai baru untuk xlimdll. Matlab juga menangani plot multi-panel jauh lebih baik daripada metode R untuk tugas tersebut. Secara umum, grafik R memiliki nuansa tahun 1960-an. Tidak masalah untuk publikasi, tetapi bukan solusi terbaik untuk eksplorasi data secara interaktif.

lembab
sumber
Sebagai pengguna berat dari alat penggambaran interaktif kedua sistem, saya akan setuju pada batasannya (yaitu seperti dalam saya mendorong keduanya dengan keras), tetapi Anda mungkin kehilangan beberapa alat grafik interaktif yang sangat berguna di R. Lihat paket berikut : iplots, Acinonyx, Rstudio's manipulate, dan banyak lagi. Untuk bersenang-senang, lihat contoh ini .
Iterator
"Grafik R memiliki nuansa tahun 1960-an" - itu mungkin benar beberapa tahun yang lalu. Saat ini, dengan ggplot2 yang dengan cepat mendapatkan popularitas, bagan R memiliki tampilan yang modern dan indah. Lihat misalnya: r-bloggers.com/?s=ggplot
arielf