web-dev-qa-db-fra.com

Différences entre Octave et MATLAB?

Je suis un programmeur qui connaît Python, Ruby et un certain C qui essaie de décider s'il veut apprendre GNU Octave ou Matlab. Je sais qu'ils ont beaucoup en commun , mais je ne vois pas trop à quel point la syntaxe ou les structures de données sont similaires. 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 d'informatique 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 pour les sciences.

De plus, Matlab en vaut-il la peine? 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 pourrai trouver l'argent.

260
lswim

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

Si vous lisez attentivement la page wiki que vous fournissez, vous verrez souvent des phrases telles que "Octave prend en charge les deux, tandis que MATLAB exige le premier", etc. Cela montre que les développeurs d'Octave essaient de créer une syntaxe Octave " supérieur " à MATLAB.

Cette attitude fait complètement perdre son sens à Octave. L'idée derrière Octave est (ou est devenu , devrais-je 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 ne correspond pas aux raisons pour lesquelles la plupart des gens l'utilisent. D'après mon expérience, exécuter des éléments développés dans MATLAB ne fonctionne jamais en une fois, à l'exception des éléments très simples et très courts - Pour toute fonction importante, je dois toujours traduire beaucoup d'éléments avant que cela ne fonctionne dans Octave, si ne pas ré-écrire à partir de zéro. Comment c'est meilleur , je ne vois vraiment pas ...

De plus, si vous apprenez Octave, beaucoup de syntaxes autorisées dans Octave ne le sont pas dans MATLAB. Signification - le code écrit dans Octave ne fonctionne souvent pas dans MATLAB sans nombreuses conversions. Il n'est pas compatible non plus!

Je pourrais continuer: MathWorks a beaucoup de boîtes à outils pour MATLAB, il y a Simulink et ses produits connexes pour lesquels il n’ya vraiment pas d’équivalent dans Octave (oui, il faudrait payer pour tout ça. Mais souvent, votre employeur/école le fait de toute façon et bien, au moins existe ), conformité reconnue à plusieurs normes de l’industrie, outils de test, outils de validation, systèmes de gestion des exigences, génération de rapports, communauté plus large et base d'utilisateurs, 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 pour MATLAB. Souvent, ils le feront.
  • Si ce n'est pas le cas, et si vous pouvez rassembler l'argent, achetez MATLAB et apprenez à l'utiliser correctement. À long terme, c'est la meilleure décision.
  • Si vous ne pouvez vraiment pas obtenir l'argent, utilisez Octave, mais apprenez la syntaxe de MATLAB et restez à l'écart de la syntaxe réservée à Octave. (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, des tas de gens qui connaissent tous les détails complexes de MATLAB, et pas tellement d’Octave.

Si vous obtenez un nouvel emploi et que tous les membres de votre nouveau bureau parlent espagnol, il est assez risqué de demander à chacun de commencer à parler anglais à partir de ce moment-là, tout simplement parce que vous ne parle pas/comme l'espagnol. Pareil avec MATLAB et Octave.

NB - si tous les votants 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 lors du démarrage d'Octave), ce qui lui donne une erreur lorsque certaines syntaxes utilisant uniquement Octave sont utilisées.

229
Rody Oldenhuis

Un lien plus complet vers la liste des différences se trouve sur le FAQ d'Octave . En théorie, tout le code exécuté dans Matlab devrait l'être dans Octave et les développeurs 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 à l'abri de ceux-ci. Vous pouvez les signaler et quelqu'un essaiera de les réparer

Octave a aussi fonctionnalités supplémentaires , la plupart d’entre elles sont des syntaxes supplémentaires qui, à mon avis, rendent le code plus lisible et plus logique, en particulier si vous êtes habitué à d’autres langages de programmation.

Mais Octave ne se limite pas aux coûts monétaires. Octave est libre aussi dans le sens de liberté, c'est libre, mais je ne pense pas que ce soit l'endroit idéal pour parler de la liberté du logiciel.

Je ne traite les images que dans Octave et je trouve que le package d'images répond à mes besoins. Je ne sais pas, cependant, quel sera le vôtre. Donc, ma réponse à la question de savoir si le coût en vaut la peine est non, mais d'autres ne seront certainement pas d'accord.

75
carandraug

MATLAB est avant tout une offre commerciale. Par conséquent, tout dans MATLAB fonctionne quasiment 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’elles peuvent vous vendre et qui ajoute un grand nombre de fichiers .m supplémentaires spécifiques à un domaine. Ce n'est pas bon marché, mais cela fonctionne et le travail sera fait sans se plaindre.

Octave montre toujours ses racines open-source, informations-veut-être-libres. C'est gratuit, et cela vous rappellera que c'est gratuit à chaque occasion. Il est développé par des volontaires qui détestent Windows avec passion. Par conséquent, Octave fonctionne sous Windows à contrecœur. Il est assez surprenant qu’il existe autant de fonctionnalités MATLAB qu’elles existent.

Mais voici le hic. À chaque fois que vous essayez de faire quelque chose de plus trivial que de simple, Octave rompt soudainement de façon subtile et difficile à comprendre. Oops - le pilote de terminal a eu un débordement quelque part au fond de la couche OpenGL. Vous ne pouvez pas imprimer. Oops - les diagrammes de figures font des choses étranges avec leurs polices. Bonne chance pour comprendre pourquoi. Oops - Il existe une dépendance cachée entre Octave et un autre logiciel obscur, qui ne compile pas. Bonne chance pour savoir qui c'est.

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

Donc, au fond, la question de 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 et libres.

Et la question est:

Avez-vous plus d'argent que le temps?

20
johnwbyrd

Octave est fondamentalement une version open source de MATLAB. C'était écrit pour être juste ç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 comportera également une interface graphique, que j’ai testée dans la version unstable, et qui est fantastique. Octave est beaucoup plus complexe car il a été développé et mis à jour par un groupe de volontaires, où le développement de MATLAB est financé à hauteur de plusieurs millions de dollars par l'industrie. Je suis toujours étudiant et j'utilise une version étudiant de MATLAB, mais je pense passer à Octave une fois que la version stable avec l'interface graphique sera 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 incroyable et totalement gratuit, où Octave est totalement gratuit.

Je dirais que vous utilisez 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 existe probablement un million d'autres utilisations), SIMULINK est fantastique et vient avec MATLAB. Je ne pense pas qu'aucun autre approche à ce sujet, bien que Scilab soit apparemment une "bonne" alternative open source, je ne l'ai pas essayée.

Paix.

14
Jonny

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 exactement ce dont vous avez besoin pour le moment, optez pour Octave. Vous pouvez payer pour le Matlab quand vous en ressentez vraiment le besoin.

8
sachinr

Ce qui rend Matlab si populaire et si 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 aucune différence si vous travaillez avec Octave ou Matlab!

Le simple fait d’acheter Matlab sans boîte à outils (ce qui dépend essentiellement de votre majeure) n’est pas vraiment une dépense raisonnable!

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

7
user702846

Il n’ya pas grand-chose que j’aimerais ajouter à la réponse de Rody Oldenhuis. Je suis généralement d'accord avec la stratégie selon laquelle toutes les fonctions que j'écris doivent fonctionner sous Matlab.

Certaines 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 pas de connexion Internet et allait fonctionner 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 associés.

b) Octave prend en charge d’autres plates-formes, telles que Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - ce qui peut s'avérer utile.

4
Alexander Kemp

Les fonctions et les fermetures imbriquées sont maintenant prises en charge par de nombreuses langues, y compris MATLAB. JavaScript fait la promotion des fermetures en tant que principe de conception de premier ordre.

Malheureusement, Octave ne supporte pas les fermetures (fonctions imbriquées avec périmètre lexical).

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 sont incapables de bien faire les choses .

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

3
Wolfgang Kuehn

Octave et Matlab ont beaucoup de 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 vous recommande d’abord d’utiliser la version matlab student; après avoir appris des leçons élémentaires, utilisez gnu octave permentaly. Maintenant, gnu octave est fourni avec gui, mais c’est une version de développement maintenant. Il existe des interfaces graphiques pour gnu octave, comme guioctave, xoctave (non gratuit), DomainMath IDE, etc.

0
vinu k n