Est-il possible d'utiliser Octave pour apprendre la programmation MATLAB?

23

Je veux apprendre la programmation MATLAB afin de pouvoir effectuer des recherches / analyses par moi-même et aussi, afin de pouvoir étudier / modifier certains scripts MATLAB que j'ai trouvés en ligne, etc.

Cependant, le problème est que je ne peux pas me permettre MATLAB. GNU Octave, d'après ce que j'ai entendu, est tout à fait compatible avec MATLAB. Le défi avec Octave est cependant que la documentation est très clairsemée.

Donc MATLAB d'une part, est d'un coût prohibitif (-ve), mais a beaucoup de bonne documentation, des tutoriels et des scripts en ligne (+), tandis qu'Octave est gratuit (comme dans la bière), même si (c'est compréhensible) il manque une documentation complète, etc. .

Je pense télécharger et installer Octave, mais utiliser la documentation MATLAB (et les scripts) pour m'aider à démarrer. Je suis conscient qu'il existe des différences entre Octave et MATLAB - ce que j'essaie de déterminer, c'est si les différences sont suffisamment importantes pour contrecarrer mes efforts pour (effectivement) "apprendre MATLAB en utilisant Octave".

Tout commentaire constructif est le bienvenu.

Homunculus Reticulli
la source
3
Bienvenue, Homunculus. Nous avons moins de deux mois et n'avons pas encore beaucoup de tags. J'ai ajouté la balise d'octave pour vous.
David Ketcheson
une autre option, si votre objectif est de simplement utiliser un logiciel de calcul pour votre usage personnel est Mathematica. La version complète complète est disponible pour un usage personnel de moins de 300 $. Je ne sais pas si cela correspond à votre budget ou non. Mais pour ce que l'on obtient pour cela (même version que la version commerciale complète), ça vaut le coup je pense. Remarque: Si vous êtes étudiant, Matlab et Mathematica sont également disponibles pour les étudiants à peu près au même prix.
Nasser
1
En un mot, oui. Les différences entre les langues sont assez petites. La documentation de Matlab est disponible gratuitement sur Internet à partir de Mathworks.com (les fabricants de Matlab). La principale chose que vous manquerez est l'interface graphique de Matlab. Une bonne interface graphique pour Octave est difficile à trouver. La version de développement d'Octave possède une interface graphique mais est difficile à installer. J'ai installé QtOctave, que j'ai obtenu sur outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Cela fonctionne bien, sauf qu'il y a toujours un message d'erreur au démarrage, et je ne peux pas terminer un processus sans tuer complètement Octave. J'utilise Notepad ++ ...
Stefan Smith
... au lieu de l'éditeur de QtOctave, et cela semble mieux fonctionner. Une autre chose, les différences entre Octave et Matlab, telles qu'elles sont, sont largement documentées sur des sites Web gratuits.
Stefan Smith
Comme je n'ai pas assez de réputation pour commenter, je voudrais ajouter qu'une déclaration dans la réponse acceptée: "Bien sûr, il y a des fonctionnalités de MATLAB (en particulier dans les boîtes à outils, mais Octave n'en a pas)" est complètement faux. Octave a un riche ensemble de packages chez Octave-forge qui incluent toutes les fonctions de package de Matlab dont j'ai jamais eu besoin (je travaille dans le traitement et l'optimisation d'images pour les images médicales, et j'ai besoin de quelques boîtes à outils / packages). De plus, la réponse acceptée ne résout pas un problème majeur, à savoir qu'aucun code écrit par l'interrogateur ne sera utilisable par les laboratoires ou les particuliers
barnhillec

Réponses:

24

Avertissement: je m'énerve parfois lorsque quelqu'un essaie de me dire ce qu'il pense que je dois faire plutôt que de répondre à la question que j'ai posée. Mais je vais prendre un risque et vous proposer une alternative.

Je suggérerais de regarder les packages de calcul scientifique de Python: numpy , matplotlib et scipy . Ensemble, ils vous fournissent la plupart des fonctionnalités de base de MATLAB (dans certains cas, ils vous donnent plus que MATLAB). Ils sont gratuits et open source, et peuvent aujourd'hui avoir une base d'utilisateurs plus large qu'Octave. Une grande partie de l'infrastructure informatique scientifique de Python est prise en charge par Enthought Inc. , et je vous recommande d'installer leur distribution gratuite Enthought Python , qui comprend les trois packages que j'ai mentionnés et plus encore.

Bien sûr, il y a des fonctionnalités de MATLAB (en particulier dans les boîtes à outils, mais Octave n'en a pas) qui manquent à Python. Mais j'utilise Python en combinaison avec des langages de niveau inférieur pour la plupart de mon travail, et cela me permet de programmer dans un langage presque aussi pratique que MATLAB, d'interfacer avec une foule de paquets utiles que MATLAB n'a pas et d'exécuter le même code facile à lire sur un supercalculateur.

Edit : vous pouvez également essayer la distribution Anaconda Python de Continuum Analytics. Il existe une version gratuite qui comprend tous les packages ci-dessus et bien plus encore.

David Ketcheson
la source
7
Cela dépend si Homunculus veut apprendre MATLAB parce qu'ils ont spécifiquement besoin d'apprendre MATLAB (par exemple, pour un travail), ou s'ils veulent apprendre MATLAB pour faire du calcul scientifique, auquel cas Python peut être un meilleur choix compte tenu des contraintes financières.
Geoff Oxberry
3
@DavidKetcheson: J'utilise en fait numpy et matplotlib (car je connais Python). Cependant, je continue à traverser beaucoup de code MATLAB, donc je voudrais pouvoir apprendre des scripts MATLAB disponibles, etc. (sans avoir à débourser pour les frais de licence). De plus, il est toujours bon d'avoir la programmation MATLAB comme une plume supplémentaire dans ma casquette - c'est pourquoi je pensais apprendre MATLAB via la porte dérobée (en utilisant Octave).
Homunculus Reticulli
+1 pour Python ici, c'est aussi un vrai langage de programmation :) Même si je dois dire que j'ai commencé par apprendre MATLAB.
Boyfarrell
Octave est un clone Matlab avec licence gratuite. Sa syntaxe de langage est presque entièrement compatible. Python résout un problème très différent de Matlab et Octave. Sa syntaxe est beaucoup plus compliquée et verbeuse car le langage est plus polyvalent. Pour le prototypage de systèmes linéaires, vous utiliseriez Matlab ou Octave, puis pour implémenter un logiciel prêt pour la production, vous migriez vers python / Java. Avant de passer de Matlab à Python ou R, vous devez comprendre dans quoi vous vous embarquez.
FistOfFury
@FistOfFury J'utilise du Python3 pur pour les systèmes linéaires. Pour les logiciels prêts pour la production, vous optez généralement pour C / Fortran ou intégré.
percusse
17

GNU Octave est "principalement compatible avec Matlab", certaines subtilités signifient que tous les scripts ne sont pas portables de MATLAB à Octave.

Il vaut la peine de lire la documentation pour la langue et / ou les notes de compatibilité dans la FAQ ou sur les wikibooks . Il y a aussi des notes de portage .

Des packages similaires aux boîtes à outils MATLAB existent, mais vous devrez les vérifier pour savoir à quel point ils sont similaires. Il existe également des tentatives de conversion de scripts qui prennent en charge les différences entre les deux langues, mais à ma connaissance, aucune n'est parfaite.

Gareth A. Lloyd
la source
12

Oui, vous pouvez apprendre MATLAB via Octave. Mais la syntaxe Octave est moins restrictive et plus conforme aux langages de script modernes. MATLAB semble en retard à cet égard. Voir ce lien wiki Programmation MATLAB / Différences entre Octave et MATLAB

Une autre différence majeure pour moi était la disponibilité de certaines bibliothèques pour MATLAB mais pas pour Octave.

File d'attente des apprentis
la source
9

Pour apprendre généralement la programmation en langage M et le fonctionnement de MATLAB, oui, Octave est très bien. Si vous avez besoin d'une boîte à outils particulière dans le cadre de votre travail et que personne n'en a implémenté une version gratuite, alors vous n'avez pas de chance.

Une édition étudiante de MATLAB n'est pas si chère. Si vous êtes dans une université, il est même possible qu'ils aient une licence de site. Vous devriez examiner les deux possibilités.

Bill Barth
la source
7

J'ai utilisé Octave et MATLAB de manière interchangeable sur les mêmes morceaux de code dans le passé; Je n'ai eu aucun problème de compatibilité. Pour autant que je sache, les principales différences sont les suivantes:

  1. MATLAB peut être compilé en octets et est légèrement plus rapide.
  2. Octave peut utiliser soit #ou %pour des commentaires, Matlab utilise uniquement%
  3. Octave produit des parcelles bien meilleures.
Dan
la source
1
Je serais curieux de savoir à quel point Octave produit de bien meilleures parcelles (pas que j'aime particulièrement les parcelles MATLAB ...).
Dirk
Octave utilise gnuplot comme backend. C'est peut-être juste que j'aime plus le gnuplot. La seule chose spécifique à laquelle je peux penser est que je n'ai rien à faire de spécial pour obtenir l'anticrénelage; il est automatiquement activé.
Dan
1
Mon expérience avec le tracé d'Octave a été mitigée, et après avoir appris une chose ou deux avec MATLAB, la qualité des graphiques que j'en retire est maintenant très bonne. Peut-être avez-vous des exemples où Octave surpasse Matab pour cela? Aso, compilé en octets? Parlez-vous du codeur MATLAB? Vous ne pouvez pas simplement entrer du code MATLAB arbitraire dans cet outil, et si je me souviens bien que c'est aussi un outil assez cher, certainement pas disponible dans une version sous licence étudiante.
Reid.Atcheson
Oups, je vois ce que vous voulez dire pour la compilation. Ma faute.
Reid.Atcheson
Je suis désolé mais qu'est-ce que cela signifie par Matlab peut être compilé en octets?
user17915
6

C'est en effet possible, surtout si vous utilisez une interface graphique, comme GUIOctave . Un autre langage que vous pourriez trouver utile parce que de nombreux packages ont été écrits pour lui est R. Il existe également une interface graphique pour le langage R, appelée RStudio, et un document de traduction entre R et MatLab .

Jean-Victor Côté
la source
5

Concernant votre question:
je dirais que oui. Tout simplement parce que les paradigmes et les principes sont les mêmes. Les différences de syntaxe sont négligeables et peuvent être résumées dans une feuille de triche (au cas où vous travaillez principalement avec MATLAB un jour).


Une autre suggestion pour une alternative:
comme alternative à MATLAB, j'utilise SciLab . C'est gratuit comme Octave, a une communauté décente qui fournit de l'aide et du support et sa documentation est assez bonne. La documentation intégrée et l'aide pour les fonctions sont similaires à celles de MATLAB. (Ce que j'aime le plus, c'est la possibilité d'exécuter les exemples en un seul clic). La syntaxe est similaire à MATLAB également.

Concernant les similitudes et les différences entre SciLab et MATLAB, ce document pourrait vous intéresser: Une introduction à Scilab du point de vue d'un utilisateur de Matlab, Eike Rietsch, mai 2010 (PDF) .

Un autre avantage de SciLab sur MATLAB: le démarrage et l'interface graphique sont beaucoup plus rapides. Je n'ai pas encore essayé Octave.

Torbjörn
la source
1
Je ne suis pas un fan de Scilab, ma première impression était qu'il y avait beaucoup de petites différences dans la syntaxe et les fonctions de base (par rapport à Matlab), mais aucun des effets impressionnants que python doit compenser pour l'incompatibilité.
mdaoust
Hm ... selon votre commentaire et la réponse de David Ketcheson, il semble vraiment intéressant d'essayer Python.
Torbjörn
5

Exemple pratique:

J'utilise MATLAB au travail et j'ai suivi le cours gratuit de machine learning en ligne de Stanford le semestre dernier.

J'ai fait tous mes devoirs en octave.

Je n'ai remarqué que 2 différences (j'utilisais uniquement les fonctionnalités de base):

  • Octave est un peu plus flexible quant aux types d'expressions pouvant être indexées. Donc, si vous en profitez, votre code ne sera pas portable.
  • Dans mon installation, les tracés pcolor () et image () ne fonctionnent pas pour les tableaux de taille raisonnable, comme 1000x1000, les petits, comme 50x50, fonctionnent bien.
mdaoust
la source
5

Il y a quelques différences subtiles dans l'interprétation par Octave du langage de programmation MATLAB. Octave utilise respectivement " endif" et " endwhile" pour fermer ifet les whiledéclarations. Octave vous permet également de déclarer des fonctions sur la ligne de commande. Cependant, il devrait également analyser tout ce que MATLAB analyse, donc si vous vous en tenez au langage de programmation de MATLAB, cela devrait aller.

Sachez que les plus grandes différences entre les deux programmes résident dans les fonctions intégrées qui effectuent la plupart des opérations de levage numérique, par exemple " quad", " ode15s" et autres. Cependant, toutes ces fonctions doivent être bien documentées lors de l'utilisation de la helpcommande " ". Il existe également des listes de diffusion pour Octave si vous avez des questions plus spécifiques qui ne sont pas couvertes par l'aide en ligne.

Pedro
la source
3
Octave est plus qu'heureux d'accepter "end" pour la fin des boucles while et if statemtents.
Bill Barth
4

Oui, vous le pouvez absolument, je l'ai fait. Cependant, une grande partie de la puissance de MATLAB vient de certaines de ses boîtes à outils et fonctions intégrées extrêmement faciles à utiliser qui peuvent ou non avoir des équivalents dans Octave.

Sachez également que bien que les langues de base elles-mêmes soient compatibles (à l'exception des nouvelles fonctionnalités OO de MATLAB), Octave a quelques «ajouts» à la syntaxe, comme pouvoir utiliser «! =» Pour NEQ, et il en a aussi quelques-uns d'autres comportements par défaut, comme la façon dont il analyse les fonctions en ligne. Ce sont des choses mineures qui empêcheront le code Octave de s'exécuter dans MATLAB dès le départ, sauf si vous avez pris soin d'éviter de vous fier à ce comportement.

MATLAB est également un environnement informatique complet, et pas seulement un langage qui s'interface avec des routines d'algèbre linéaire optimisées. Donc, ce que vous apprendrez d'Octave n'ira que si loin. Vous serez fonctionnel dans MATLAB si vous maîtrisez Octave, mais vous ne serez pas aussi productif avec MATLAB que vous pourriez l'être.

Reid.Atcheson
la source
2

Le meilleur langage libre qui a une syntaxe semblable à MATLAB est Julia. Il est également plus rapide et dispose d'un système de package plus étendu (entre autres raisons pour lesquelles il est préférable ...), mais la syntaxe d'algèbre linéaire est presque exactement la même (de nombreux algorithmes que vous pouvez traduire en MATLAB en changeant A[i]pour l'indexation en A(i)). Je crois que c'est la meilleure langue à apprendre en ce moment, et vous "connaîtrez accidentellement MATLAB" simplement en l'utilisant.

Chris Rackauckas
la source
0

Oui, vous pouvez apprendre Matlab en utilisant Octave. Bien sûr, il y a quelques limitations.

Octave et Matlab partagent une grande partie de leur syntaxe. Les deux sont interchangeables à cet égard. L'expérience dans Matlab est plus riche et conviviale, en particulier lorsque vous travaillez avec des graphiques, bien qu'Octave dispose d'une nouvelle interface utilisateur graphique (GUI) en version bêta. Les deux systèmes convergeront probablement davantage à mesure que l'environnement graphique d'Octave s'améliore.

Il y a beaucoup de cours gratuits sur Coursera qui vous donnent une licence d'étudiant Matlab temporaire gratuite pour la durée du cours. Recherchez des cours d'apprentissage automatique.

FistOfFury
la source