J'entends souvent les gens se plaindre de la cherté MATLAB les licences sont. Je me demande alors pourquoi ils n'utilisent pas simplement Octave o R . Mais cette dernière est-elle correcte ? Pouvez-vous utiliser R pour remplacer MATLAB ?
Réponses
Trop de publicités?Pouvez-vous utiliser R pour remplacer MATLAB ?
Oui.
J'ai utilisé MATLAB pendant des années, mais je suis passé principalement à R au cours des trois dernières années. À ce stade, ils ont beaucoup plus en commun que le contraire. Cela dépend en partie de votre domaine et de votre cas d'utilisation. Et comme Spencer Graves a dit précédemment Cela dépend aussi de "l'église que vous fréquentez". Il est préférable que vous regardiez les Boîte à outils MATLAB vs. CRAN pour une tâche spécifique avant de vous décider.
Une question similaire demandé sur R-Help il y a quelques années y à nouveau plus récemment . David Hiebeler (à l'Université du Maine) maintient une vaste base de données de Comparaison R/MATLAB et constitue la meilleure référence en la matière. Vous pouvez également consulter cette comparaison des fonctions de base .
Voici quelques-unes des choses que j'ai observées dans le passé, mais qui ne doivent pas être des obstacles.
- En général, MATLAB offre un meilleur environnement de programmation (par exemple, une meilleure documentation, de meilleurs débogueurs, un meilleur navigateur d'objets) et est plus "facile" à utiliser (vous pouvez utiliser MATLAB sans faire de programmation si vous le souhaitez). Simulink vous permet de programmer visuellement en reliant des blocs dans des graphiques. REvolution R s'attaque à certaines de ces différences en fournissant un meilleur IDE avec un débogage amélioré, mais il est toujours un pas en arrière.
- MATLAB est un peu plus rapide avec la configuration normale ( voir ce benchmark pour un exemple ), bien que certaines mesures puissent être prises pour améliorer les performances de R si cela devient un problème.
- Étant donné qu'il s'agit d'un logiciel commercial, on peut dire qu'il offre davantage de "produits" (dans le sens de modules complémentaires intégrés) et d'assistance (mais il faut payer pour cela). Voir le liste des produits . Par exemple, on y trouve des choses comme le compilateur MATLAB qui crée des programmes MATLAB exécutables qui peuvent être déployés.
- En ce qui concerne les paquets/outils, MATLAB est beaucoup plus adapté aux sciences physiques tandis que R est plus fort pour les statistiques, ce qui ne veut pas dire que l'autre ne peut pas effectuer ces tâches. Et ils peuvent tous deux être facilement étendus.
Ainsi, si la facilité d'utilisation n'est pas une préoccupation majeure (et qu'il n'y a pas d'autre raison commerciale d'éviter d'utiliser un outil open-source), je pense qu'il y a de bonnes raisons d'utiliser R. Il est entouré d'une communauté très forte (les listes de diffusion R sont incroyables), il se développe rapidement (voir CRAN) et il est gratuit (ce qui n'est pas une mince affaire !).
Editar: Je voudrais juste ajouter un point supplémentaire à cela : le livre "Analyse des données fonctionnelles avec R et MATLAB" comprend un chapitre sur les "Comparaisons essentielles des langages Matlab et R". Ce chapitre couvre certaines différences syntaxiques importantes (telles que l'interprétation d'un point ou la signification des crochets []). Le livre lui-même vaut la peine d'être lu par toute personne intéressée par la programmation fonctionnelle (dans l'un ou l'autre langage).
R est un environnement d'analyse de données statistiques et de graphiques. MATLAB trouve ses origines dans le calcul numérique. Les implémentations de base du langage ont de nombreuses caractéristiques en commun si vous les utilisez pour la manipulation de données (par exemple, les opérations sur les matrices/vecteurs).
R dispose de fonctionnalités statistiques difficiles à trouver ailleurs (>2000 Paquets sur CRAN ), et beaucoup de statisticiens l'utilisent. D'autre part, MATLAB dispose de nombreuses boîtes à outils (onéreuses) pour des applications d'ingénierie telles que
- le traitement et l'acquisition d'images,
- la conception du filtre,
- logique floue/contrôle flou,
- les équations différentielles partielles,
- etc.
J'ai utilisé à la fois R et MATLAB pour résoudre des problèmes et construire des modèles liés à l'ingénierie environnementale et il y a beaucoup de chevauchement entre les deux systèmes. À mon avis, les avantages de MATLAB résident dans les applications spécialisées spécifiques à un domaine. En voici quelques exemples :
-
Des fonctions telles que streamline qui facilitent les enquêtes sur la dynamique des fluides.
-
Des boîtes à outils telles que la boîte à outils de traitement de l'image. Je n'ai pas trouvé de paquetage R qui fournisse une implémentation équivalente d'outils tels que l'algorithme de la ligne de partage des eaux.
À mon avis, MATLAB offre de bien meilleures capacités graphiques interactives. Cependant, je pense que R produit de meilleurs graphiques statiques de qualité d'impression, selon l'application. La boîte à outils de mathématiques symboliques de MATLAB est également mieux intégrée et plus performante que les équivalents R tels que Ryacas ou rSymPy. L'existence du compilateur MATLAB permet également aux systèmes basés sur le code MATLAB d'être déployés indépendamment de l'environnement MATLAB - bien que sa disponibilité dépende de l'argent que vous avez à dépenser.
Un autre point à noter est que le débogueur MATLAB est l'un des meilleurs avec lesquels j'ai travaillé.
Le principal avantage que je vois dans R est l'ouverture du système et la facilité avec laquelle il peut être étendu. Cela a donné lieu à une incroyable diversité de paquets sur CRAN. Je sais que Mathworks maintient également un référentiel de boîtes à outils contribuées par les utilisateurs, mais je ne peux pas faire une comparaison juste car je ne l'ai pas beaucoup utilisé.
L'ouverture de R s'étend également à la liaison du code compilé. Il y a quelque temps, j'avais un modèle écrit en Fortran et j'essayais de décider entre l'utilisation de R ou de MATLAB comme interface pour aider à préparer les entrées et traiter les résultats. J'ai passé une heure à me renseigner sur l'interface MEX avec le code compilé. Lorsque j'ai découvert que je devais écrire et maintenir une routine Fortran distincte qui effectuait un jonglage complexe de pointeurs afin de gérer l'interface, j'ai mis MATLAB au placard.
L'interface R consiste à appeler .Fortran( [nom de la sous-routine], [liste d'arguments]) et est tout simplement plus rapide et plus propre.
L'un des grands avantages de MATLAB par rapport à R est la qualité de la documentation MATLAB. R, étant open source, souffre à cet égard, une caractéristique commune à de nombreux projets open source.
R est cependant un environnement et un langage très utiles. Il est largement utilisé dans la communauté de la bioinformatique et possède de nombreux paquets utiles dans ce domaine.
Une alternative à R est Octave ( http://www.gnu.org/software/octave/ ) qui est très similaire à MATLAB, il peut exécuter des scripts MATLAB.
D'après mon expérience, passer de MATLAB à Python est une transition plus facile - Python avec numpy/scipy est plus proche de MATLAB en termes de style et de fonctionnalités que R. Il existe également des clones directs de MATLAB en open source Octave y Scilab .
MATLAB peut certainement faire beaucoup de choses que R ne peut pas faire - dans mon domaine, MATLAB est beaucoup utilisé pour l'acquisition de données en temps réel - la plupart des fabricants de matériel informatique incluent des interfaces MATLAB. Bien que cela soit possible avec R, j'imagine que cela serait beaucoup plus compliqué. De même, Simulink fournit toute une série de fonctionnalités qui, à mon avis, manquent à R. Je suis sûr qu'il y en a d'autres, mais je ne suis pas très familier de R.