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?
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?
Réponses:
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.
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).
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
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.
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.
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.
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.
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).
Nous ne pouvons pas car cela est attendu / requis par nos clients.
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.
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.
R
est un langage de programmation.
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 xlim
etc. 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.