Que peut faire MATLAB que R ne peut pas faire?

J’entends souvent des gens se plaindre du coût élevé des licences MATLAB . Alors je me demande pourquoi ils n’utilisent pas simplement Octave ou R. Mais ce dernier est-il correct? Pouvez-vous utiliser R pour remplacer MATLAB?

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 l’a dit précédemment Spencer Graves , cela dépend aussi de “l’église que vous fréquentez”. Il est préférable d’examiner MATLAB toolkit et CRAN pour une tâche spécifique avant de vous décider.

Une question similaire a été 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 R / MATLAB étendue et constitue 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 problème.

  • En règle générale, MATLAB dispose d’un meilleur environnement de programmation (par exemple, une meilleure documentation, de meilleurs débogueurs, un meilleur navigateur d’objects) et est “plus simple” à utiliser (vous pouvez utiliser MATLAB sans programmation si vous le souhaitez). Simulink vous permet de programmer visuellement en connectant des blocs dans des graphiques. REvolution R répond à certaines de ces différences en fournissant un meilleur IDE avec un débogage amélioré, mais il rest un pas en arrière.
  • MATLAB est un peu plus rapide avec la configuration normale ( voir cet exemple pour un exemple ), bien qu’il y ait des choses à faire pour améliorer les performances R si cela devient un problème.
  • Comme c’est commercial, on peut aussi dire qu’il a plus de «produits» (au 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 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 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 qu’il n’ya pas d’autre raison d’éviter d’utiliser un outil open-source), alors je pense qu’il ya un cas concret à utiliser avec R. communauté forte autour de lui (les listes de diffusion R sont étonnantes), se développe rapidement (voir CRAN), et c’est gratuit (ce qui n’est pas un petit problème!).

Edit: Je voudrais juste append un autre point à ceci: le livre “Analyse des 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 lui-même mérite d’être lu par quiconque s’intéresse à la functional programming (dans les deux langues).

R est un environnement d’parsing de données statistiques et de graphiques. Les origines de MATLAB sont en 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 (par exemple, les opérations de masortingce / vecteur).

R possède 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 les applications d’ingénierie telles que

  • traitement d’image / acquisition d’image,
  • conception du filtre,
  • logique floue / contrôle flou,
  • équations aux dérivées 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 de l’environnement 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. Certains exemples sont:

  • Des fonctions telles que la rationalisation facilitent les investigations sur la dynamic des fluides.

  • Des boîtes à outils telles que le jeu d’outils de traitement d’image. Je n’ai pas trouvé de package R fournissant 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 statiques de qualité d’impression, en fonction de l’application. La boîte à outils mathématique symbolique de MATLAB est également mieux intégrée et plus efficace que les équivalents R tels que Ryacas ou rSymPy. L’existence du compilateur MATLAB permet également de déployer des systèmes basés sur le code MATLAB indépendamment de l’environnement MATLAB, bien que sa disponibilité dépende de la quantité d’argent à dépenser.

Une autre chose à noter est que le débogueur MATLAB est l’un des meilleurs avec lequel j’ai travaillé.

L’avantage principal 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 paquets sur CRAN. Je sais que Mathworks gère également un référentiel de boîtes à outils fournies par l’utilisateur et que 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 en code compilé. Il y a quelque temps, j’avais un modèle écrit en Fortran et j’essayais de choisir entre l’utilisation de R ou de MATLAB comme interface pour préparer les résultats d’entrée et de traitement. J’ai passé une heure à lire sur l’interface MEX avec le code compilé. Lorsque j’ai découvert que je devais écrire et maintenir une routine Fortran distincte qui faisait un jonglage complexe avec les pointeurs afin de gérer l’interface, j’ai mis de côté MATLAB.

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

Un grand avantage de MATLAB sur R réside dans la qualité de la documentation MATLAB. R, étant open source, souffre à cet égard d’une fonctionnalité 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.

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 certainement faire beaucoup pour que R ne puisse pas – dans mon domaine, 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 cela serait beaucoup plus compliqué. Simulink fournit également toute une fonctionnalité qui, selon moi, est absente de R. Je suis sûr qu’il ya plus, mais je ne connais pas très bien R.

Réponse courte: non, bien sûr que non. Bien que tout ensemble de progiciels mathématiques se chevauchent, ils auront 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 pour que R ne soit 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é pour s’exécuter dans la simulation sur votre machine avant de comstackr 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 un). Avec la carte matérielle approprié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 qu’elle surpasse ce que MATLAB peut faire. De même, Mathematica est meilleur que MATLAB pour les 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.

Je suis d’accord avec beaucoup des réponses données ci-dessus. Étant donné que la réponse est spécifique à la diffset des fonctionnalités MATLAB et R, je mentionnerai une très importante: MATLAB inclut une JVM et présente une interopérabilité sans faille et robuste avec Java. Tout le vaste univers de bibliothèques de Java est accessible à l’utilisateur MATLAB. Le MATLAB IDE peut presque être utilisé comme Eclipse d’un pauvre homme. 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 parce qu’il est attendu / requirejs par nos clients.

Avec le paquetage sqldf, R est capable non seulement de statistiques, mais également d’exploration sérieuse des données, 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 toute autre langue si vous avez l’API). Il y a aussi un paquet dans R pour appeler java out 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 le fait de statisticiens pour les statisticiens alors que MATLAB est conçu par des programmeurs pour les programmeurs.

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

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

Le support des graphiques interactifs est bien meilleur en matlab qu’en 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 les opérations de la souris, alors que je répète les commandes avec de nouvelles valeurs pour xlim etc. Matlab gère également les tracés multi-panneaux beaucoup mieux que les méthodes R pour la tâche. Généralement, les graphiques R ont une impression des années 1960. C’est bien pour la publication, mais pas la meilleure solution pour l’exploration interactive des données.