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.
Réponses:
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:
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 :)
la source
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.
la source
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?
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source
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.
la source