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?
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?
Risposte:
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.
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).
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
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.
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.
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.
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.
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).
Non possiamo perché è previsto / richiesto dai nostri clienti.
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.
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.
R
è un linguaggio di programmazione.
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 xlim
ecc. 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.