Différences entre Octave et MATLAB? [fermé]

272

Je suis un programmeur qui connaît Python, Ruby et certains C qui essaie de décider s'il faut apprendre GNU Octave ou Matlab. Je sais qu'ils ont beaucoup en commun , mais je ne comprends pas à quel point la syntaxe est similaire ou même les structures de données. Tout le monde dit qu'ils sont "similaires", mais personne ne dit à quel point ils sont similaires. Le lien ci-dessus montre plusieurs exemples où ils sont syntaxiquement similaires ou identiques, est-ce vrai pour toute la langue?

J'essaie d'apprendre le langage en général pour faire plus de calcul scientifique, en utilisant éventuellement des bibliothèques d'analyse d'images. Je sais qu'il y a beaucoup d'autres langues dans lesquelles je pourrais programmer, mais mes conseillers disent que connaître MATLAB ou Octave est crucial dans les sciences.

De plus, Matlab en vaut-il le coût? Je n'ai pas beaucoup d'argent, mais s'il y a des différences importantes dans les bibliothèques ou ailleurs, je suis sûr que je pourrais trouver l'argent.

lswim
la source
8
Puisque vous êtes étudiant, cela vaut la peine de vérifier si votre école fournit du matlab aux étudiants gratuitement / à bas prix; mes écoles de premier cycle et de deuxième cycle le font, ce qui facilite un peu la décision d'aller avec matlab.
Dougal
23
Oui, mais quand il quittera l'université et ira dans un centre de recherche, il devra l'acheter et d'ici là ne connaîtra que Matlab et non les alternatives. Donc, à long terme, si vous voulez faire une carrière scientifique qui semble vouloir, vous ne devez pas l'ignorer. Sans oublier que ces licences ne peuvent généralement pas être utilisées pour les clusters non plus.
carandraug
2
Pendant que vous êtes étudiant, vous devriez pouvoir obtenir une licence matlab pour environ 100 dollars (USD). Accordé si vous voulez que certaines des autres boîtes à outils soient un supplément de 29 USD par boîte à outils. Donc, ne sachant pas quelles boîtes à outils vous pourriez vouloir / besoin, il est difficile de justifier le coût.
Ben A.
23
+1 Je viens de commencer à apprendre Octave aujourd'hui parce que j'étudie actuellement l'apprentissage automatique et l'enseignant a recommandé d'apprendre Octave (parce que c'est gratuit, parce que METLAB est cher, et parce que l'élève sera beaucoup plus productif pour que l'algorithme de la machine fonctionne) utiliser d'abord Octave ou METLAB d'abord, puis une fois que cela fonctionne, puis passer à Java ou C ++)
Anthony
7
Je vous conseille d'utiliser python + opencv
gukoff

Réponses:

235

Plutôt que de vous fournir une liste complète des différences, je vais vous donner mon avis sur la question.

Si vous lisez attentivement la page wiki que vous fournissez, vous verrez souvent des phrases comme "Octave prend en charge les deux, tandis que MATLAB requiert le premier" etc. Cela montre que les développeurs d'Octave essaient de rendre la syntaxe d'Octave "supérieure" à MATLAB.

Cette attitude fait complètement perdre son but à Octave. L'idée derrière Octave est (ou est devenue , je devrais dire, voir les commentaires ci-dessous) d'avoir une alternative open source pour exécuter m-code. S'il essaie d'être «meilleur», il essaie donc d'être différent , ce qui n'est pas conforme aux raisons pour lesquelles la plupart des gens l'utilisent. D'après mon expérience, exécuter des trucs développés dans MATLAB ne fonctionne jamais en une seule fois, à l'exception des trucs vraiment simples et très courts - Pour toute fonction importante, je dois toujours traduire beaucoup de choses avant de fonctionner dans Octave, si pas réécrire à partir de zéro. Comment c'est mieux , je ne vois vraiment pas ...

De plus, si vous apprenez Octave, il y a beaucoup de syntaxe autorisée dans Octave qui n'est pas autorisée dans MATLAB. Signification - le code écrit en Octave ne fonctionne souvent pas dans MATLAB sans de nombreuses conversions. Ce n'est pas non plus compatible dans l'autre sens!

Je pourrais continuer: The MathWorks a de nombreuses boîtes à outils pour MATLAB, il y a Simulink et ses produits associés pour lesquels il n'y a vraiment pas d'équivalent dans Octave (oui, vous auriez à payer pour tout cela. Mais souvent votre employeur / école le fait quand même) , et bien, cela existe au moins ), conformité prouvée avec plusieurs normes de l'industrie, outils de test, outils de validation, systèmes de gestion des exigences, génération de rapports, une communauté beaucoup plus large et une base d'utilisateurs, etc. etc. etc. MATLAB n'est qu'une petite partie de quelque chose de beaucoup plus grand. Octave est ... juste Octave.

Alors, mon conseil:

  • Découvrez si votre école paiera MATLAB. Souvent, ils le feront.
  • Si ce n'est pas le cas, et si vous pouvez récupérer l'argent, achetez MATLAB et apprenez à l'utiliser correctement. À long terme, c'est la meilleure décision.
  • Si vous ne pouvez vraiment pas obtenir d'argent, utilisez Octave, mais apprenez la syntaxe de MATLAB et éloignez-vous de la syntaxe octave uniquement. (voir la note)

Pourquoi ce dernier point? Parce que dans les sciences, il existe souvent de grandes bases de code entièrement écrites en MATLAB. Il y a des professeurs, des ingénieurs, des étudiants, des codeurs professionnels, beaucoup, beaucoup de gens qui connaissent tous les détails sanglants complexes de MATLAB, et pas tellement d'Octave.

Si vous obtenez un nouvel emploi et que tout le monde dans votre nouveau bureau parle espagnol, c'est un peu arrogant d'exiger de tout le monde qu'ils commencent à parler anglais à partir de là, tout simplement parce que vous ne parlez pas / aimez l'espagnol. Idem avec MATLAB et Octave.

NB - si tous les downvoters pouvaient simplement laisser un commentaire avec leurs arguments et les raisons de leur désaccord avec moi, ce serait génial :)

Remarque: Octave peut être exécuté en "mode traditionnel" (en incluant l'indicateur --traditional au démarrage d'Octave), ce qui lui donne une erreur lorsqu'une certaine syntaxe octave uniquement est utilisée.

Rody Oldenhuis
la source
25
Concernant le manque de JIT, il a déjà été implémenté sur la version de développement d'Octave. Je ne sais pas quand ça va sortir mais je l'ai construit et la différence est énorme pour le code en boucle. Et pour éviter la syntaxe Octave uniquement, il existe l'option --traditional d'Octave. Je ne dis pas que le code Matlab fonctionne toujours dans Octave mais cela s'améliore beaucoup avec chaque version et la compatibilité est l'une de leurs priorités (sans oublier que même les différentes versions de Matlab ont suffisamment d'incompatibilités entre elles).
carandraug
14
Et ce que vous appelez est de s'en tenir à une syntaxe supérieure ... si vous aviez la liberté de changer Matlab, d'ajouter une syntaxe supplémentaire ou différentes fonctions, n'est-ce pas? Ce sont des fonctionnalités que les utilisateurs ont implémentées et elles ne cassent pas la compatibilité. Plus souvent qu'autrement, de nouvelles choses sont rejetées pour cette raison. L'idée est que le langage Matlab est un sous-ensemble du langage Octave. Si vous pensez que l'idée est géniale, alors vous devriez vous joindre car c'est un projet communautaire, et a les fonctionnalités que la communauté se soucie de développer.
carandraug
19
@RodyOldenhuis ce n'est pas censé être un clone. Le développement d'Octave n'a pas commencé de cette façon, ça devenait de plus en plus poussé dans cette direction par les utilisateurs qui gardent la soumission des correctifs pour ce sciencedirect.com/science/article/pii/S0959152412000911~~V~~3rd
carandraug
9
Le fabricant d'un outil de programmation a-t-il JAMAIS été tenu pour responsable d'un bug?
Martin Beckett
6
@carandraug: ah au diable avec ça. La correction est plus importante que tout cela :)
Rody Oldenhuis
79

Un lien plus complet vers la liste des différences se trouve dans la FAQ d'Octave . En théorie, tout le code qui s'exécute dans Matlab devrait fonctionner dans Octave et les développeurs d'Octave traitent l'incompatibilité avec Matlab comme des bogues. Donc, la réponse à votre première question est oui en théorie. Bien sûr, tous les logiciels ont des bogues, ni Octave ni Matlab (oui, Matlab aussi) ne sont pas à l'abri d'eux. Vous pouvez les signaler et quelqu'un essaiera de les corriger

Octave a également des fonctionnalités supplémentaires , la plupart d'entre elles sont une syntaxe supplémentaire qui, à mon avis, rend le code plus lisible et plus logique, surtout si vous êtes habitué à d'autres langages de programmation.

Mais Octave ne se limite pas au coût monétaire. Octave est gratuit aussi dans le sens de la liberté, c'est libre, mais je ne pense pas que ce soit l'endroit idéal pour parler de la liberté des logiciels.

Je fais du traitement d'image uniquement dans Octave et je trouve que le package d'image convient à mes besoins. Je ne sais pas, cependant, quelle sera la vôtre. Donc, ma réponse à la question de savoir si cela vaut le coût est non, mais certainement d'autres ne seront pas d'accord.

carandraug
la source
23

MATLAB est avant tout une offre commerciale. Par conséquent, tout dans MATLAB fonctionne à peu près hors de la boîte. Toutes les fonctionnalités de base sont solides, et si vous travaillez sur un projet spécial, MATLAB a probablement un module complémentaire qu'ils peuvent vous vendre qui ajoute beaucoup de fichiers .m spécifiques au domaine supplémentaires pour vous. Ce n'est pas bon marché, mais cela fonctionne et il fera le travail sans se plaindre.

Octave montre toujours ses racines open-source, information-want-to-be-free. C'est gratuit, et cela vous rappellera que c'est gratuit à chaque occasion. Il est développé par des bénévoles qui détestent Windows avec passion. Par conséquent, Octave fonctionne à contrecœur. Il est assez surprenant qu’autant de fonctionnalités MATLAB existent.

Mais voici le hic. Chaque fois que vous essayez de faire quelque chose de plus que trivialement complexe, Octave se brise soudainement de manière subtile et difficile à comprendre. Oups - le pilote du terminal a eu un débordement quelque part profondément dans la couche OpenGL. Vous ne pouvez pas imprimer. Oups - les graphiques de figures font des choses étranges avec leurs polices. Bonne chance pour comprendre pourquoi. Oups - il y a une certaine dépendance cachée entre Octave et un autre morceau obscur de logiciel libre, donc il ne se compilera pas. Bonne chance pour savoir de quoi il s'agit.

Et la réponse d'Octave est hé! C'est un logiciel gratuit! Vous avez tout le code source, vous pouvez corriger vous-même tous ces bugs! Peut-être que si j'avais un temps et des ressources infinis entre les mains, je pourrais passer tout mon temps à corriger des bogues dans les logiciels libres, mais personnellement je n'en ai pas. Si je travaillais dans le milieu universitaire, je le pourrais.

Donc, au fond, la question de savoir s'il faut choisir MATLAB ou Octave se résume à une question. Fait intéressant, cette question est toujours la même lorsque vous choisissez entre des variantes de logiciels commerciaux ou gratuits.

Et la question est:

Avez-vous plus d'argent que de temps?

johnwbyrd
la source
2
Une autre question est: que font les entreprises dans lesquelles vous pourriez finir par travailler? Probablement Matlab pour les mêmes raisons.
user276648
14

Octave est essentiellement une version open source de MATLAB. C'était écrit juste pour ça. MATLAB a une interface graphique très agréable qui le rend un peu plus facile à utiliser, mais la prochaine version stable d'OCTAVE aura également une interface graphique, que j'ai testée dans la version instable, et qui a l'air fantastique. Octave est beaucoup plus buggé car il a été développé et entretenu par un groupe de bénévoles, où le développement de MATLAB est financé par des millions de dollars par l'industrie. Je suis toujours étudiant et j'utilise une version étudiante de MATLAB, mais je pense à passer à Octave une fois la version stable avec l'interface graphique publiée.

MATLAB est probablement beaucoup plus puissant qu'Octave, et les algorithmes fonctionnent plus rapidement, mais pour la plupart des applications, Octave est plus que suffisant et est, à mon avis 'un outil étonnant qui est complètement gratuit, où Octave est complètement gratuit.

Je dirais utiliser MATLAB pendant que vous pouvez utiliser la version académique, mais le passage à Octave devrait être transparent car ils utilisent exactement la même syntaxe.

Enfin, il y a le problème de SIMULINK. Si vous voulez faire de la simulation ou de la conception de systèmes de contrôle (il y a probablement un million d'autres utilisations) SIMULINK est fantastique et est livré avec MATLAB. Je ne pense pas qu'aucun autre ne s'en approche, bien que Scilab soit apparemment une «bonne» alternative open source, je ne l'ai pas essayée.

Paix.

Jonny
la source
"... parce qu'il a été développé et entretenu par un groupe de bénévoles, où le développement de MATLAB est financé par des millions de dollars par l'industrie." Le montant d'argent dans un projet n'est pas la cause de la qualité et sans bug. Ce n'est peut-être même pas une corrélation.
gagarine
"ils utilisent exactement la même syntaxe" Non, ils ne le font pas.
Cris Luengo
8

Je viens de commencer à utiliser Octave. Et j'ai vu des gens utiliser Matlab. Et une différence majeure comme mentionné ci-dessus est qu'Octave a une interface de ligne de commande et Matlab a une interface graphique. Selon moi, avoir une interface graphique est très bon pour le débogage. Dans Ocatve, vous devez exécuter des commandes pour voir quelle est la longueur d'une matrice, etc., mais dans Matlab, il montre bien tout en utilisant une bonne interface. Mais Octave est gratuit et bon pour les tâches de base que je fais. Si vous êtes sûr de ne faire que des choses de base ou si vous ne savez pas ce dont vous avez besoin en ce moment, optez pour Octave. Vous pouvez payer pour le Matlab lorsque vous en ressentez vraiment le besoin.

sachinr
la source
2
Octave a une interface graphique qui est actuellement en version bêta. Utilisez la commande --force-gui lors de l'exécution d'octave.
ig343
6
... et à partir d'Octave version 4, l'interface graphique est l'interface utilisateur par défaut.
Ruslan
7

Ce qui rend Matlab si populaire et spécial, ce sont ses excellentes boîtes à outils dans différentes disciplines. Puisque votre objectif principal est d'apprendre Matlab, il n'y a donc pas de différence du tout si vous travaillez avec Octave ou Matlab!

Aller acheter Matlab sans aucune boîte à outils cool (qui dépend essentiellement de votre majeur) n'est pas vraiment une dépense raisonnable!

Vous pouvez certainement avoir un bon début avec Octave et suivre des tonnes de tutoriels sur Matlab sur Internet.

user702846
la source
4

Il n'y a pas grand-chose que j'aimerais ajouter à la réponse de Rody Oldenhuis. J'ai l'habitude de suivre la stratégie que toutes les fonctions que j'écris doivent exécuter dans Matlab.

Quelques fonctions spécifiques que je teste sur les deux systèmes, pour les cas d'utilisation suivants:

a) octave n'a pas besoin d'un serveur de licences - par exemple si votre institution ne prend pas en charge les licences locales. Je l'ai utilisé une fois dans une situation où le système sur lequel j'avais utilisé un script n'avait aucune connexion à Internet et allait fonctionner pendant très longtemps (dans un coin du laboratoire) et utilisé par de nombreux utilisateurs différents. Remarque: il ne s'agit pas du coût de la licence, mais des problèmes techniques liés.

b) Octave prend en charge d'autres plates-formes, par exemple, le Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - qui peut être utile.

Alexander Kemp
la source
3

Les fonctions et fermetures imbriquées sont désormais prises en charge par de nombreux langages, y compris MATLAB. JavaScript promeut les fermetures comme principe de conception de première classe.

Malheureusement, Octave ne prend pas en charge les fermetures (fonctions imbriquées avec portée lexicale).

Selon http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html, on pourrait même avoir l'impression que les développeurs ne veulent pas ou ne peuvent pas faire les choses correctement.

Cela cassera beaucoup de code, dans les deux sens. Aucune solution de contournement.

Wolfgang Kuehn
la source
Je ne suis plus sûr que ce soit exact. Les fonctions imbriquées sont implémentées dans Octave, et je les ai trouvées plus polyvalentes que celles de Matlab: par exemple, pouvoir déclarer des fonctions (autres que lambdas) dans un script, ce qui n'était pas possible avec Matlab la dernière fois que je l'ai essayé.
MayeulC
@MayeulC La partie étant plus polyvalente coupe en fait dans les deux sens.
Wolfgang Kuehn
0

Octave et matlab ont de nombreuses similitudes. Mais Octave est une interface en ligne de commande. Vous devez taper chaque commande dans l'invite de commande, tandis que matlab est livré avec la meilleure interface graphique. Je recommande d'abord d'utiliser la version étudiante de matlab; après avoir appris les leçons de base, utilisez gnu octave permentaly. Maintenant, gnu octave est livré avec gui, mais c'est maintenant une version de développement. Il existe des interfaces utilisateur pour les octaves gnu, comme guioctave, xoctave (non gratuit), DomainMath IDE, etc.

vinu kn
la source
2
la version de développement d'octave (3.7.5 à venir) est livrée avec une interface graphique native, qui a l'air plutôt sympa!
kjetil b halvorsen