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

Je suis un programmeur qui connaît Python, Ruby et un certain C qui essaie de décider s'il faut apprendre GNU Octave ou Matlab. Je sais qu'ils ont beaucoup en commun, mais il n'est pas clair pour moi la façon dont 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 la langue entière?

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

De plus, Matlab 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.

234
demandé sur HaveNoDisplayName 2012-08-23 07:13:47

9 réponses

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 comme "Octave supporte les deux, tandis que MATLAB nécessite le PREMIER", etc. Cela montre que les développeurs D'Octave essaient de rendre la syntaxe D'Octave "supérieure" à celle de MATLAB.

Cette attitude fait Qu'Octave perd complètement son but. L'idée derrière Octave est (ou est devenu , je devrais dire, voir commentaires ci-dessous) pour 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, l'exécution de choses développées dans MATLAB ne fonctionne jamais en une seule fois, sauf pour les choses très simples et très courtes-pour toute fonction importante, je dois toujours traduire beaucoup de choses avant que cela ne fonctionne en Octave, sinon réécrire à partir de zéro. Comment c'est mieux , j'ai vraiment ne pas voir...

En outre, 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: MathWorks a beaucoup de boîtes à outils pour MATLAB, il y a Simulink et ses produits connexes pour lesquels il n'y a vraiment pas d'équivalent en Octave (oui, vous devrez payer pour tout cela. Mais souvent, vos l'employeur / l'école le fait de toute façon, et bien, au moins existe), 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é et une base d'utilisateurs beaucoup plus grandes,etc. etc. etc. MATLAB n'est qu'une petite partie de quelque chose de beaucoup plus grand. Octave est...juste Octave.

Donc, mon conseil:

  • découvrez si votre école va payer pour MATLAB. Souvent ils.
  • S'ils ne le font pas, et si vous pouvez gratter ensemble l'argent, acheter MATLAB et apprendre à l'utiliser correctement. Dans le 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 Octave uniquement.

Pourquoi ce dernier point? Parce que dans les sciences, il y a 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 de gens qui connaissent tous les détails sanglants complexes de MATLAB, et pas tellement de l'Octave.

Si vous obtenez un nouvel emploi, et tout le monde dans votre nouveau bureau parle espagnol, il est un peu arrogant d'exiger de tout le monde qu'ils commencent à parler Anglais à partir de là, simplement parce que Vous ne parlez pas/comme l'Espagnol. Même chose avec MATLAB et Octave.

NB -- si tous les downvoters pouvaient simplement laisser un commentaire avec leurs arguments et leurs raisons de ne pas être d'accord avec moi, ce serait génial:)

208
répondu Rody Oldenhuis 2018-04-27 05:30:43

Un lien plus complet vers la liste des différences se trouve sur la FAQ D'Octave . En théorie, tout le code qui s'exécute dans Matlab devrait s'exécuter 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 bugs, ni Octave ni Matlab (Oui, Matlab aussi) ne sont à l'abri d'eux. Vous pouvez les signaler et quelqu'un va essayer de les corriger

Octave a également Caractéristiques Supplémentaires , la plupart d'entre eux sont supplémentaires syntaxe qui à mon avis rend le code plus lisible et plus logique, surtout si vous êtes habitué à d'autres langages de programmation.

Mais il y a plus à Octave que le coût monétaire. Octave est libre aussi dans le sens de la liberté, c'est libre, mais je ne pense pas que ce soit l'endroit pour diatribe sur la liberté du logiciel.

Je fais le traitement d'image en Octave seulement et trouve que le paquet d'image convient à mes besoins. Je ne sais pas, cependant, ce qui sera le vôtre. Donc ma réponse à si ça vaut le coup le coût est non, mais certainement d'autres seront en désaccord.

71
répondu carandraug 2012-08-23 03:56:49

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 add-on qu'ils peuvent vous vendre qui ajoute beaucoup de domaines spécifiques supplémentaires .m fichiers pour vous. Ce n'est pas bon marché, mais cela fonctionne et cela fera le travail sans se plaindre.

Octave montre toujours son open-source, l'information veut être libre racines. C'est gratuit, et il 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 sur Windows à contrecœur. Il est assez surprenant que autant de fonctionnalités MATLAB existent comme ils le font.

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. Oops - le pilote de terminal avait un débordement quelque part au fond de la couche OpenGL. Vous ne pouvez pas imprimer. Oops - les graphiques de figure font des choses étranges avec leurs polices. Bonne chance pour comprendre pourquoi. Oops - il y a une dépendance cachée entre Octave et un autre peu obscur de logiciel libre, donc il ne compilera pas. Bonne chance à comprendre qui il est.

Et la réponse D'Octave est hey! C'est un 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 infinis sur les mains, je pourrais passer tout mon temps à corriger des bugs dans le logiciel libre, mais Personnellement, non. si je travaillais dans les universités, je 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, lors du choix entre les variantes commerciales et les variantes de logiciels libres.

Et la question Est:

Avez-vous plus d'argent que de temps?

16
répondu johnwbyrd 2015-12-23 21:33:30

Octave est essentiellement une version open source de MATLAB. Il a été écrit pour être juste que. MATLAB a une très belle interface graphique 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 unstable, et qui a l'air fantastique. Octave est beaucoup plus bogué car il a été développé et maintenu 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 un étudiant version de MATLAB, mais je pense passer à Octave une fois que la version stable avec L'interface graphique est libérée.

MATLAB est probablement beaucoup plus puissant que Octave, et les algorithmes fonctionnent plus vite, mais pour la plupart des applications, Octave est plus que suffisant et est, à mon avis " Un outil étonnant qui est complètement libre, où Octave est complètement libre.

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

Enfin, il y a le problème de SIMULINK. Si vous voulez faire la simulation ou la conception du système 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'un autre se rapproche de cela, bien que Scilab soit apparemment une "bonne" alternative open source, Je ne l'ai pas essayé.

Paix.

12
répondu Jonny 2017-06-16 07:14:41

Je viens de commencer à utiliser Octave. Et j'ai vu des gens utiliser Matlab. Et une différence majeure comme mentionné ci-dessus est que 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, 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 que vous allez faire juste de base stuff ou vous n'êtes pas sûr de ce dont vous avez besoin en ce moment, alors optez pour Octave. Vous pouvez payer pour le Matlab quand vous ressentez vraiment le besoin.

8
répondu sachinr 2013-06-27 14:11:30

La chose rend Matlab si populaire et spécial est 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!

Juste aller et 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épart avec Octave, et suivre des tonnes de tutoriels sur Matlab sur internet.

7
répondu user702846 2017-06-16 07:14:16

Il n'y a pas grand-chose que je voudrais ajouter à la réponse de Rody Oldenhuis. Je suis généralement la stratégie que toutes les fonctions que j'écris devraient fonctionner dans 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 établissement ne prend pas en charge les licences locales. Je l'ai utilisé une fois dans une situation où le système que j'ai utilisé un script sur avait pas de connexion à internet et allait courir pour une très longtemps (dans un coin dans le 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 Raspberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - ce qui peut être utile.

4
répondu Alexander Kemp 2017-06-16 07:18:01

Les fonctions imbriquées et les fermetures sont maintenant prises en charge par de nombreux langages, y compris MATLAB. JavaScript favorise les fermetures en tant que principe de conception de première classe.

Malheureusement, Octave ne supporte pas 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 sont incapables de faire les choses.

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

3
répondu Wolfgang Kuehn 2013-12-20 10:49:56

Octave et matlab ont de nombreuses similitudes. Mais Octave est une interface de 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 les leçons de base, utilisez gnu octave permentaly. Gnu octave est livré avec une interface graphique, mais c'est une version de développement maintenant. Il existe une interface graphique pour gnu octave, comme guioctave, xoctave (non libre), DOMAINMATH IDE, etc.

0
répondu vinu k n 2013-04-30 05:15:49