Que peut faire MATLAB que R ne peut pas faire? [fermé]

137

J'entends souvent des gens se plaindre du coût des licences MATLAB . Alors je me demande pourquoi ils ne se contentent pas utiliser Octave ou R . Mais ce dernier a-t-il raison? Pouvez-vous utiliser R pour remplacer MATLAB?

Franc
la source
13
au fait, il existe une autre alternative open source: Octave est principalement compatible Matlab
sellibitze
14
Techniquement, tout ce qui peut être fait dans une langue peut être fait dans n'importe quelle langue (du point de vue «que peut-il calculer»). C'est juste une question de facilité d'utilisation et de facilité d'apprentissage
BlueRaja - Danny Pflughoeft
20
+1: Matlab peut consommer mon budget logiciel. R n'a pas encore réussi à le faire.
Iterator
3
Pour corriger quelques autres affirmations: il n'est pas correct que l'on puisse réutiliser tout le code Matlab dans Octave ou FreeMat. Certaines classes de fonctions ne sont pas du tout bien implémentées dans les autres versions. J'ai de gros blocs de code que j'ai trouvé préférable de mettre en œuvre à nouveau dans des environnements qui ont des fonctionnalités à peu près similaires pour ces classes de fonctions. Parmi les fonctionnalités que Matlab possède et qu'Octave n'a pas, j'ai trouvé des substituts dans R, Python et, dans une certaine mesure, Java et C. La réimplémentation des bibliothèques est plus difficile que le code de base. Faites attention aux bibliothèques ...
Iterator
5
La clôture de cette question n'est pas justifiée. Cette question ne concerne pas le sondage, mais ce que vous pouvez faire exactement dans Matlab mais pas dans R. De telles choses peuvent facilement être énumérées et soutenues par des références.
Frank

Réponses:

128

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 l'a dit précédemment , cela dépend aussi de "l'église que vous fréquentez". Il est préférable de regarder la boîte à outils MATLAB et CRAN pour une tâche spécifique avant de vous décider.

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 une comparaison approfondie 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 un facteur décisif.

  • 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 résout certaines de ces différences en fournissant un meilleur IDE avec un débogage amélioré, mais il est toujours en retard.
  • MATLAB est un peu plus rapide avec la configuration normale ( voir ce benchmark pour un exemple ), bien qu'il y ait des choses qui peuvent être faites pour améliorer les performances de R si cela devient un problème.
  • Puisqu'il est commercial, il a aussi sans doute plus de "produits" (dans le sens de modules complémentaires intégrés) et de support (mais vous payez pour cela). Voir la liste des produits . Par exemple, il a 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 packages / toolkits, MATLAB a beaucoup plus de support pour les 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.

Donc, si la facilité d'utilisation n'est pas une préoccupation majeure (et il n'y a aucune autre raison commerciale d'éviter d'utiliser un outil open-source), alors je pense qu'il y a un vrai cas à faire pour utiliser R. Il a un très forte communauté autour de lui (les listes de diffusion R sont incroyables), se développe rapidement (voir CRAN), et c'est gratuit (ce qui n'est pas un petit problème!).

Edit: Je voudrais juste ajouter un autre point à ceci: le livre "Analyse fonctionnelle des données 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 lui-même vaut la peine d'être lu pour quiconque s'intéresse à la programmation fonctionnelle (dans les deux langues).

Shane
la source
5
Il y a une belle référence matlab / R qui montre comment effectuer des tâches équivalentes dans chacun ici: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire
4
"[MATLAB] a aussi sans doute plus de produits et de soutien". Je ne suis pas d'accord avec cela. CRAN et Bioconductor (for R) sont beaucoup plus complets que MATLAB + les boîtes à outils + le File Exchange. De plus, la liste de diffusion R-Help est généralement aussi efficace que l'assistance payante, d'après mon expérience. Je suis d'accord que le compilateur MATLAB est une excellente fonctionnalité qui n'est pas reproduite dans R.
Richie Cotton
2
Souvent, les fonctions R sont mieux documentées que celles de Matlab. Je trouve que la qualité de la documentation Matlab varie beaucoup d'une fonction à l'autre et entre les boîtes à outils (commerciales). Je suis d'accord que Matlab IDE est un peu plus convivial pour les débutants, mais ce n'est pas mieux que par exemple ESS for R si vous l'utilisez quotidiennement.
Matti Pastell
10
RStudio est un nouveau R IDE sympa
Jason Axelson
1
Dommage que cette question soit close. C'est l'une des meilleures discussions techniques que j'ai jamais vues sur StackOverflow.
kd4ttc
32

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

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

  • traitement d'image / acquisition d'image,
  • conception de filtre,
  • logique floue / contrôle flou,
  • équations aux dérivées partielles,
  • etc.
rcs
la source
R a un grand référentiel de paquets appelé CRAN qui fournit une multitude de fonctionnalités supplémentaires (même si je suis d'accord avec votre point général). Ex: un solveur PDE: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire
7
MATLAB a également quelque chose d'analogue à CRAN: un échange de fichiers important ( mathworks.com/matlabcentral/fileexchange ) avec plus de 10 000 fonctions et boîtes à outils soumises par les utilisateurs qui sont disponibles gratuitement.
gnovice
2
Il existe également une base de code gratuite importante pour MATLAB en dehors de l'échange de fichiers de MATLAB Central.
Predictor
26

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 des applications spécialisées spécifiques à un domaine. Quelques exemples sont:

  • Fonctions telles que rationaliser qui aident dans les enquêtes de dynamique des fluides.

  • Boîtes à outils telles que le jeu d'outils de traitement d'image. Je n'ai pas trouvé de package R offrant une implémentation équivalente d'outils comme l'algorithme de bassin versant.

À 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 mathématique symbolique 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épendra de la somme d'argent que vous aurez à dépenser.

Une autre chose que je dois 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 abouti à une incroyable diversité de packages 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 une comparaison équitable car je ne l'ai pas beaucoup utilisé.

L'ouverture de R s'étend également à la liaison 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 pour aider à préparer les entrées et traiter les résultats. J'ai passé une heure à lire sur l'interface MEX au code compilé. Quand j'ai découvert que je devrais écrire et maintenir une routine Fortran distincte qui jonglait avec les pointeurs afin de gérer l'interface, j'ai mis MATLAB dans les tablettes.

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

Sharpie
la source
11
Je dois également mentionner que R obtient un gros plus dans mon livre pour le système Sweave pour permettre une recherche reproductible. Permettre à quiconque de réexécuter et d'analyser les calculs derrière un article ou un rapport en utilisant un outil disponible gratuitement est extrêmement important à mon avis.
Sharpie
22

Un gros avantage 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é 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.

John
la source
2
Tous les packages soumis par R sont testés pour la documentation et des exemples.
Fernando
21

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

Il y a certainement beaucoup de choses que MATLAB peut faire que R ne peut pas - dans ma région, MATLAB est beaucoup 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 RI, imaginez que ce serait beaucoup plus complexe. Simulink fournit également tout un domaine de fonctionnalités qui, je pense, manque à R. Je suis sûr qu'il y en a plus, mais je ne suis pas si familier avec R.

robince
la source
11

Réponse courte: non, bien sûr que non. Bien que tout ensemble de progiciels mathématiques se chevauchent, ils auront toujours des préjugés vers certains domaines de problèmes. Ces préjugés déterminent fortement si vous souhaitez ou non utiliser l'un de ces packages.

Un exemple de ce que MATLAB peut faire que R ne peut pas est l'interface avec le matériel en temps réel pour le traitement / l'acquisition et le contrôle du signal. Un modèle Simulink dans MATLAB peut être configuré à la fois 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 d'un système de contrôle est maintenant un une). Avec la carte matérielle appropriée dans 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 qu'il 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 graphiques (euh, je suppose); etc.

Will Robertson
la source
11
R est en fait connu pour être très efficace pour créer des graphiques. Ils ont l'air très bien aussi. En fait, la toute première raison pour laquelle je me suis penché sur R était que j'étais jaloux de certains des beaux graphiques que mes collègues avaient faits, en utilisant R. Donc, je suis passé de gnuplot et je n'ai jamais regardé en arrière.
Frank
11

Je suis d'accord avec plusieurs des réponses données ci-dessus. Puisque la réponse est spécifique au diffset des capacités MATLAB et R, j'en mentionnerai une très importante: MATLAB inclut une JVM et a une interopérabilité parfaite et robuste avec Java. L'ensemble du vaste univers de bibliothèques de Java est accessible à l'utilisateur MATLAB. L'IDE MATLAB peut être presque utilisé comme une éclipse de pauvre. En comparaison, rJava est très immature, malgré l'effort très précieux de son créateur (Roman François).

gappy
la source
9

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

Nzbuu
la source
3
C'est une réponse tout à fait valable. Il est important de réaliser qu'il existe de nombreuses industries qui n'accepteront tout simplement pas une solution open source. Il existe des exigences de conformité discutables qui prennent R de la plaque.
Brandon Bertelsen le
1
@BrandonBertelsen: spécifiquement, quoi?
smci
3
@smci cette déclaration n'est plus aussi vraie qu'elle l'était en 2010. L'utilisation de R a proliféré.
Brandon Bertelsen le
Ok, mais pouvez-vous nous dire à partir de 2010 quelles exigences de conformité ont enlevé R de l'assiette (et lesquelles sont toujours un problème)?
smci
1
Nos clients utilisent généralement MATLAB et nous sommes souvent amenés à échanger du code et des modèles avec eux. Vous constatez généralement que les seules industries qui utilisent R sont principalement concernées par les ensembles de données et les statistiques.
Nzbuu
5

Avec le package sqldf, R est capable non seulement de statistiques, mais également d'extraction de données sérieuse - en supposant qu'il y ait suffisamment de RAM sur votre machine.

Et avec le package RServe, R devient un serveur TCP / IP normal; vous pouvez donc appeler R depuis java (ou tout autre langage si vous avez l'API). Il existe également un package dans R pour appeler java ou R.

Alex
la source
C'est vrai, mais la question est "Que peut faire MATLAB que R ne peut pas faire?" non "Que peut faire R que MATLAB ne peut pas faire?".
Marek
4

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. et je ne peux m'empêcher de penser que R est par des statisticiens pour des statisticiens alors que MATLAB est par des programmeurs pour des programmeurs.

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

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

lhahne
la source
4
Come one, Rest un langage de programmation.
Frank
6
"Matlab est par des programmeurs pour des programmeurs". MATLAB a été initialement écrit spécifiquement pour faire de l'algèbre linéaire; ce n'était pas un langage de programmation à usage général. De nombreuses fonctionnalités de langage à usage général ont été ajoutées par la suite. (Il n'y avait qu'un système orienté objet fonctionnel pendant un an.)
Richie Cotton
9
"Matlab est par des programmeurs pour des programmeurs": Êtes-vous sérieux? La seule chose qui me dérange réellement avec MATLAB est que celui qui a inventé le langage n'était pas un programmeur, étant donné l'extrême maladresse du langage dans certaines situations.
Hannes Ovrén
13
R a été créé par des statisticiens, Matlab a été créé par des ingénieurs. Les deux sont des langages de programmation entièrement capables.
Sharpie
3
@smci La dernière fois que j'ai échangé le code Matlab de production pour le code R, c'était au National Weather Service en 2008 et le système fonctionne sans faute depuis. Le traitement interne d'ensembles de données de plusieurs gigaoctets à l'aide d'algorithmes récursifs n'est en aucun cas une tâche représentative du calcul scientifique dans son ensemble et constitue donc un mauvais choix de référence pour faire des déclarations générales sur l'adéquation d'un langage de programmation.
Sharpie
2

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

humide
la source
En tant que grand utilisateur des outils de traçage interactif des deux systèmes, je serai d'accord sur les limites (c'est-à-dire que je pousse les deux durement), mais vous manquez probablement des outils de graphiques interactifs très utiles dans R. Découvrez les packages suivants : iplots, Acinonyx, manipuler Rstudio, et plus encore. Pour vous amuser, consultez cet exemple .
Iterator
«Les graphismes R ont une sensation des années 1960» - c'était peut-être vrai il y a des années. De nos jours, avec ggplot2 qui gagne rapidement en popularité, les graphiques R ont un look moderne et beau. Voir par exemple: r-bloggers.com/?s=ggplot
arielf