La plupart des réponses ne pas obtenir le point.
Il y a UNE raison matlab est si bon et si largement utilisé:
EXTRÊMEMENT RAPIDE DE CODAGE
Je suis une vision par ordinateur étudiant au doctorat et ont été à l'aide de matlab pour 4 ans, avant mon doctorat, j'ai été en utilisant différents langages, dont C++, java, php, python... la Plupart des chercheurs en vision par ordinateur sont exclusivement à l'aide de matlab.
1) les Chercheurs ont besoin de prototypage rapide
Dans l'environnement de recherche, nous avons (je l'espère), souvent de nouvelles idées, et nous voulons tester vraiment rapide pour voir si il est bon de garder dans cette direction. Et le plus souvent, seule une petite sous-partie de ce que nous code sera utile.
Matlab est souvent plus lent à l'exécution, mais nous n'avons pas beaucoup de soins. Parce que nous ne savons pas à l'avance ce que la méthode va avoir du succès, il faut essayer beaucoup de choses, donc notre goulot de bouteille est temps de programmation, parce que notre code le plus souvent exécuter un peu de temps pour obtenir les résultats de publier, et c'est tout.
Donc nous allons voir comment matlab peut vous aider.
2) Tout ce dont j'ai besoin est déjà là
Matlab a vraiment beaucoup de fonctions dont j'ai besoin, de sorte que je n'ai pas à les réinventer tout le temps:
modifier l'index d'une matrice 2d de coordonnées: ind2sub
d'extrait de tous les correctifs de l'image: im2col
; calculer un histogramme d'une image: hist(Im(:))
; trouver les éléments dans une liste unique(list)
; ajouter un vecteur pour tous les vecteurs d'une matrice bsxfun(@plus,M,V)
; le produit de convolution sur n-dimensions des tableaux convn(A)
; calculer le temps de calcul d'une sous-partie du code: tic; %%code; toc
; interface graphique pour recadrer une image: imcrop(im)
;
La liste pourrait être très longue...
Et ils sont très faciles à trouver en utilisant l'aide.
Le plus proche c'est-à python...Mais C'est juste une douleur dans python, j'ai du aller sur google à chaque fois pour trouver le nom de la fonction dont j'ai besoin, et puis j'ai besoin d'ajouter des paquets et les paquets ne sont pas compatibles l'un avec l'autre, le format de la matrice de changement, le produit de convolution de la fonction de gérer uniquement des doubles mais ne pas faire une erreur quand je lui donne char, il suffit de donner une mauvaise sortie... non
3) IDE
Un exemple: je lance un script. Il se produit une erreur à cause d'une matrice. Je peux encore exécuter du code avec la ligne de commande. Je me visualiser en train de faire: imagesc(matrix)
. Je vois que la dernière ligne de la matrice est bizarre. J'ai corrigé le bug. Toutes les variables sont toujours ensemble. Je sélectionne le reste du code, appuyez sur la touche F9 pour exécuter la sélection, et tout ce qui se passe. Debuging devient rapidement, grâce à qui.
Matlab souligne certains de mes erreurs avant l'exécution. Donc, je peux voir rapidement les problèmes. Il propose un moyen de rendre mon code plus rapide.
Il s'agit d'un impressionnant profiler inclus dans l'IDE. KCahcegrind est une douleur à utiliser par rapport à ça.
python Ide sont awefull. python sans ipython n'est pas utilisable. Je n'arrive jamais à le débogage, à l'aide de ipython.
+auto-complétion, l'aide pour les arguments de la fonction,...
4) code Concis
Pour normaliser toutes les colonnes d'une matrice ( que j'ai besoin de tout le temps), je fais:
bsxfun(@times,A,1./sqrt(sum(A.^2)))
Pour supprimer à partir d'une matrice de toutes les colonnes avec une petite somme:
A(:,sum(A)<e)=[]
Pour faire le calcul sur le GPU:
gpuX = gpuarray(X);
%%% code normally and everything is done on GPU
Pour paralize mon code:
parfor n=1:100
%%% code normally and everything is multi-threaded
Quelle langue peut battre?
Et bien sûr, j'ai rarement besoin de faire des boucles, tout est inclus dans les fonctions, ce qui rend le code plus facile à lire, et pas de maux de tête avec index. Donc, je peux me concentrer sur ce que je veux, pas comment le programmer.
5) les outils de Traçage
Matlab est célèbre pour ses outils de dessins. Ils sont très utiles.
Python de traçage, des outils ont beaucoup moins de fonctionnalités. Mais il est une chose super gênant. Vous pouvez tracer des figures en une seule fois par script??? si j'ai le long de script je ne peut pas afficher la fourre à chaque étape ---> inutile.
6) la Documentation
Tout est très rapide d'accès, tout est clair, les noms de fonction sont bien choisis.
Avec python, j'ai toujours besoin de google trucs, regarde dans les forums ou stackoverflow.... temps complet de porc.
PS: Enfin, ce que je déteste avec matlab: son prix