¿Qué puede hacer MATLAB que R no puede hacer? [cerrado]

137

A menudo escucho que la gente se queja de lo caras que son las licencias de MATLAB . Entonces me pregunto por qué no sólo tiene que utilizar Octave o R . ¿Pero es esto último correcto? ¿Puedes usar R para reemplazar MATLAB?

Franco
fuente
13
Por cierto, hay otra alternativa de código abierto: Octave es en su mayoría compatibles Matlab
sellibitze
14
Técnicamente, todo lo que se puede hacer en un idioma se puede hacer en cualquier idioma (desde el punto de vista de "qué puede calcular"). Es solo una cuestión de facilidad de uso y de aprendizaje
BlueRaja - Danny Pflughoeft
20
+1: Matlab puede consumir mi presupuesto de software. R no ha logrado hacer esto, todavía.
Iterator
3
Para corregir algunas otras declaraciones: no es correcto que uno pueda reutilizar todo el código de Matlab en Octave o FreeMat. Hay algunas clases de funciones que no están bien implementadas en las otras versiones. Tengo grandes bloques de código que he descubierto que es mejor implementar de nuevo en entornos que tienen una funcionalidad aproximadamente similar para estas clases de funciones. De la funcionalidad que Matlab tiene que Octave no tiene, he encontrado sustitutos en R, Python y, en cierta medida, Java y C. Reimplementar bibliotecas es más difícil que el código básico. Presta atención a las bibliotecas ...
Iterator
55
El cierre de esta pregunta no está justificado. Esta pregunta no se trata de encuestas, se trata de qué es exactamente lo que puede hacer en Matlab pero no en R. Tales cosas pueden enumerarse fácilmente y respaldarse con referencias.
Frank

Respuestas:

128

¿Puedes usar R para reemplazar MATLAB?

Si.

Usé MATLAB durante años, pero cambié principalmente a R en los últimos 3 años. En este punto, tienen mucho más en común que no. Depende en parte de su campo y caso de uso. Y como Spencer Graves dijo anteriormente , también depende de qué "iglesia frecuentas". Es mejor si mira el kit de herramientas de MATLAB vs. CRAN para una tarea específica antes de decidir.

Una pregunta similar se hizo en R-Help hace unos años y nuevamente más recientemente . David Hiebeler (en la Universidad de Maine) mantiene una extensa comparación R / MATLAB , y es la mejor referencia sobre el tema. También puede revisar esta comparación de funciones básicas .

Estas son algunas de las cosas que he observado en el pasado, ninguna de las cuales debería ser un factor decisivo.

  • En general, MATLAB tiene un mejor entorno de programación (por ejemplo, mejor documentación, mejores depuradores, mejor navegador de objetos) y es "más fácil" de usar (puede usar MATLAB sin programar si lo desea). Simulink le permite programar visualmente mediante la conexión de bloques en gráficos. REvolution R está abordando algunas de estas diferencias al proporcionar un mejor IDE con una depuración mejorada, pero todavía está un paso atrás.
  • MATLAB es un poco más rápido con la configuración normal ( consulte este punto de referencia para ver un ejemplo ), aunque hay cosas que se pueden hacer para mejorar el rendimiento de R si eso se convierte en un problema.
  • Como es comercial, también podría decirse que tiene más "productos" (en el sentido de complementos integrados) y soporte (pero usted paga por ello). Ver la lista de productos . Por ejemplo, tiene cosas como el compilador MATLAB que crea programas ejecutables MATLAB que se pueden implementar.
  • En lo que respecta a los paquetes / kits de herramientas, MATLAB tiene mucho más soporte para las ciencias físicas, mientras que R es más fuerte para las estadísticas, lo que no quiere decir que el otro no pueda realizar estas tareas. Y ambos se pueden extender fácilmente.

Entonces, si la facilidad de uso no es una preocupación principal (y no hay otra razón comercial para evitar el uso de una herramienta de código abierto), entonces creo que hay un caso real para utilizar R. Tiene una muy buena comunidad fuerte a su alrededor (las listas de correo de R son increíbles), se está desarrollando rápidamente (ver CRAN), y es gratis (¡lo cual no es un problema pequeño!).

Editar: Simplemente agregaría un punto más a esto: el libro "Análisis de datos funcionales con R y MATLAB" incluye un capítulo sobre las "Comparaciones esenciales de los lenguajes Matlab y R". Esto cubre algunas diferencias importantes de sintaxis (como la interpretación de un punto o el significado de corchetes []). Vale la pena leer el libro en sí para cualquier persona interesada en la programación funcional (en cualquier idioma).

Shane
fuente
55
Hay una buena referencia de matlab / R que muestra cómo realizar tareas equivalentes en cada una de ellas aquí: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire el
44
"[MATLAB] también podría decirse que tiene más productos y soporte". No estoy de acuerdo con esto. CRAN y Bioconductor (para R) son mucho más completos que MATLAB + las cajas de herramientas + el intercambio de archivos. Además, en mi experiencia, la lista de correo de R-Help suele ser tan efectiva como la asistencia paga. Estoy de acuerdo en que el compilador MATLAB es una gran característica que no se replica en R.
Richie Cotton
2
Muchas veces las funciones R están mejor documentadas que las de Matlab. Creo que la calidad de la documentación de Matlab varía mucho de una función a otra y entre cajas de herramientas (comerciales). Estoy de acuerdo en que Matlab IDE es algo más amigable para principiantes, pero no es mejor que, por ejemplo, ESS for R si lo usa a diario.
Matti Pastell
10
RStudio es un nuevo R IDE agradable
Jason Axelson
1
Lástima que esta pregunta se cerró. Esta es una de las mejores discusiones técnicas que he visto en StackOverflow.
kd4ttc
32

R es un entorno para el análisis de datos estadísticos y gráficos. Los orígenes de MATLAB están en el cálculo numérico. Las implementaciones de lenguaje básico tienen muchas características en común si las usa para la manipulación de datos (por ejemplo, operaciones de matriz / vector).

R tiene una funcionalidad estadística difícil de encontrar en otros lugares (> 2000 paquetes en CRAN ), y muchos estadísticos la usan. Por otro lado, MATLAB tiene muchas cajas de herramientas (caras) para aplicaciones de ingeniería como

  • procesamiento de imágenes / adquisición de imágenes,
  • diseño de filtro,
  • lógica difusa / control difuso,
  • ecuaciones diferenciales parciales,
  • etc.
rcs
fuente
R tiene un gran depósito de paquetes llamado CRAN que proporciona una gran cantidad de características adicionales (aunque estoy de acuerdo con su punto general). Por ejemplo
Suppressingfire el
77
MATLAB también tiene algo análogo a CRAN: un intercambio de archivos considerable ( mathworks.com/matlabcentral/fileexchange ) con más de 10,000 funciones y cajas de herramientas enviadas por los usuarios que están disponibles gratuitamente.
gnovice
2
También hay una base de código considerable y gratuita para MATLAB fuera del Intercambio de archivos de MATLAB Central.
Predictor
26

He utilizado tanto R como MATLAB para resolver problemas y construir modelos relacionados con la Ingeniería Ambiental y existe una gran superposición entre los dos sistemas. En mi opinión, las ventajas de MATLAB residen en aplicaciones especializadas de dominio específico. Algunos ejemplos son:

  • Funciones como la racionalización que ayudan en las investigaciones de dinámica de fluidos.

  • Cajas de herramientas como el conjunto de herramientas de procesamiento de imágenes. No he encontrado un paquete R que proporcione una implementación equivalente de herramientas como el algoritmo de cuenca hidrográfica.

En mi opinión, MATLAB proporciona capacidades gráficas interactivas mucho mejores. Sin embargo, creo que R produce mejores gráficos de calidad de impresión estática, dependiendo de la aplicación. La caja de herramientas matemática simbólica de MATLAB también está mejor integrada y es más capaz que sus equivalentes R como Ryacas o rSymPy. La existencia del compilador MATLAB también permite que los sistemas basados ​​en el código MATLAB se implementen independientemente del entorno MATLAB, aunque su disponibilidad dependerá de la cantidad de dinero que tenga que gastar.

Otra cosa que debo tener en cuenta es que el depurador MATLAB es uno de los mejores con los que he trabajado.

La principal ventaja que veo con R es la apertura del sistema y la facilidad con la que se puede ampliar. Esto ha resultado en una increíble diversidad de paquetes en CRAN. Sé que Mathworks también mantiene un repositorio de cajas de herramientas aportadas por los usuarios y no puedo hacer una comparación justa, ya que no la he usado tanto.

La apertura de R también se extiende a la vinculación en código compilado. Hace un tiempo tenía un modelo escrito en Fortran y estaba tratando de decidir entre usar R o MATLAB como front-end para ayudar a preparar la entrada y procesar los resultados. Pasé una hora leyendo sobre la interfaz MEX para compilar código. Cuando descubrí que tendría que escribir y mantener una rutina Fortran separada que hiciera algunos malabarismos de punteros intrincados para administrar la interfaz, archivé MATLAB.

La interfaz R consiste en llamar a .Fortran ([nombre de subrutina], [lista de argumentos]) y es simplemente más rápida y limpia.

Sharpie
fuente
11
También debo mencionar que R obtiene una gran ventaja en mi libro para el sistema Sweave por permitir una investigación reproducible. En mi opinión, es extremadamente importante permitir que cualquiera vuelva a ejecutar y analizar los cálculos detrás de un documento o informe utilizando una herramienta disponible gratuitamente.
Sharpie el
22

Una gran ventaja de MATLAB sobre R es la calidad de la documentación de MATLAB. R, al ser de código abierto, sufre a este respecto, una característica común a muchos proyectos de código abierto.

R es, sin embargo, un entorno y lenguaje muy útil. Es ampliamente utilizado en la comunidad bioinformática y tiene muchos paquetes útiles en este dominio.

Una alternativa a R es Octave ( http://www.gnu.org/software/octave/ ), que es muy similar a MATLAB, puede ejecutar scripts de MATLAB.

Juan
fuente
2
Todos los paquetes R enviados se prueban para documentación y ejemplos.
Fernando
21

En mi experiencia, pasar de MATLAB a Python es una transición más fácil: Python con numpy / scipy está más cerca de MATLAB en términos de estilo y características que R. También hay clones directos de código abierto de MATLAB Octave y Scilab .

Ciertamente, hay mucho que MATLAB puede hacer que R no puede: en mi área, MATLAB se usa mucho para la adquisición de datos en tiempo real, la mayoría de las compañías de hardware incluyen interfaces MATLAB. Si bien esto puede ser posible con RI, imagine que sería mucho más complicado. Además, Simulink proporciona un área completa de funcionalidad que creo que falta en R. Estoy seguro de que hay más, pero no estoy tan familiarizado con R.

robince
fuente
11

Respuesta corta: no, por supuesto que no. Si bien cualquier conjunto de paquetes de software matemático tendrá sus superposiciones, siempre tendrán sesgos hacia ciertos dominios problemáticos. Estos sesgos dependen mucho de si desea o no usar uno de estos paquetes.

Un ejemplo de lo que puede hacer MATLAB que R no puede hacer es la interfaz con el hardware en tiempo real para el procesamiento / adquisición y control de señales. Se puede configurar un modelo Simulink en MATLAB para que se ejecute en simulación en su máquina antes de compilar el código para ejecutarlo en un sistema real tomando los datos medidos como entrada y calculando las salidas apropiadas (lo que era antes de una simulación de un sistema de control ahora es completamente funcional uno). Con la placa de hardware adecuada en su máquina, puede ejecutar sistemas de control en tiempo real a través de una PC.

R, por el contrario, parece firmemente establecido en el papel de las estadísticas, donde estoy seguro de que supera lo que puede hacer MATLAB. Del mismo modo, Mathematica es mejor que MATLAB en matemáticas simbólicas; Python es mejor que MATLAB en la programación general; gnuplot es mejor que todos ellos para crear gráficos (er, supongo); y así.

Will Robertson
fuente
11
En realidad, se sabe que R es muy bueno para crear gráficos. Se ven muy bien también. En realidad, la primera razón por la que busqué en R fue que estaba celoso de algunas de las gráficas bonitas que mis colegas habían hecho, usando R. Así que cambié de gnuplot y nunca miré hacia atrás.
Frank
11

Estoy de acuerdo con muchas de las respuestas dadas anteriormente. Dado que la respuesta es específica para el conjunto de capacidades de MATLAB y R, mencionaré una muy importante: MATLAB incluye una JVM y tiene una interoperabilidad perfecta y robusta con Java. El usuario de MATLAB puede acceder a todo el vasto universo de bibliotecas de Java. El IDE de MATLAB casi se puede usar como Eclipse de un hombre pobre. En comparación, rJava es muy inmadura, a pesar del esfuerzo muy valioso de su creador (Roman Francois).

alegre
fuente
9

No podemos porque es lo esperado / requerido por nuestros clientes.

Nzbuu
fuente
3
Esta es una respuesta completamente válida. Es importante darse cuenta de que hay muchas industrias que simplemente no aceptarán una solución de código abierto. Hay requisitos de cumplimiento cuestionables que toman R de la placa.
Brandon Bertelsen
1
@BrandonBertelsen: específicamente, ¿qué?
smci
3
@smci esa afirmación ya no es tan cierta como lo era en 2010. El uso de R ha proliferado.
Brandon Bertelsen
Bien, pero ¿podría decirnos a partir de 2010 qué requisitos de cumplimiento eliminaron a R (y cuáles siguen siendo un problema)?
smci
1
En general, nuestros clientes también usan MATLAB y, a menudo, estamos obligados a intercambiar códigos y modelos con ellos. Por lo general, encuentra que las únicas industrias que usan R se preocupan principalmente por conjuntos de datos y estadísticas.
Nzbuu
5

Con el paquete sqldf, R es capaz no solo de estadísticas, sino también de minería de datos seria, suponiendo que haya suficiente RAM en su máquina.

Y con el paquete RServe R se convierte en un servidor TCP / IP normal; para que pueda llamar a R desde java (o cualquier otro idioma si tiene la api). También hay un paquete en R para llamar a Java o R.

Alex
fuente
Es cierto, pero la pregunta es "¿Qué puede hacer MATLAB que R no pueda hacer?" no "¿Qué puede hacer R que MATLAB no pueda hacer?".
Marek
4

Como usuario de MATLAB y R, creo que son aplicaciones muy diferentes. Yo mismo tengo experiencia en informática, etc. y no puedo evitar pensar que R es de estadísticos para estadísticos, mientras que MATLAB es de programadores para programadores.

R hace que sea muy fácil visualizar y calcular todo tipo de cosas estadísticas, pero no lo usaría para implementar nada relacionado con el procesamiento de señales si fuera por mí.

Para resumir, si desea hacer estadísticas, use R. Si desea programar, use MATLAB o algún lenguaje de programación.

lhahne
fuente
44
Vamos uno, Res un lenguaje de programación.
Frank
66
"Matlab es por programadores para programadores". MATLAB fue originalmente escrito específicamente para hacer álgebra lineal; No era un lenguaje de programación de propósito general. Muchas de las características del lenguaje de propósito general se han agregado posteriormente. (Solo ha tenido un sistema orientado a objetos viable durante un año.)
Richie Cotton
9
"Matlab es por programadores para programadores": ¿Hablas en serio? Lo único que realmente me molesta con MATLAB es que quien inventó el lenguaje no era un programador, dada la extrema incomodidad del lenguaje en algunas situaciones.
Hannes Ovrén
13
R fue creado por estadísticos, Matlab fue creado por ingenieros. Ambos son lenguajes de programación totalmente capaces.
Sharpie el
3
@smci La última vez que cambié el código Matlab de producción por el código R fue en el Servicio Meteorológico Nacional en 2008 y el sistema ha estado funcionando sin fallas desde entonces. El procesamiento interno de conjuntos de datos de varios gigabytes utilizando algoritmos recursivos no es en modo alguno una tarea representativa de la informática científica en su conjunto y, por lo tanto, es una mala elección de punto de referencia para hacer declaraciones generales sobre la idoneidad de un lenguaje de programación.
Sharpie
2

La compatibilidad con gráficos interactivos es mucho mejor en matlab que en R. Odio matlab como lenguaje, pero me pongo celoso cuando veo cómo sus usuarios pueden explorar datos con operaciones del mouse, mientras estoy ocupado repitiendo comandos con nuevos valores para xlimetc. Matlab también maneja gráficas de paneles múltiples mucho mejor que cualquiera de los métodos R para la tarea. En general, los gráficos R tienen una sensación de 1960. Está bien para su publicación, pero no es la mejor solución para la exploración interactiva de datos.

húmedo
fuente
Como un gran usuario de las herramientas de trazado interactivas de ambos sistemas, estaré de acuerdo con los límites (es decir, ya que presiono a ambos), pero es probable que te estés perdiendo algunas herramientas gráficas interactivas muy útiles en R. Mira los siguientes paquetes : iplots, Acinonyx, la manipulación de Rstudio, y más. Por diversión, mira este ejemplo .
Iterator
"Los gráficos R tienen una sensación de los años 60", eso puede haber sido cierto hace años. En estos días, con ggplot2 que está ganando popularidad rápidamente, los gráficos R tienen un aspecto moderno y hermoso. Ver por ejemplo: r-bloggers.com/?s=ggplot
arielf