MATLAB, R'nin yapamadığı ne yapabilir? [kapalı]


137

İnsanların MATLAB lisanslarının ne kadar pahalı olduğunu şikayet ettiklerini sık sık duyuyorum . Öyleyse neden sadece Octave veya R kullanmadıklarını merak ediyorum . Ama ikincisi doğru mu? MATLAB yerine R kullanabilir misiniz?


13
Bu arada, başka bir açık kaynak alternatifi var: Octave çoğunlukla Matlab uyumlu
sellibitze

14
Teknik olarak, bir dilde yapılabilecek her şey herhangi bir dilde ("neyi hesaplayabilir" açısından) yapılabilir. Bu sadece kullanım kolaylığı ve öğrenme kolaylığı meselesidir
BlueRaja - Danny Pflughoeft

20
+1: Matlab yazılım bütçemi tüketebilir. R henüz bunu başaramadı.
Yineleyici

3
Diğer bazı ifadeleri düzeltmek için: Octave veya FreeMat'te tüm Matlab kodlarını yeniden kullanabileceğiniz doğru değildir. Diğer sürümlerde hiç iyi uygulanmayan bazı işlev sınıfları vardır. Ben sadece bu sınıflar için yaklaşık benzer işlevselliğe sahip ortamlarda yeniden uygulamak daha iyi bulduk büyük kod blokları var. Matlab'ın Octave'nin sahip olmadığı işlevsellikten, R, Python ve bir dereceye kadar Java ve C'de taşıyıcılar buldum. Kütüphaneleri yeniden uygulamak temel koddan daha zordur. Kütüphanelere dikkat edin ...
Iterator

5
Bu sorunun kapatılması haklı değildir. Bu soru yoklama ile ilgili değil, Matlab'da tam olarak neler yapabileceğinizle ilgili değil, R'de değil. Bu tür şeyler kolayca numaralandırılabilir ve referanslarla desteklenebilir.
Frank

Yanıtlar:


128

MATLAB yerine R kullanabilir misiniz?

Evet.

MATLAB'ı yıllarca kullandım, ancak son 3 yılda öncelikle R'ye geçtim. Bu noktada, ortak olmaktan çok ortak noktaları var. Kısmen alanınıza ve kullanım durumuna bağlıdır. Ve Spencer Graves'in daha önce söylediği gibi , aynı zamanda hangi "kiliseye sık sık geldiğinize" bağlıdır. Karar vermeden önce belirli bir görev için MATLAB araç setine ve CRAN'a bakarsanız en iyisidir .

Benzer bir soru R-Yardım'da birkaç yıl önce ve daha yakın zamanda sordu . David Hiebeler (Maine Üniversitesi'nde) kapsamlı bir R / MATLAB karşılaştırması yapar ve bu konuda en iyi referanstır. Temel işlevlerin bu karşılaştırmasını da inceleyebilirsiniz .

İşte geçmişte gözlemlediğim bazı şeyler: Bunların hiçbiri anlaşma kırıcı olmamalı.

  • Genel olarak, MATLAB daha iyi bir programlama ortamına sahiptir (örn. Daha iyi dokümantasyon, daha iyi hata ayıklayıcılar, daha iyi nesne tarayıcı) ve kullanımı "daha kolay" (isterseniz herhangi bir programlama yapmadan MATLAB kullanabilirsiniz). Simulink , blokları grafiklere bağlayarak görsel olarak programlamanızı sağlar. REvolution R, gelişmiş hata ayıklama ile daha iyi bir IDE sağlayarak bu farklılıkların bazılarını ele alıyor , ancak yine de bir adım geride.
  • MATLAB normal konfigürasyonda biraz daha hızlıdır ( bir örnek için bu kritere bakın ), ancak bu bir sorun haline gelirse R performansını artırmak için yapılabilecek şeyler vardır.
  • Ticari olduğundan, tartışmalı olarak daha fazla "ürün" (entegre eklentiler anlamında) ve destek (ancak bunun için ödeme yaparsınız) vardır. Ürün listesine bakınız . Örneğin, dağıtılabilen yürütülebilir MATLAB programları oluşturan MATLAB derleyicisi gibi şeyler vardır .
  • Paketler / araç setleri söz konusu olduğunda, MATLAB fiziksel bilimler için çok daha fazla desteğe sahipken, R istatistikler için daha güçlüdür, bu da diğerinin bu görevleri yerine getiremeyeceği anlamına gelmez. Ve her ikisi de kolayca genişletilebilir.

Bu nedenle, kullanım kolaylığı birincil bir endişe değilse (ve açık kaynaklı bir araç kullanmaktan kaçınmak için başka bir iş nedeni yoksa), o zaman R'yi kullanmak için gerçek bir durum olduğunu düşünüyorum. etrafında güçlü bir topluluk (R posta listeleri şaşırtıcı), hızla gelişiyor (bkz. CRAN) ve ücretsiz (bu küçük bir sorun değil!).

Düzenleme: Ben sadece bir noktaya daha eklemek istiyorum: kitap "R ve MATLAB ile Fonksiyonel Veri Analizi" "Matlab ve R Dilleri Temel Karşılaştırmalar" hakkında bir bölüm içerir. Bu, bazı önemli sözdizimi farklılıklarını (bir noktanın yorumlanması veya köşeli parantezlerin anlamı [] gibi) kapsar. Kitabın kendisi fonksiyonel programlama ile ilgilenen herkes için okumaya değer (her iki dilde).


5
Burada her birinde eşdeğer görevlerin nasıl yapılacağını gösteren güzel bir matlab / R referansı var: math.umaine.edu/~hiebeler/comp/matlabR.html
Bastırma

4
"[MATLAB] tartışmalı olarak daha fazla ürün ve desteğe sahip". Buna katılmıyorum. CRAN ve Bioconductor (R için), MATLAB + araç kutuları + Dosya Değişimi'nden çok daha kapsamlıdır. Ayrıca, R-Help posta listesi benim tecrübelerime göre genellikle ücretli destek kadar etkilidir. MATLAB derleyicisinin R'de çoğaltılmayan harika bir özellik olduğunu kabul ediyorum
Richie Cotton

2
Çoğu zaman R fonksiyonları Matlab'daki fonksiyonlardan daha iyi belgelenir. Matlab belgelerinin kalitesinin işlevden işleve ve (ticari) araç kutuları arasında çok değiştiğini görüyorum. Matlab IDE'nin biraz daha başlangıç ​​dostu olduğunu kabul ediyorum, ancak günlük olarak kullanıyorsanız ESS for R'den daha iyi değil .
Matti Pastell

10
RStudio güzel bir yeni R IDE
Jason Axelson

1
Çok kötü bu soru kapatıldı. Bu, StackOverflow'da gördüğüm en iyi teknik tartışmalardan biridir.
kd4ttc

32

R, istatistiksel veri analizi ve grafikleri için bir ortamdır. MATLAB'ın kökenleri sayısal hesaplamadadır. Temel dil uygulamalarının veri işleme için (örneğin, matris / vektör işlemleri) için kullanmanız durumunda birçok ortak özelliği vardır.

R, başka bir yerde bulmak zor istatistiksel işlevselliğe sahiptir ( CRAN üzerinde> 2000 Paket ) ve birçok istatistikçi bunu kullanır. Öte yandan, MATLAB gibi mühendislik uygulamaları için çok sayıda (pahalı) araç kutusuna sahiptir.

  • görüntü işleme / görüntü elde etme,
  • filtre tasarımı,
  • bulanık mantık / bulanık kontrol,
  • kısmi diferansiyel denklemler,
  • vb.

R, CRAN adında geniş bir ek özellik sağlayan büyük bir paket havuzuna sahiptir (genel noktanıza katılıyorum). Örn: bir PDE çözücü: cran.r-project.org/web/packages/deSolve/index.html
Bastırma

7
MATLAB ayrıca CRAN'a benzer bir şeye sahiptir: 10.000'den fazla kullanıcı tarafından gönderilen işlev ve serbestçe kullanılabilen araç kutuları ile büyük bir Dosya Değişimi ( mathworks.com/matlabcentral/fileexchange ).
gnovice

2
MATLAB Central'ın Dosya Değişimi dışında, MATLAB için büyük, ücretsiz bir kod tabanı da vardır.
Tahmin

26

Çevre Mühendisliği ile ilgili problemleri çözmek ve modeller oluşturmak için hem R hem de MATLAB'ı kullandım ve iki sistem arasında çok fazla çakışma var. Bence MATLAB'ın avantajları, alana özgü özel uygulamalarda yatmaktadır. Bazı örnekler:

  • Akışkanlar dinamiği araştırmalarına yardımcı olan düzene benzer fonksiyonlar.

  • Görüntü işleme araç seti gibi araç kutuları. Havza algoritması gibi araçların eşdeğer bir uygulamasını sağlayan bir R paketi bulamadım.

Bence MATLAB çok daha iyi etkileşimli grafik özellikleri sunuyor. Ancak, R'nin uygulamaya bağlı olarak daha iyi statik baskı kalitesinde grafikler ürettiğini düşünüyorum. MATLAB'ın sembolik matematik araç kutusu da Ryacas veya rSymPy gibi R eşdeğerlerinden daha iyi entegre ve daha yeteneklidir. MATLAB derleyicisinin varlığı, MATLAB koduna dayalı sistemlerin MATLAB ortamından bağımsız olarak dağıtılmasına izin verir - kullanılabilirliği ne kadar para harcamanız gerektiğine bağlı olacaktır.

Dikkat etmem gereken başka bir şey de MATLAB hata ayıklayıcısının çalıştığım en iyilerden biri olduğudur.

R ile gördüğüm temel avantaj, sistemin açıklığı ve genişletilebilme kolaylığıdır. Bu, CRAN'da inanılmaz çeşitlilikte paketlerle sonuçlandı. Mathworks'ün kullanıcı destekli araç kutuları deposunu da koruduğunu biliyorum ve çok fazla kullanmadığım için adil bir karşılaştırma yapamıyorum.

R'nin açıklığı da derlenmiş kodda bağlantıya uzanır. Bir süre önce Fortran'da yazılmış bir modelim vardı ve girdi veya süreç sonuçlarını hazırlamak için R veya MATLAB'ı ön uç olarak kullanma arasında karar vermeye çalışıyordum. Derlenmiş kod MEX arayüzü hakkında okuma bir saat geçirdim. Arayüzü yönetmek için karmaşık bir işaretçi hokkabazlığı yapan ayrı bir Fortran rutini yazmam ve sürdürmem gerektiğini bulduğumda, MATLAB'ı rafa kaldırdım.

R arayüzü .Fortran ([altyordam adı], [argüman listesi]) çağrısından oluşur ve daha hızlı ve daha temizdir.


11
Ayrıca, R'nin Sweave sistemi için kitabımda tekrarlanabilir araştırmayı sağlamak için büyük bir artı olduğunu da belirtmeliyim. Herkesin serbestçe kullanılabilir bir araç kullanarak bir kağıdın veya raporun arkasındaki hesaplamaları yeniden çalıştırmasına ve analiz etmesine izin vermek bence son derece önemlidir.
Sharpie

22

MATLAB'ın R'ye göre en büyük avantajlarından biri MATLAB belgelerinin kalitesidir. Açık kaynak olan R, bu açıdan birçok açık kaynak projesinde ortak bir özelliktir.

Ancak R çok faydalı bir ortam ve dildir. Biyoinformatik topluluğunda yaygın olarak kullanılmaktadır ve bu alanda yararlı birçok pakete sahiptir.

R'ye bir alternatif, MATLAB'a çok benzeyen Octave'dir ( http://www.gnu.org/software/octave/ ), MATLAB komut dosyalarını çalıştırabilir.


2
Gönderilen tüm R paketleri, belgeler ve örnekler için test edilmiştir.
Fernando

21

Deneyimlerime göre MATLAB'dan Python'a geçiş daha kolay bir geçiş - numpy / scipy'li Python , stil ve özellikler açısından R'den daha MATLAB'a daha yakın . Octave ve Scilab açık kaynaklı doğrudan MATLAB klonları da var .

MATLAB'ın R'nin yapamayacağı çok şey var - benim alanımda MATLAB gerçek zamanlı veri toplama için çok kullanılıyor - çoğu donanım şirketi MATLAB arayüzlerini içeriyor. UR ile bu mümkün olsa da, çok daha fazla ilgili olacağını hayal edin. Ayrıca Simulink, R'den eksik olduğunu düşündüğüm bir işlevsellik alanı sağlıyor. Eminim daha fazlası var ama R'ye aşina değilim.


11

Kısa cevap: hayır, elbette hayır. Herhangi bir matematiksel yazılım paketi kümesinin çakışmaları olsa da, her zaman belirli sorun alanlarına karşı önyargıları olacaktır. Bu önyargılar, bu paketlerden birini kullanmak isteyip istemediğinizi kuvvetle gösterir.

MATLAB'ın R'nin yapamayacağı şeylere bir örnek, sinyal işleme / edinme ve kontrol için gerçek zamanlı donanıma arabirimdir. MATLAB'deki bir Simulink modeli, ölçülen verileri girdi olarak alan ve uygun çıkışları hesaplayan gerçek bir sistemde yürütülecek kodu derlemeden önce hem makinenizde simülasyonda çalışacak şekilde yapılandırılabilir (bir kontrol sisteminin simülasyonundan önce tam olarak çalışmaktadır. bir). Makinenizdeki uygun donanım kartıyla, gerçek zamanlı kontrol sistemlerini bir PC üzerinden çalıştırabilirsiniz.

Buna karşılık, R, MATLAB'ın neler yapabileceğinden daha iyi performans gösterdiğinden emin olduğum istatistiklerin rolünde sıkı bir şekilde ayarlanmış gibi görünüyor. Benzer şekilde, Mathematica sembolik matematikte MATLAB'dan daha iyidir; Python genel programlamada MATLAB'dan daha iyidir; gnuplot aslında grafik oluşturmada hepsinden daha iyidir (er, sanırım); ve bunun gibi.


11
R'nin aslında grafik oluşturmak için çok iyi olduğu bilinmektedir. Onlar da çok iyi görünüyorlar. Aslında, R'ye bakmamın ilk sebebi, meslektaşlarımın R'yi kullanarak yaptığı güzel grafikleri kıskanıyordum.
Frank

11

Yukarıda verilen cevapların çoğuna katılıyorum. Cevap MATLAB ve R yeteneklerinin farklılığına özgü olduğundan, çok önemli bir konuya değineceğim: MATLAB, bir JVM içerir ve Java ile kusursuz ve sağlam birlikte çalışabilirliğe sahiptir. Java'nın geniş kütüphane evreninin tamamına MATLAB kullanıcısı erişebilir. MATLAB IDE neredeyse fakir bir adamın Tutulması olarak kullanılabilir. Buna karşılık, rJava, yaratıcısının (Roman Francois) çok değerli çabalarına rağmen çok olgunlaşmamış.


9

Yapamayız çünkü müşterilerimiz tarafından beklenen / gereklidir.


3
Bu tamamen geçerli bir cevap. Açık kaynaklı bir çözümü kabul etmeyecek birçok endüstrinin olduğunu anlamak önemlidir. Plakanın R'sini alan şüpheli uyumluluk gereksinimleri vardır.
Brandon Bertelsen

1
@BrandonBertelsen: özellikle, ne?
smci

3
@ smci bu ifade artık 2010'daki kadar doğru değil. R'nin kullanımı arttı.
Brandon Bertelsen

Tamam, ancak 2010'dan itibaren bize hangi uyumluluk gereksinimlerini plakadan çıkardığını söyleyebilir misiniz (ve hala bir sorun var)?
smci

1
Müşterilerimiz genellikle MATLAB'ı kullanırlar ve genellikle onlarla kod ve model alışverişinde bulunmamız gerekir. Genellikle R kullanan endüstrilerin çoğunlukla veri setleri ve istatistiklerle ilgilendiğini görüyorsunuz.
Nzbuu

5

Sqldf paketi ile, R sadece istatistikleri değil, aynı zamanda makinenizde yeterli RAM olduğunu varsayarak ciddi veri madenciliğini de yapabilir.

RServe paketi ile R normal bir TCP / IP sunucusu olur; böylece R'yi java'dan (veya API'nız varsa başka bir dilden) çağırabilirsiniz. Ayrıca R'de java veya R'yi çağırmak için bir paket var.


Doğru, ama soru "MATLAB, R'nin yapamayacağı ne yapabilir?" "MATLAB'nin yapamayacağı R ne yapabilir?".
Marek

4

Hem MATLAB hem de R'nin bir kullanıcısı olarak, bunların çok farklı uygulamalar olduğunu düşünüyorum. Kendim bilgisayar bilimi, vb. Hakkında bir geçmişim var ve R'nin istatistikçiler için istatistikçiler tarafından olduğunu, MATLAB'ın ise programcılar için programcılar olduğunu düşünmesine yardımcı olamıyorum.

R, her türlü istatistiksel şeyi görselleştirmeyi ve hesaplamayı çok kolaylaştırır, ancak bana bağlıysa, sinyal işleme ile ilgili herhangi bir şeyi uygulamak için kullanmam.

Özetlemek gerekirse, istatistik yapmak istiyorsanız, R tuşunu kullanın. Programlamak istiyorsanız, MATLAB veya bir programlama dili kullanın.


4
Birincisi, Rbir programlama dilidir.
Frank

6
"Matlab programcılar tarafından programcılar için". MATLAB başlangıçta özellikle lineer cebir yapmak için yazılmıştır; genel amaçlı bir programlama dili değildi. Genel amaçlı dil özelliklerinin birçoğu daha sonra ele alınmıştır. (Sadece bir yıl boyunca uygulanabilir bir nesne yönelimli sistemi vardı.)
Richie Cotton

9
"Matlab programcılar tarafından programcılar için": Ciddi misiniz? MATLAB ile beni gerçekten rahatsız eden tek şey, dili icat edenlerin, bazı durumlarda dilin aşırı garipliği göz önüne alındığında, bir programcı olmamasıdır.
Hannes Ovrén

13
R istatistikçiler tarafından yaratıldı, Matlab mühendisler tarafından yaratıldı. Her ikisi de tamamen yetenekli programlama dilleri.
Sharpie

3
@ smci R kodu için üretim Matlab kodunu en son değiştirdiğimde 2008 yılında Ulusal Hava Durumu Servisi'ndeydi ve o zamandan beri sistem hatasız çalışıyor. Çoklu-gigabayt veri kümelerinin özyinelemeli algoritmalar kullanılarak çekirdek içi işlenmesi hiçbir şekilde bir bütün olarak bilimsel bilgi işlemin bir görev temsilcisi değildir ve bu nedenle bir programlama dilinin uygunluğu hakkında genel ifadeler yapmak için zayıf bir seçimdir.
Sharpie

2

Etkileşimli grafik desteği matlab'da R'den çok daha iyi. Matlab'ı dil olarak nefret ediyorum, ancak kullanıcılarının fare işlemleriyle verileri nasıl keşfedebileceğini gördüğümde kıskanıyorum, xlimvb. İçin yeni değerlerle komutları tekrarlamakla meşgulüm . Matlab ayrıca çok panelli grafikleri görev için kullanılan R yöntemlerinden çok daha iyi işler. Genel olarak, R grafikleri 1960'ların hissine sahiptir. Yayın için iyidir, ancak verilerin interaktif keşfi için en iyi çözüm değildir.


Her iki sistemin etkileşimli çizim araçlarının yoğun bir kullanıcısı olarak, sınırları kabul edeceğim (yani her ikisini de zorladığım gibi), ancak muhtemelen R'deki bazı çok yararlı etkileşimli grafik araçlarını kaçırıyorsunuz. : iplots, Acinonyx, Rstudio'nun manipüle edilmesi ve daha fazlası. Eğlenmek için bu örneği inceleyin .
Yineleyici

"R grafikleri 1960'ların hissine sahip" - bu yıllar önce doğru olabilir. Günümüzde, hızla popülerlik kazanan ggplot2 ile R grafikleri modern ve güzel bir görünüme sahip. Örneğin bakınız: r-bloggers.com/?s=ggplot
arielf
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.