xlabel - ¿Qué puede hacer MATLAB que R no puede hacer?
title matlab (11)
¿Puedes usar R para reemplazar MATLAB?
Sí.
Utilicé 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 dijo anteriormente Spencer Graves , también depende de la "iglesia que frecuentas". Lo mejor es que mire el conjunto de herramientas de MATLAB frente a CRAN para una tarea específica antes de decidir.
Una pregunta similar se hizo en R-Help hace algunos 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 romper el trato.
- 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 hacer ninguna programación si lo desea). Simulink permite programar visualmente conectando bloques en gráficos. REvolution R aborda algunas de estas diferencias al proporcionar un IDE mejor con una depuración mejorada, pero aún está un paso atrás.
- MATLAB es un poco más rápido con la configuración normal ( vea este punto de referencia para un ejemplo ), aunque hay cosas que se pueden hacer para mejorar el rendimiento de R si eso se convierte en un problema.
- Dado que 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 MATLAB ejecutables que se pueden implementar.
- En lo que respecta a paquetes / toolkits, 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 pueden extenderse 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 usar R. Tiene una muy una comunidad fuerte a su alrededor (las listas de correo R son increíbles), se está desarrollando rápidamente (vea 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 "Comparaciones esenciales de los lenguajes Matlab y R". Esto cubre algunas diferencias de sintaxis importantes (como la interpretación de un punto o el significado de corchetes []). Vale la pena leer el libro en sí para cualquiera que esté interesado en la programación funcional (en cualquier idioma).
Como usuario de MATLAB y R, creo que son aplicaciones muy diferentes. Yo mismo tengo experiencia en informática, etc. y no puedo dejar de pensar que R es por estadísticos para estadísticos, mientras que MATLAB es por programadores para programadores.
R hace que sea muy fácil visualizar y calcular todo tipo de material estadístico, pero no lo usaría para implementar algo relacionado con el procesamiento de señales si dependiera de mí.
En resumen, si quiere hacer estadísticas, use R. Si quiere programar, use MATLAB o algún lenguaje de programación.
Con el paquete sqldf, R es capaz no solo de estadísticas, sino también de una seria extracción de datos, suponiendo que hay 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 fuera de Java (o cualquier otro idioma si tiene la API). También hay un paquete en R para llamar a java o R.
El soporte para gráficos interactivos es mucho mejor en matlab que en R. Odio el matlab como lenguaje, pero me da celos cuando veo cómo sus usuarios pueden explorar datos con operaciones de mouse, mientras estoy ocupado repitiendo comandos con nuevos valores para xlim
etc. Matlab también maneja tramas de varios paneles mucho mejor que cualquiera de los métodos R para la tarea. Generalmente, los gráficos R tienen una sensación de los años 60. Está bien para la publicación, pero no es la mejor solución para la exploración interactiva de datos.
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 de código abierto directo de MATLAB http://www.gnu.org/software/octave/ y Scilab .
Sin duda, es mucho lo que MATLAB puede hacer que R no pueda - 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 imagino que sería mucho más complicado. También 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.
Estoy de acuerdo con muchas de las respuestas dadas anteriormente. Dado que la respuesta es específica para la difusión de las capacidades de MATLAB y R, mencionaré una muy importante: MATLAB incluye una JVM y tiene interoperabilidad impecable y robusta con Java. Todo el vasto universo de bibliotecas de Java es accesible para el usuario de MATLAB. El MATLAB IDE casi se puede usar como Eclipse de un pobre. En comparación, rJava es muy inmaduro, a pesar del esfuerzo muy valioso de su creador (Roman Francois).
He usado tanto R como MATLAB para resolver problemas y construir modelos relacionados con Ingeniería Ambiental y hay mucha superposición entre los dos sistemas. En mi opinión, las ventajas de MATLAB se encuentran en aplicaciones especializadas específicas de dominio. Algunos ejemplos son:
Funciones tales como racionalizar esa ayuda 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 ofrece 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 R equivalentes como Ryacas o rSymPy. La existencia del compilador MATLAB también permite implementar sistemas basados en el código MATLAB independientemente del entorno de MATLAB, aunque su disponibilidad dependerá de la cantidad de dinero que tenga que invertir.
Otra cosa que debo señalar es que el depurador de 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 que se puede extender. 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 el código compilado. Hace un tiempo tuve un modelo escrito en Fortran y estaba tratando de decidir entre utilizar R o MATLAB como interfaz para ayudar a preparar la entrada y procesar los resultados. Pasé una hora leyendo sobre la interfaz MEX para el código compilado. Cuando descubrí que tendría que escribir y mantener una rutina Fortran separada que hacía algunos intrincados malabarismos con el puntero para gestionar la interfaz, archivé MATLAB.
La interfaz R consiste en llamar .Fortran ([nombre de subrutina], [lista de argumentos]) y es más rápido y más limpio.
No podemos porque nuestros clientes lo esperan o lo requieren.
R es un entorno para el análisis de datos estadísticos y gráficos. Los orígenes de MATLAB están en la computación numérica. Las implementaciones de lenguaje básicas 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 lo usan. Por otro lado, MATLAB tiene muchas cajas de herramientas (costosas) para aplicaciones de ingeniería como
- procesamiento de imágenes / adquisición de imágenes
- diseño del filtro,
- lógica borrosa / control borroso
- ecuaciones diferenciales parciales,
- etc.
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 figuran fuertemente en si desea utilizar uno de estos paquetes o no.
Un ejemplo de lo que MATLAB puede hacer que R no puede es la interfaz con el hardware en tiempo real para el procesamiento / adquisición y control de la señal. Un modelo Simulink en MATLAB se puede configurar para ejecutar en simulación en su máquina antes de compilar el código para ejecutar en un sistema real tomando datos medidos como entrada y calculando salidas apropiadas (lo que era antes de una simulación de un sistema de control ahora funciona 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 MATLAB puede hacer. Del mismo modo, Mathematica es mejor que MATLAB en matemática simbólica; Python es mejor que MATLAB en la programación general; gnuplot es mejor que todos ellos en realidad la creación de gráficos (er, supongo); y así.
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 ambiente e idioma 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.