Cosa può fare MATLAB che R non può fare? [chiuso]


137

Sento spesso che le persone si lamentano del costo delle licenze MATLAB . Allora mi chiedo perché non si limitano a usare Octave o R . Ma è quest'ultimo giusto? Puoi usare R per sostituire MATLAB?


13
a proposito, c'è un'altra alternativa open source: Octave è principalmente compatibile con Matlab
sellibitze,

14
Tecnicamente, tutto ciò che può essere fatto in una lingua può essere fatto in qualsiasi lingua (dal punto di vista del "cosa può calcolare"). È solo una questione di facilità d'uso e facilità di apprendimento
BlueRaja - Danny Pflughoeft

20
+1: Matlab può consumare il mio budget di software. R non è ancora riuscito a farlo.
Iterator,

3
Per correggere alcune altre affermazioni: non è corretto riutilizzare tutto il codice Matlab in Octave o FreeMat. Ci sono alcune classi di funzioni che non sono affatto ben implementate nelle altre versioni. Ho grandi blocchi di codice che ho trovato meglio implementare di nuovo in ambienti che hanno funzionalità approssimativamente simili solo per queste classi di funzioni. Tra le funzionalità di Matlab che Octave non ha, ho trovato surrogati in R, Python e, in una certa misura, Java e C. Reimplementare le librerie è più difficile del codice di base. Presta attenzione alle biblioteche ...
Iterator,

5
La chiusura di questa domanda non è giustificata. Questa domanda non riguarda il polling, riguarda esattamente cosa si può fare in Matlab ma non in R. Tali cose possono essere facilmente enumerate e supportate da riferimenti.
Frank,

Risposte:


128

Puoi usare R per sostituire MATLAB?

Sì.

Ho usato MATLAB per anni ma sono passato principalmente a R negli ultimi 3 anni. A questo punto, hanno molto più in comune che no. Dipende in parte dal campo e dal caso d'uso. E come diceva Spencer Graves in precedenza , dipende anche da quale "chiesa ti capita di frequentare". È meglio se guardi il MATLAB toolkit vs. CRAN per un'attività specifica prima di decidere.

Una domanda simile è stata posta su R-Help alcuni anni fa e ancora più recentemente . David Hiebeler (presso l'Università del Maine) mantiene un ampio confronto R / MATLAB ed è il miglior riferimento in materia. Puoi anche rivedere questo confronto tra le funzioni di base .

Ecco alcune delle cose che ho osservato in passato, nessuna delle quali dovrebbe essere un affare.

  • In generale, MATLAB ha un migliore ambiente di programmazione (ad es. Migliore documentazione, migliori debugger, migliore browser degli oggetti) ed è "più facile" da usare (è possibile utilizzare MATLAB senza eseguire alcuna programmazione se lo si desidera). Simulink ti consente di programmare visivamente collegando i blocchi in grafici. REvolution R sta affrontando alcune di queste differenze fornendo un IDE migliore con un debug migliorato, ma è ancora un passo indietro.
  • MATLAB è un po 'più veloce con la configurazione normale ( vedi questo benchmark per un esempio ), anche se ci sono cose che possono essere fatte per migliorare le prestazioni R se questo diventa un problema.
  • Dal momento che è commerciale, ha anche probabilmente più "prodotti" (nel senso di componenti aggiuntivi integrati) e supporto (ma si paga per questo). Vedi l' elenco dei prodotti . Ad esempio, ha cose come il compilatore MATLAB che crea programmi MATLAB eseguibili che possono essere distribuiti.
  • Per quanto riguarda i pacchetti / toolkit, MATLAB ha molto più supporto per le scienze fisiche mentre R è più forte per le statistiche, il che non significa che l'altro non possa svolgere questi compiti. E possono entrambi essere facilmente estesi.

Quindi, se la facilità d'uso non è una preoccupazione primaria (e non ci sono altri motivi commerciali per evitare l'uso di uno strumento open source), allora penso che ci sia un caso reale da utilizzare per l'utilizzo di R. Ha un forte comunità attorno ad esso (le mailing list R sono fantastiche), si sta rapidamente sviluppando (vedi CRAN) ed è gratuito (che non è un piccolo problema!).

Modifica: vorrei solo aggiungere un ulteriore punto a questo: il libro "Analisi dei dati funzionali con R e MATLAB" include un capitolo sui "Confronti essenziali dei linguaggi Matlab e R". Questo copre alcune importanti differenze di sintassi (come l'interpretazione di un punto o il significato delle parentesi quadre []). Vale la pena leggere il libro per chiunque sia interessato alla programmazione funzionale (in entrambe le lingue).


5
C'è un bel riferimento a matlab / R che mostra come eseguire compiti equivalenti in ciascuno qui: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire

4
"[MATLAB] ha probabilmente anche più prodotti e supporto". Non sono d'accordo con questo. CRAN e Bioconductor (per R) sono molto più completi di MATLAB + le caselle degli strumenti + lo scambio di file. Inoltre, nella mia esperienza, la mailing list di R-Help è generalmente efficace quanto il supporto a pagamento. Concordo sul fatto che il compilatore MATLAB è una funzionalità eccezionale che non viene replicata in R.
Richie Cotton,

2
Molte volte le funzioni R sono meglio documentate rispetto a quelle in Matlab. Trovo che la qualità della documentazione Matlab varia molto da una funzione all'altra e tra cassette degli attrezzi (commerciali). Sono d'accordo sul fatto che Matlab IDE sia un po 'più adatto ai principianti, ma non è meglio di ESS per R se lo usi su base giornaliera.
Matti Pastell,

10
RStudio è un bel nuovo IDE R
Jason Axelson

1
Peccato che questa domanda fosse chiusa. Questa è una delle migliori discussioni tecniche che abbia mai visto su StackOverflow.
kd4ttc,

32

R è un ambiente per l'analisi e la grafica di dati statistici. Le origini di MATLAB sono nel calcolo numerico. Le implementazioni del linguaggio di base hanno molte caratteristiche in comune se le si utilizza per la manipolazione dei dati (ad es. Operazioni con matrici / vettori).

R ha funzionalità statistiche difficili da trovare altrove (> 2000 pacchetti su CRAN ), e molti statistici lo usano. D'altra parte, MATLAB ha molti (costosi) toolbox per applicazioni di ingegneria come

  • elaborazione delle immagini / acquisizione delle immagini,
  • design del filtro,
  • logica fuzzy / controllo fuzzy,
  • equazioni differenziali parziali,
  • eccetera.

R ha un repository di pacchetti di grandi dimensioni chiamato CRAN che fornisce una vasta gamma di funzionalità aggiuntive (anche se sono d'accordo con il tuo punto generale). Esempio: un risolutore PDE: cran.r-project.org/web/packages/deSolve/index.html
Soppressione del

7
MATLAB ha anche qualcosa di analogo a CRAN: uno scambio di file considerevole ( mathworks.com/matlabcentral/fileexchange ) con oltre 10.000 funzioni e toolbox inviati dagli utenti che sono disponibili gratuitamente.
gnovice,

2
Esiste anche una base di codice gratuita e considerevole per MATLAB al di fuori dello scambio di file di MATLAB Central.
Predittore

26

Ho usato sia R che MATLAB per risolvere problemi e costruire modelli relativi all'ingegneria ambientale e c'è molta sovrapposizione tra i due sistemi. A mio avviso, i vantaggi di MATLAB risiedono nelle applicazioni specializzate specifiche del dominio. Alcuni esempi sono:

  • Funzioni come la semplificazione che aiutano nelle indagini sulla fluidodinamica.

  • Caselle degli strumenti come il set di strumenti di elaborazione delle immagini. Non ho trovato un pacchetto R che fornisce un'implementazione equivalente di strumenti come l'algoritmo spartiacque.

A mio avviso, MATLAB offre funzionalità grafiche interattive molto migliori. Tuttavia, penso che R produca una migliore grafica statica di qualità di stampa, a seconda dell'applicazione. Il toolbox matematico simbolico di MATLAB è anche meglio integrato e più capace degli equivalenti R come Ryacas o rSymPy. L'esistenza del compilatore MATLAB consente inoltre di distribuire sistemi basati sul codice MATLAB indipendentemente dall'ambiente MATLAB, anche se la sua disponibilità dipenderà dalla quantità di denaro che dovrai spendere.

Un'altra cosa che dovrei notare è che il debugger MATLAB è uno dei migliori con cui ho lavorato.

Il vantaggio principale che vedo con R è l'apertura del sistema e la facilità con cui può essere esteso. Ciò ha comportato un'incredibile varietà di pacchetti su CRAN. So che Mathworks mantiene anche un repository di toolbox forniti dagli utenti e non posso fare un confronto equo in quanto non l'ho usato così tanto.

L'apertura di R si estende anche al collegamento nel codice compilato. Qualche tempo fa avevo scritto un modello in Fortran e stavo cercando di decidere se utilizzare R o MATLAB come front-end per aiutare a preparare i risultati di input e processo. Ho trascorso un'ora a leggere l'interfaccia MEX per compilare il codice. Quando ho scoperto che avrei dovuto scrivere e mantenere una routine Fortran separata che faceva un po 'di complicata manipolazione dei puntatori per gestire l'interfaccia, ho messo da parte MATLAB.

L'interfaccia R consiste nel chiamare .Fortran ([nome della subroutine], [elenco argomenti]) ed è semplicemente più veloce e più pulita.


11
Dovrei anche menzionare che R ottiene un grande vantaggio nel mio libro per il sistema Sweave per consentire la ricerca riproducibile. Consentire a chiunque di rieseguire e analizzare i calcoli alla base di un documento o di un report utilizzando uno strumento disponibile gratuitamente è estremamente importante secondo me.
Sharpie,

22

Un grande vantaggio di MATLAB rispetto a R è la qualità della documentazione MATLAB. R, essendo open source, soffre a questo proposito, una caratteristica comune a molti progetti open source.

R è tuttavia un ambiente e un linguaggio molto utili. È ampiamente usato nella comunità bioinformatica e ha molti pacchetti utili in questo dominio.

Un'alternativa a R è Octave ( http://www.gnu.org/software/octave/ ) che è molto simile a MATLAB, può eseguire script MATLAB.


2
Tutti i pacchetti inviati da R sono testati per documentazione ed esempi.
Fernando,

21

Nella mia esperienza passare da MATLAB a Python è una transizione più semplice: Python con numpy / scipy è più vicino a MATLAB in termini di stile e funzionalità rispetto a R. Esistono anche cloni MATLAB diretti open source Octave e Scilab .

Certamente MATLAB può fare molto che R non riesce - nella mia zona MATLAB è molto utilizzato per l'acquisizione di dati in tempo reale - la maggior parte delle aziende hardware include interfacce MATLAB. Mentre questo può essere possibile con il RI, immagina che sarebbe molto più coinvolto. Anche Simulink fornisce un'intera area di funzionalità che penso manchi da R. Sono sicuro che ce ne sia di più ma non ho molta familiarità con R.


11

Risposta breve: no, certo che no. Mentre qualsiasi set di pacchetti software matematici avrà le sue sovrapposizioni, avrà sempre una propensione verso determinati domini problematici. Questi pregiudizi dipendono fortemente se si desidera utilizzare uno di questi pacchetti.

Un esempio di ciò che MATLAB può fare che R non può fare è l'interfaccia con l'hardware in tempo reale per l'elaborazione / acquisizione e il controllo del segnale. Un modello Simulink in MATLAB può essere configurato sia per essere eseguito in simulazione sulla macchina prima di compilare il codice da eseguire su un sistema reale prendendo dati misurati come input e calcolando output appropriati (ciò che era prima di una simulazione di un sistema di controllo è ora perfettamente funzionante uno). Con la scheda hardware appropriata nella macchina, è possibile eseguire sistemi di controllo in tempo reale tramite un PC.

R, al contrario, sembra fermamente impegnato nel ruolo della statistica, dove sono sicuro che supera quello che MATLAB può fare. Allo stesso modo, Mathematica è meglio di MATLAB in matematica simbolica; Python è meglio di MATLAB nella programmazione generale; gnuplot è meglio di tutti loro nel creare grafici (ehm, presumo); e così via.


11
R è noto per essere molto buono per la creazione di grafici. Anche loro sembrano molto buoni. In realtà, la prima ragione per cui ho esaminato R era che ero geloso di alcuni dei bei grafici che i miei colleghi avevano realizzato, usando R. Quindi sono passato da gnuplot e non ho mai guardato indietro.
Frank,

11

Sono d'accordo con molte delle risposte fornite sopra. Dal momento che la risposta è specifica per la diffusione delle funzionalità MATLAB e R, ne citerò una molto importante: MATLAB include una JVM e ha un'interoperabilità impeccabile e solida con Java. Tutto il vasto universo di librerie Java è accessibile all'utente MATLAB. L'IDE MATLAB può essere quasi usato come Eclipse di un uomo povero. In confronto, rJava è molto immaturo, nonostante lo sforzo molto prezioso del suo creatore (Roman Francois).


9

Non possiamo perché è previsto / richiesto dai nostri clienti.


3
Questa è una risposta completamente valida. È importante rendersi conto che ci sono molti settori che semplicemente non accettano una soluzione open source. Esistono requisiti di conformità discutibili che accettano R della piastra.
Brandon Bertelsen,

1
@BrandonBertelsen: in particolare, cosa?
smci,

3
@smci questa affermazione non è più vera come era nel 2010. L'uso di R è proliferato.
Brandon Bertelsen,

Ok, ma puoi dirci a partire dal 2010 quali requisiti di conformità hanno rimosso R dalla piastra (e quali sono ancora un problema)?
smci,

1
I nostri clienti generalmente usano anche MATLAB e spesso ci viene richiesto di scambiare codice e modelli con loro. In genere scopri che le uniche industrie che usano R si occupano principalmente di set di dati e statistiche.
Nzbuu,

5

Con il pacchetto sqldf, R è in grado non solo di statistiche, ma anche di un serio data mining - supponendo che ci sia abbastanza RAM sul tuo computer.

E con il pacchetto RServe R diventa un normale server TCP / IP; così puoi chiamare R da java (o qualsiasi altra lingua se hai l'API). C'è anche un pacchetto in R per chiamare java out o R.


È vero, ma la domanda è "Cosa può fare MATLAB che R non può fare?" non "Cosa può fare R che MATLAB non può fare?".
Marek,

4

Come utente di MATLAB e R, penso che siano applicazioni molto diverse. Io stesso ho un background in informatica, ecc. E non posso fare a meno di pensare che R sia statistico per statistico mentre MATLAB è programmatore per programmatore.

R semplifica la visualizzazione e il calcolo di tutti i tipi di dati statistici, ma non lo userei per implementare qualsiasi cosa relativa all'elaborazione del segnale se dipendesse da me.

Per riassumere, se vuoi fare statistiche, usa R. Se vuoi programmare, usa MATLAB o qualche linguaggio di programmazione.


4
Vieni uno, Rè un linguaggio di programmazione.
Frank,

6
"Matlab è di programmatori per programmatori". MATLAB è stato originariamente scritto appositamente per l'algebra lineare; non era un linguaggio di programmazione generico. Molte delle funzioni linguistiche di uso generale sono state successivamente approfondite. (Ha avuto solo un sistema orientabile agli oggetti praticabile per un anno.)
Richie Cotton,

9
"Matlab è di programmatori per programmatori": Sei serio? L'unica cosa che in realtà mi infastidisce con MATLAB è che chiunque abbia inventato la lingua non era un programmatore, data l'estrema imbarazzo della lingua in alcune situazioni.
Hannes Ovrén,

13
R è stata creata dagli statistici, Matlab è stata creata dagli ingegneri. Entrambi sono linguaggi di programmazione pienamente capaci.
Sharpie,

3
@smci L'ultima volta che ho scambiato il codice Matlab di produzione con il codice R è stato al National Weather Service nel 2008 e da allora il sistema funziona senza problemi. L'elaborazione in-core di set di dati multi-gigabyte mediante algoritmi ricorsivi non è affatto un compito rappresentativo del calcolo scientifico nel suo insieme ed è quindi una scelta sbagliata di benchmark per fare dichiarazioni generali sull'idoneità di un linguaggio di programmazione.
Sharpie,

2

Il supporto per la grafica interattiva è molto meglio in matlab che in R. Odio matlab come lingua, ma divento geloso quando vedo come i suoi utenti possono esplorare i dati con le operazioni del mouse, mentre sono impegnato a ripetere comandi con nuovi valori per xlimecc. Matlab gestisce anche trame multi-pannello molto meglio di qualsiasi metodo R per l'attività. In generale, la grafica R ha un aspetto anni '60. Va bene per la pubblicazione, ma non è la soluzione migliore per l'esplorazione interattiva dei dati.


In qualità di utente pesante degli strumenti di tracciamento interattivo di entrambi i sistemi, concorderò i limiti (vale a dire come spingo entrambi forte), ma probabilmente ti perderai alcuni strumenti grafici interattivi molto utili in R. Dai un'occhiata ai seguenti pacchetti : iplots, Acinonyx, manipolazione di Rstudio e altro. Per divertimento, dai un'occhiata a questo esempio .
Iteratore

"La grafica R ha un aspetto anni '60" - potrebbe essere vero anni fa. In questi giorni, con ggplot2 che sta rapidamente guadagnando popolarità, i grafici R hanno un aspetto moderno e bello. Vedi ad esempio: r-bloggers.com/?s=ggplot
arielf
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.