Pourquoi / quand devrais-je préférer MATLAB à Octave?

dans notre opération shoestring, nous devons prototyper des algorithmes dans un langage de niveau supérieur avant de nous engager dans une implémentation en C sur du matériel embarqué.

JUSQU'à présent, nous avons utilisé MATLAB pour faire cela, mais les coûts de licence commencent à faire mal. On envisage de transférer notre code MATLAB à Octave.

y a-t-il une raison particulière et non pour faire ça? Allons-nous briser toute compatibilité, surtout si nous avons partenaires externes qui insistent pour utiliser MATLAB? Existe-il des pénalités nous pouvons nous attendre?

74
demandé sur lindelof 2010-08-21 00:59:00

11 réponses

en 2008 j'ai essayé de faire la même chose. J'ai rapidement remarqué les bouchons suivants:

Les boîtes à outils
  • ne sont pas aussi complètes ni aussi bien testées. En particulier la boîte à outils de traitement d'image sur laquelle mon travail s'appuyait fortement (le bouchon big show était que imtransform n'a pas été mis en œuvre).
  • le débogueur et le profileur Octave étaient primitifs comparés à ceux de Matlab.
  • si vous travaillez avec d'autres, il peut être très difficile de les faire changer.
  • si vous utilisez des boîtes à outils de tiers, vous êtes sur votre propre pour les faire fonctionner.
  • les tracés D'Octave ne sont pas de qualité de publication.

mais je dois dire que j'ai été généralement impressionné par la compatibilité D'Octave avec Matlab, si votre utilisation de Matlab est de base, vous pouvez avoir de la chance. Enfin c'était en 2008, en deux ans les choses peuvent changer beaucoup.

50
répondu carlosdc 2015-02-12 14:10:58

juste au-dessus de ma tête:

  1. il y a beaucoup de boîtes à outils Qu'Octave n'a pas, comme je l'ai découvert quand j'ai essayé de faire des devoirs dans un cours de Machine D'apprentissage il y a deux semestres.
  2. Octave a un débogueur bien inférieur. Il était presque impossible de travailler avec.
  3. Matlab est beaucoup plus rapide pour de nombreux types d'opérations.
  4. les parcelles de Matlab sont beaucoup plus belles.
  5. Octave ne dispose pas d'une interface graphique native. Il y a des interfaces graphiques pour Octave, mais elles sont inférieures à celles de Matlab.
23
répondu Nathan Fellman 2010-08-20 21:04:39

j'ai testé octave et R aussi.

en ce qui concerne l'octave: j'ai été très impressionné par la similarité de la syntaxe de l'octave. Cela ne m'a pas pris beaucoup de temps pour transporter mes scripts MATLAB à octave. Meanwihile j'ai un problème particulier sur l'impression des marqueurs conjointement avec errorbar qui a été fixé par Jarno Rajahalme à nabble et de changer le xtick taille de la police, qui contournement j'ai reçu une question de la réponse à nabble. Donc il y a encore des insectes qui avec un certain effort peut être surmonté. Si vous rencontrez des problèmes, vous pouvez essayer nabble mailing forum: help-octave@octave.org. Par ailleurs, mon équipe ne peut pas s'adapter (facile à utiliser) à MATLAB, donc nous utilisons toujours MATLAB. Puisque MATLAB est compilé sous gnuplot, une autre façon de corriger ses bogues est d'éditer le fichier gnuplot généré. Le meilleur IDE que j'ai trouvé à elle était QtOctave, que j'ai fait une courte revue dans "Remember Blog".

Concernant R: selon une recherche faite par SciViews, la performance de R est supérieure à MATLAB et octave. Je n'ai pas beaucoup d'expérience avec R. j'ai étudié le paquet de mclust pour écrire un chapitre de wikibook sur L'em Clustering en R. d'ailleurs, ils semblent avoir une communauté très active. Donc, vous pouvez trouver des paquets de tiers à des propositions, qui ne sont pas IMO ainsi normalisé. Le meilleur IDE que j'ai trouvé était statet plugin pour eclipse, JGR (Java GUI for R) et emacs. Malgré le coût de temps pour apprendre un nouveau langage de programmation, si je

14
répondu Emanuel Vianna 2017-04-19 16:27:30

Octave a plusieurs améliorations syntaxiques sur matlab, par exemple vous pouvez dire endif endfor et endfunction au lieu de juste end , ce qui rend le débogage beaucoup plus facile.

Octave vous permet également de générer dynamiquement des fonctions, et ont plusieurs fonctions définies dans les scripts et le fichier de fonction. Ce qui est bien mieux que l'approche un fichier une fonction de matlab.

enfin, octave a parcellfun et pararrayfun ce sont des outils de traitement en parallèle très puissants dont matlab est totalement dépourvue. Il y a un parfor à matlab, mais ce n'est pas la meilleure façon de le faire à mon avis.

inconvénients pour octave sont qu'ils sont légèrement en retard sur les boîtes à outils, mais si vous regardez, vous pouvez trouver des choses similaires. fsolve et lsode semblent un peu plus lents, mais plus robustes, en octave pour une raison quelconque. Aussi une grande déception pour certaines personnes a tendance à être le manque de lien symbolique et la boîte à outils DAQ, mais ce truc sera de toute façon exclusif.

Python / Numpy vaut certainement un tourbillon: c'est plus puissant mais leur syntaxe est orientée vers des morceaux de code plus complexes.

10
répondu user1240280 2012-11-17 12:33:45

Octave n'a pas guide , ce qui rend la construction des interfaces graphiques super facile. J'utilise régulièrement le guide pour faire des outils pour mes collègues qui n'utilisent pas MATLAB.

8
répondu Doresoom 2010-08-20 21:35:18

pour votre cas d'utilisation, octave peut être supérieur à MATLAB:

  • il a une syntaxe qui vous permettra de Ecrire un code légèrement plus proche de C. c'est à dire +=, -=, la fonction par défaut valeurs des paramètres, chaîne de caractères les littéraux, etc...

  • en supposant que vos puces sont plus lentes qu'un processeur de bureau, la vitesse sera probablement ne pas être un problème.

  • depuis son lancement bien plus rapide que matlab, il est plus pratique de intégrer dans les scripts shell pour tester.

  • pour le prototypage, le tracé est plus qu'adéquat; les gens sont juste habitués au style de MATLAB.

  • le manque relatif de boîtes à outils n'est pas une affaire puisqu'elles ne serait pas disponible sur votre plateforme cible de toute façon.

j'utilise les deux, et chaque fois que je change, je manque caractéristiques de l'autre.

7
répondu Andrew Wagner 2011-06-11 03:53:36

il y a un bon WikiBook sur MATLAB avec une liste des différences entre MATLAB et Octave .

d'après mon expérience, le noyau MATLAB est bien porté à L'Octave, mais les boîtes à outils ont des niveaux de compatibilité variables, donc votre décision dépend de ce que vous essayez de coder exactement.

certaines choses qui manque Octave, AFAIK, sont l'intégration étroite avec .NET code et le constructeur gui, guide (bien qu'Il ya beaucoup de autres outils de construction de GUI Qu'Octave peut utiliser).

en outre, comme d'autres l'ont souligné, une grande partie de ce que vous payez avec MATLAB est l'interface habile et les outils de débogage/profilage. Les codeurs expérimentés peuvent probablement se débrouiller avec les alternatives, mais les débutants peuvent avoir du mal.

5
répondu Richie Cotton 2010-08-23 16:12:34

il est intéressant de voir comment fonctionne l'alternative de source ouverte pour les statistiques mais pas pour l'analyse numérique. R (l'octave de la statistique) est aujourd'hui beaucoup plus populaire que le S-plus commercial (le matlab de la statistique). Les questions mentionnées comme raisons de ne pas s'écarter de matlab trouvé dans les autres réponses étaient également applicables à R. Mais tout le monde a commencé à contribuer et maintenant R est la norme, avec de meilleurs graphiques, de meilleurs paquets et pas plus de vendeur lock-in.

donc vous pouvez préférer octave à matlab aussi, si vous pouvez surmonter le dilemme des prisonniers.

4
répondu SiggyF 2010-08-20 23:07:10

notez Qu'Octave supporte les constructions de langage qui ne sont pas présentes dans Matlab (par exemple, les opérateurs d'incréments automatiques, les instructions do-untils, etc.). Cela rend parfois gênant le port code développé (par quelqu'un qui n'est pas familier avec les limites de Matlab) sur Octave à un environnement Matlab.

Il y en a d'autres des limites et des différences à l'Octave de la FAQ .

3
répondu jhfrontz 2011-06-04 19:58:33

vous devriez certainement préférer Matlab Octave si vous pouvez vous le permettre.

Je n'ai pas eu beaucoup d'expérience avec Octave, mais je m'attendrais à des problèmes si votre code utilise des boîtes à outils Matlab, parcelles de fantaisie, ou L'interface graphique Matlab.

Je m'attendais à ce que ce soit comme OpenOffice contre MS Office. Surtout compatible, mais assez différent pour vous donner mal à la tête.

2
répondu Dima 2010-08-20 21:04:45

j'ai porté avec succès quelques applications de régression linéaire et de programmation quadratique à Octave.

la régression linéaire (opérateur de barre oblique inversée) a fonctionné sans aucun ajustement. En cas de programmation quadratique j'ai dû passer de fmincon() à sqp() , donnant des résultats similaires.

encore, les boîtes à outils et GUI en Octave sont, en effet, moins mature (j'ai passé tellement de temps sur les trucs de base), bien qu'elle ait fait des progrès rapides au cours des deux dernières années.

0
répondu Ben 2016-10-20 14:09:44