È possibile utilizzare Octave per imparare la programmazione MATLAB?


23

Voglio imparare la programmazione MATLAB in modo da poter condurre alcune ricerche / analisi da solo e anche, in modo da poter studiare / modificare alcuni script MATLAB che ho trovato online ecc.

Tuttavia, il problema è che non posso permettermi MATLAB. GNU Octave, da quello che ho sentito, è abbastanza compatibile con MATLAB. La sfida con Octave è che la documentazione è molto scarsa.

Quindi MATLAB da un lato, è proibitivamente costoso (-ve), ma ha molta buona documentazione, tutorial e script online (+), mentre Octave è gratuito (come nella birra), anche se (comprensibilmente) manca di documentazione completa, ecc. .

Sto pensando di scaricare e installare Octave, ma usando la documentazione MATLAB (e gli script) per aiutarmi ad andare avanti. Sono consapevole che ci sono alcune differenze tra Octave e MATLAB - quello che sto cercando di capire è se le differenze sono abbastanza grandi da contrastare i miei sforzi per "imparare efficacemente MATLAB usando Octave".

Qualsiasi feedback costruttivo benvenuto.


3
Benvenuto, Homunculus. Abbiamo meno di due mesi e non abbiamo ancora molti tag. Ho aggiunto il tag ottava per te.
David Ketcheson,

un'altra opzione, se il tuo obiettivo è solo quello di utilizzare un software computazionale per il tuo uso personale è Mathematica. La versione completa completa è disponibile per uso personale a meno di $ 300. Non so se questo rientra nel tuo budget o meno. Ma per quello che si ottiene per questo (stessa versione della versione commerciale completa), ne vale la pena penso. nota: se sei uno studente, anche Matlab e Mathematica sono disponibili per gli studenti allo stesso prezzo.
Nasser,

1
In una parola, sì. Le differenze tra le lingue sono piuttosto piccole. La documentazione per Matlab è disponibile gratuitamente su Internet da Mathworks.com (i produttori di Matlab). La cosa principale che ti mancherà è la GUI di Matlab. Una buona interfaccia grafica per Octave è difficile da trovare. La versione di sviluppo di Octave ha una GUI ma è difficile da installare. Ho installato QtOctave, che ho ottenuto su outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Funziona bene, tranne che c'è sempre un messaggio di errore all'avvio, e non posso terminare un processo senza uccidere Octave del tutto. Uso Notepad ++ ...
Stefan Smith il

... invece dell'editor di QtOctave, e sembra funzionare meglio. Un'altra cosa, le differenze tra Octave e Matlab, come sono, sono ampiamente documentate su siti Web gratuiti.
Stefan Smith,

Dato che non ho abbastanza reputazione per commentare, vorrei aggiungere che un'affermazione nella risposta accettata: "Certo, ci sono caratteristiche di MATLAB (in particolare nelle cassette degli strumenti, ma Octave non ha quelle)" è completamente sbagliato. Octave ha un ricco set di pacchetti in Octave-forge che include tutte le funzioni dei pacchetti di Matlab di cui io abbia mai avuto bisogno (lavoro nell'elaborazione e nell'ottimizzazione delle immagini per le immagini mediche e ho bisogno di alcuni toolbox / pacchetti). Inoltre, la risposta accettata non affronta un grosso problema, ovvero che nessun codice scritto dall'interrogante sarà utilizzabile da laboratori o
privati

Risposte:


24

Disclaimer: a volte mi arrabbio quando qualcuno cerca di dirmi cosa pensano che dovrei fare piuttosto che rispondere alla domanda che ho posto. Ma ho intenzione di correre un rischio e suggerire un'alternativa a te.

Suggerirei di esaminare i pacchetti di calcolo scientifico di Python: numpy , matplotlib e scipy . Insieme, offrono la maggior parte delle funzionalità principali di MATLAB (in alcuni casi offrono più di MATLAB). Sono gratuiti e open source e al giorno d'oggi potrebbero avere una base di utenti più ampia di Octave. Gran parte dell'infrastruttura di elaborazione scientifica in Python è supportata da Enthought Inc. e consiglierei di installare la loro distribuzione gratuita di Enthought Python , che include tutti e tre i pacchetti che ho citato e altro.

Naturalmente, ci sono funzionalità di MATLAB (in particolare nelle caselle degli strumenti, ma Octave non ha quelle) che mancano a Python. Ma uso Python in combinazione con linguaggi di livello inferiore per la maggior parte del mio lavoro e mi consente di programmare in una lingua quasi comoda come MATLAB, interfaccia con una serie di pacchetti utili che MATLAB non ha e di eseguire il stesso codice di facile lettura su un supercomputer.

Modifica : potresti anche voler provare la distribuzione Anaconda Python da Continuum Analytics. Esiste una versione gratuita che include tutti i pacchetti sopra e molto altro.


7
Dipende dal fatto che Homunculus voglia imparare MATLAB perché in particolare hanno bisogno di imparare MATLAB (per esempio, per un lavoro), o vogliono imparare MATLAB a fare calcoli scientifici, nel qual caso Python potrebbe essere una scelta migliore dati i vincoli finanziari.
Geoff Oxberry,

3
@DavidKetcheson: attualmente sto usando numpy e matplotlib (dato che ho familiarità con Python). Tuttavia, continuo a trovare molti codici MATLAB, quindi vorrei poter imparare dagli script MATLAB disponibili, ecc. (Senza dover sborsare il canone). Inoltre è sempre bello avere la programmazione MATLAB come una piuma in più nel mio cappello - ecco perché stavo pensando di imparare MATLAB tramite la backdoor (usando Octave).
Homunculus Reticulli,

+1 per Python qui, è anche un vero linguaggio di programmazione :) Anche se dovrei dire che ho iniziato imparando MATLAB.
boyfarrell

Octave è un clone di Matlab con licenza gratuita. La sua sintassi del linguaggio è quasi completamente compatibile. Python risolve un problema molto diverso rispetto a Matlab e Octave. La sua sintassi è molto più complicata e dettagliata perché il linguaggio è più versatile. Per la prototipazione di sistemi lineari dovresti usare Matlab o Octave, quindi per implementare software pronto per la produzione dovresti migrare su Python / Java. Prima di passare da Matlab a Python o R, dovresti capire in cosa ti stai cacciando.
FistOfFury

@FistOfFury Uso Python3 puro per sistemi lineari. Per i software pronti per la produzione di solito si utilizza C / Fortran o incorporato.
Percusse

17

GNU Octave è "per lo più compatibile con Matlab", alcune sottigliezze significano che non tutti gli script sono portabili da MATLAB a Octave.

Vale la pena leggere la documentazione per la lingua e / o le note di compatibilità nelle FAQ o nei wiki . Ci sono anche note di porting .

Esistono pacchetti simili alle cassette degli strumenti MATLAB, ma dovrai verificarli per capire quanto siano simili. Inoltre ci sono tentativi di script di conversione che si occupano delle differenze tra le due lingue, ma per quanto ne so nessuno è perfetto.



9

Per l'apprendimento generale della programmazione in linguaggio M e il funzionamento di MATLAB, sì, Octave va bene. Se hai bisogno di una particolare cassetta degli attrezzi come parte del tuo lavoro, però, e nessuno ha implementato una versione gratuita di esso, allora sei sfortunato.

Un'edizione studentesca di MATLAB non è poi così costosa. Se sei in un'università, è anche possibile che abbiano una licenza del sito. Dovresti esaminare entrambe le possibilità.


7

Ho usato Octave e MATLAB in modo intercambiabile sugli stessi pezzi di codice in passato; Non ho avuto problemi con la compatibilità. Le differenze principali per quanto ne so sono:

  1. MATLAB può essere compilato in byte ed è leggermente più veloce.
  2. Octave può utilizzare uno #o %per i commenti, utilizza solo Matlab%
  3. Octave produce trame molto migliori.

1
Sarei interessato a sentire, in che senso Octave produce trame molto migliori (non che mi piacciano particolarmente le trame MATLAB ...).
Dirk,

Octave utilizza gnuplot come backend. Potrebbe essere solo che mi piaccia di più lo gnuplot. L'unica cosa specifica a cui riesco a pensare è che non devo fare nulla di speciale per ottenere l'antialias; è abilitato automaticamente.
Dan

1
La mia esperienza con la trama di Octave è stata mista e, dopo aver appreso una cosa o due con MATLAB, la qualità della grafica che ne ricavo è ora molto buona. Forse hai degli esempi in cui Octave supera Matab per questo? Quindi, compilato in byte? Stai parlando del programmatore MATLAB? Non puoi semplicemente inserire codice MATLAB arbitrario in quello strumento, e se ricordo che è anche uno strumento piuttosto costoso, certamente non disponibile in una versione con licenza per studente.
Reid.Atcheson,

Spiacenti, capisco cosa intendi per la compilation. Colpa mia.
Reid.Atcheson,

Mi dispiace ma cosa significa Matlab può essere compilato in byte?
user17915,


5

Per quanto riguarda la tua domanda:
direi di sì. Semplicemente perché i paradigmi e i principi sono gli stessi. Le differenze nella sintassi sono trascurabili e possono essere riassunte in un cheat sheet (nel caso in cui un giorno lavori principalmente con MATLAB).


Un altro suggerimento per un'alternativa:
come alternativa a MATLAB sto usando SciLab . È gratuito come Octave, ha una community decente che fornisce aiuto e supporto e la sua documentazione è abbastanza buona. La documentazione integrata e l'aiuto per le funzioni sono simili a quelli di MATLAB. (Quello che mi piace di più è la possibilità di eseguire gli esempi con un clic). La sintassi è simile anche a MATLAB.

Per quanto riguarda le somiglianze e le differenze tra SciLab e MATLAB, questo documento potrebbe interessarti: un'introduzione a Scilab dal punto di vista dell'utente di Matlab, Eike Rietsch, maggio 2010 (PDF) .

Un altro vantaggio per SciLab rispetto a MATLAB: l'avvio e la GUI sono molto più veloci. Non ho ancora provato Octave.


1
Non sono un fan di Scilab, la mia prima impressione è stata che c'erano molte piccole differenze nella sintassi e nelle funzioni di base (rispetto a Matlab), ma nessuna delle meraviglie che Python deve compensare per l'incompatibilità.
martedì

Hm ... secondo il tuo commento e la risposta di David Ketcheson sembra davvero che valga la pena provare Python.
Torbjörn,

5

Esempio pratico:

Uso MATLAB al lavoro e ho frequentato il corso di apprendimento automatico online di Stanford lo scorso semestre.

Ho fatto tutti i compiti in ottava.

Ho notato solo 2 differenze (stavo solo usando le funzionalità di base):

  • Octave è un po 'più flessibile su quali tipi di espressioni possono essere indicizzate. Quindi, se ne approfitti, il tuo codice non sarà portatile.
  • Nella mia installazione i grafici pcolor () e image () non funzionano per array di dimensioni ragionevoli, come 1000x1000, quelli piccoli, come 50x50, funzionano bene.

5

Ci sono alcune sottili differenze nell'interpretazione di Octave del linguaggio di programmazione di MATLAB. Octave usa " endif" e " endwhile" rispettivamente per chiudere ife le whileistruzioni. Octave consente inoltre di dichiarare funzioni sulla riga di comando. Dovrebbe, comunque, analizzare tutto ciò che MATLAB analizza anche, quindi se ti attieni al linguaggio di programmazione MATLAB, dovresti andare bene.

Essere consapevoli del fatto che la più grande differenza tra i due programmi è nelle funzioni integrate che svolgono la maggior parte del sollevamento numerico, ad esempio " quad", " ode15s" e simili. Tutte queste funzioni dovrebbero tuttavia essere ben documentate quando si utilizza il helpcomando " ". Ci sono anche mailing list per Octave se hai domande più specifiche che non sono coperte dalla guida in linea.


3
Octave è più che felice di accettare "end" per la fine di entrambi i cicli while e if state.
Bill Barth,

4

Sì, assolutamente puoi, l'ho fatto. Gran parte della potenza di MATLAB viene tuttavia fornita con alcuni dei suoi toolbox e builtin estremamente facili da usare che possono avere o meno equivalenti in Octave.

Inoltre, tieni presente che mentre le lingue di base sono compatibili (ad eccezione delle nuove funzionalità OO in MATLAB), Octave ha alcune "aggiunte" alla sintassi, come essere in grado di usare "! =" Per NEQ, e ha anche alcune comportamenti predefiniti alternativi come il modo in cui analizza le funzioni incorporate. Queste sono cose minori che impediranno l'esecuzione del codice Octave in MATLAB, a meno che tu non ti sia preso cura di evitare di fare affidamento su quel comportamento.

Inoltre MATLAB è un ambiente di elaborazione completo e non solo un linguaggio che si interfaccia con routine di algebra lineare ottimizzate. Quindi quello che impari da Octave andrà solo così lontano. Sarai funzionale in MATLAB se sei abile con Octave, ma non sarai produttivo con MATLAB come potresti essere.


2

Il miglior linguaggio gratuito che ha una sintassi simile a MATLAB è Julia. È anche più veloce e ha un sistema di pacchetti più ampio (tra gli altri motivi per cui è meglio ...), ma la sintassi dell'algebra lineare è quasi esattamente la stessa (molti algoritmi che puoi tradurre in MATLAB cambiando A[i]per indicizzare A(i)). Credo che sia la lingua migliore da imparare in questo momento, e "conoscerai accidentalmente MATLAB" semplicemente usandolo.


0

Sì, puoi imparare Matlab usando Octave. Naturalmente ci sono alcune limitazioni.

Octave e Matlab condividono gran parte della loro sintassi. I due sono intercambiabili in questo senso. L'esperienza in Matlab è più ricca e intuitiva, in particolare quando si lavora con la grafica, sebbene Octave abbia una nuova interfaccia grafica (GUI) che è in beta. I due sistemi probabilmente convergeranno ulteriormente con il miglioramento dell'ambiente grafico per Octave.

Ci sono molti corsi gratuiti su Coursera che ti danno una licenza temporanea gratuita per studenti Matlab per la durata del corso. Cerca corsi di apprendimento automatico.

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.