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?
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?
Respuestas:
¿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.
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).
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
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.
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.
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.
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í.
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).
No podemos porque es lo esperado / requerido por nuestros clientes.
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.
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.
R
es un lenguaje de programación.
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 xlim
etc. 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.