web-dev-qa-db-fra.com

Que peut faire MATLAB que R ne peut pas faire?

J'entends souvent les gens se plaindre de la valeur des licences MATLAB . Alors je me demande pourquoi ils n'utilisent pas simplement Octave ou R . Mais ce dernier a-t-il raison? Pouvez-vous utiliser R pour remplacer MATLAB?

137
Frank

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 3 dernières années. À ce stade, ils ont beaucoup plus en commun que pas. 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 également de "l'église que vous fréquentez". Il est préférable de consulter le Kit de développement MATLAB vs. CRAN pour une tâche spécifique avant de prendre votre décision.

Une question similaire posée sur R-Help il y a quelques années et encore plus récemment . David Hiebeler (à l'Université du Maine) maintient un vaste Comparaison R/MATLAB , et est la meilleure référence sur le sujet. Vous pouvez également consulter cette comparaison des fonctions de base .

Voici quelques-unes des choses que j'ai observées dans le passé, dont aucune ne devrait être décisive.

  • Généralement, MATLAB a 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 connectant des blocs dans des graphiques. REvolution R corrige certaines de ces différences en fournissant un meilleur IDE avec un débogage amélioré, mais cela reste un pas en arrière.
  • MATLAB est un peu plus rapide avec la configuration normale ( voir ce point de référence pour un exemple ), bien que certaines choses puissent être faites pour améliorer les performances de R si cela pose un problème.
  • Puisqu'il est commercial, il a sans doute plus de "produits" (au sens d'ajouts intégrés) et de support (mais vous payez pour cela). Voir le liste de produits . Par exemple, il a des choses comme le compilateur MATLAB qui crée des programmes MATLAB exécutables pouvant être déployés.
  • En ce qui concerne les packages/toolkits, MATLAB a beaucoup plus de soutien pour les sciences physiques alors que R est plus fort pour les statistiques, ce qui ne veut pas dire que les autres ne peuvent pas accomplir ces tâches. Et ils peuvent tous deux être facilement étendus.

Donc, si la facilité d’utilisation n’est pas une préoccupation majeure (et qu’il n’y ait aucune autre raison d’empêcher d’utiliser un outil open source), alors je pense qu’il ya de bons arguments à faire pour utiliser R. Il a une très une forte communauté autour de celle-ci (les listes de diffusion R sont étonnantes), se développe rapidement (voir CRAN) et est gratuite (ce qui n’est pas un mince problème !).

Modifier: Je voudrais juste ajouter un autre point à ceci: le livre "Analyse de données fonctionnelles avec R et MATLAB" comprend un chapitre sur "Les comparaisons essentielles des langages Matlab et R". Cela couvre certaines différences de syntaxe importantes (telles que l'interprétation d'un point ou la signification des crochets []). Le livre en lui-même vaut la peine d'être lu par quiconque s'intéresse à la programmation fonctionnelle (dans les deux langues).

128
Shane

R est un environnement d'analyse statistique de données et de graphiques. Les origines de MATLAB sont dans le calcul numérique. Les implémentations de langage de base ont de nombreuses fonctionnalités en commun si vous les utilisez pour la manipulation de données (opérations matricielles/vectorielles, par exemple).

R a des fonctionnalités statistiques difficiles à trouver ailleurs (> 2000 packages sur CRAN ), et de nombreux statisticiens l’utilisent. D'autre part, MATLAB a beaucoup de boîtes à outils (coûteuses) pour des applications d'ingénierie comme

  • traitement d'image/acquisition d'image,
  • conception du filtre,
  • logique floue/contrôle flou,
  • équations aux dérivées partielles,
  • etc.
32
rcs

J'ai utilisé à la fois R et MATLAB pour résoudre des problèmes et construire des modèles liés au génie de l'environnement, et les deux systèmes se chevauchent souvent. À mon avis, les avantages de MATLAB résident dans des applications spécialisées spécifiques à un domaine. Certains exemples sont:

  • Des fonctions telles que rationaliser qui aident dans les enquêtes sur la dynamique des fluides.

  • Boîtes à outils telles que le jeu d'outils de traitement d'images. Je n'ai pas trouvé de package R fournissant une implémentation équivalente d'outils tels que l'algorithme Watershed.

À mon avis, MATLAB offre de bien meilleures capacités graphiques interactives. Cependant, je pense que R produit de meilleurs graphiques de qualité d'impression statique, en fonction de 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 du code MATLAB d'être déployés indépendamment de l'environnement MATLAB - bien que sa disponibilité dépende du montant que vous devez dépenser.

Une autre chose que je devrais noter est que le débogueur MATLAB est l'un des meilleurs avec lesquels j'ai travaillé.

Le principal avantage que je vois avec R est l’ouverture du système et la facilité avec laquelle il peut être étendu. Cela a entraîné une incroyable diversité de forfaits sur CRAN. Je sais que Mathworks gère également un référentiel de boîtes à outils fournies par les utilisateurs et je ne peux pas faire de comparaison équitable car je ne l'ai pas beaucoup utilisé.

L’ouverture de R s’étend également aux liens dans le code compilé. Il y a quelque temps, j'avais un modèle écrit en Fortran et j'essayais de décider entre utiliser R ou MATLAB comme interface frontale pour aider à préparer les entrées et traiter les résultats. J'ai passé une heure à lire sur l'interface MEX pour compiler du code. Quand j'ai découvert que je devais écrire et maintenir une routine Fortran distincte qui consistait à jongler avec un pointeur complexe afin de gérer l'interface, j'ai mis MATLAB en suspens.

L’interface R consiste à appeler .Fortran ([nom du sous-programme], [liste des arguments]) et est tout simplement plus rapide et plus propre.

26
Sharpie

Un gros avantage de MATLAB par rapport à R est la qualité de la documentation MATLAB. R, étant open source, souffre à cet égard d’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é bioinformatique et possède de nombreux packages 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.

22
John

Dans 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 MATLAB directs open source Octave et Scilab .

MATLAB peut faire beaucoup de choses que R ne peut pas. Dans mon domaine, MATLAB est très utilisé pour l’acquisition de données en temps réel. La plupart des fabricants de matériel incluent des interfaces MATLAB. Bien que cela soit possible avec R, j'imagine que ce serait beaucoup plus complexe. Simulink fournit également tout un domaine de fonctionnalités qui, à mon avis, fait défaut à R. Je suis sûr qu'il y en a d'autres, mais je ne connais pas très bien R.

21
robince

Réponse courte: non, bien sûr que non. Les ensembles de progiciels mathématiques se chevauchent, mais ils ont toujours des biais envers certains domaines problématiques. Ces biais déterminent fortement si vous souhaitez ou non utiliser l'un de ces packages.

Un exemple de ce que MATLAB peut faire sans que R ne puisse le faire est l’interface avec le matériel temps réel pour le traitement/l’acquisition et le contrôle du signal. Un modèle Simulink dans MATLAB peut être configuré pour s'exécuter en simulation sur votre machine avant de compiler le code à exécuter sur un système réel en prenant les données mesurées en entrée et en calculant les sorties appropriées (ce qui était avant une simulation système de contrôle est maintenant pleinement opérationnel). Avec la carte matérielle appropriée installée sur votre machine, vous pouvez exécuter des systèmes de contrôle en temps réel via un PC.

R, en revanche, semble fermement ancré dans le rôle de la statistique, où je suis sûr que cela surpasse ce que MATLAB peut faire. De même, Mathematica est meilleur que MATLAB en mathématiques symboliques; Python est meilleur que MATLAB en programmation générale; gnuplot est meilleur que tous pour créer des graphes (euh, je suppose); etc.

11
Will Robertson

Je suis d'accord avec beaucoup des réponses données ci-dessus. Étant donné que la réponse est spécifique au diffset de capacités MATLAB et R, je vais en mentionner un très important: MATLAB inclut une machine virtuelle et offre une interopérabilité sans faille et robuste avec Java. L'ensemble du vaste univers de bibliothèques de Java est accessible à l'utilisateur MATLAB. MATLAB IDE peut presque être utilisé comme Eclipse d'un pauvre. En comparaison, rJava est très immature, malgré les efforts très précieux de son créateur (Roman Francois).

11
gappy

Nous ne pouvons pas parce que cela est attendu/requis par nos clients.

9
Nzbuu

Avec le paquetage sqldf, R est capable non seulement de statistiques, mais également de l’exploration de données sérieuse - en supposant qu’il y ait suffisamment de RAM sur votre machine.

Et avec le paquet RServe, R devient un serveur TCP/IP standard; vous pouvez donc appeler R en dehors de Java (ou tout autre langage si vous avez l'API). Il existe également un package dans R pour appeler Java out ou R.

5
Alex

En tant qu'utilisateur de MATLAB et de R, je pense que ce sont des applications très différentes. J'ai moi-même une formation en informatique, etc.

R rend très facile la visualisation et le calcul de toutes sortes de statistiques, mais je ne l’utiliserais pas pour implémenter quoi que ce soit lié au traitement du signal si cela dépendait de moi.

Pour résumer, si vous voulez faire des statistiques, utilisez R. Si vous voulez programmer, utilisez MATLAB ou un autre langage de programmation.

4
lhahne

La prise en charge des graphiques interactifs est bien meilleure dans matlab que dans R. Je déteste matlab en tant que langage, mais je suis jaloux lorsque je vois comment ses utilisateurs peuvent explorer les données avec les opérations de la souris, alors que je suis occupé à répéter des commandes avec de nouvelles valeurs pour xlim etc. Matlab gère également les tracés à panneaux multiples bien mieux que n’importe laquelle des méthodes R pour la tâche. Généralement, les graphiques R ont une sensation des années 1960. C'est bien pour la publication, mais pas la meilleure solution pour l'exploration interactive de données.

2
dank