O que o MATLAB pode fazer que R não possa fazer? [fechadas]

137

Costumo ouvir pessoas reclamarem do quão caras são as licenças do MATLAB . Então eu me pergunto por que eles não apenas usar Octave ou R . Mas o último está certo? Você pode usar R para substituir o MATLAB?

Frank
fonte
13
a propósito, há uma outra alternativa de código aberto: Octave é principalmente Matlab compatível
sellibitze
14
Tecnicamente, tudo o que pode ser feito em um idioma pode ser feito em qualquer idioma (do ponto de vista "o que ele pode calcular"). É apenas uma questão de facilidade de uso e facilidade de aprendizado
BlueRaja - Danny Pflughoeft
20
+1: O Matlab pode consumir meu orçamento de software. R ainda não conseguiu fazer isso.
Iterator
3
Para corrigir algumas outras instruções: não é correto que se possa reutilizar todo o código Matlab no Octave ou no FreeMat. Existem algumas classes de funções que não são bem implementadas nas outras versões. Eu tenho grandes blocos de código que achei melhor implementar novamente em ambientes com funcionalidade aproximadamente semelhante apenas para essas classes de funções. Das funcionalidades que o Matlab possui e que o Octave não possui, encontrei substitutos em R, Python e, até certo ponto, Java e C. Reimplementar bibliotecas é mais difícil que o código básico. Preste atenção às bibliotecas ...
Iterator
5
O fechamento desta questão não se justifica. Esta pergunta não é sobre pesquisa, é sobre o que exatamente você pode fazer no Matlab, mas não na R. Essas coisas podem ser facilmente enumeradas e apoiadas por referências.
27412 Frank

Respostas:

128

Você pode usar R para substituir o MATLAB?

Sim.

Eu usei o MATLAB por anos, mas mudei principalmente para o R nos últimos 3 anos. Neste ponto, eles têm muito mais em comum do que não. Depende parcialmente do seu campo e caso de uso. E como Spencer Graves disse anteriormente , também depende de qual "igreja você frequenta". É melhor se você olhar o kit de ferramentas MATLAB vs. CRAN para uma tarefa específica antes de decidir.

Uma pergunta semelhante foi feita no R-Help há alguns anos e mais recentemente . David Hiebeler (na Universidade do Maine) mantém uma extensa comparação R / MATLAB e é a melhor referência sobre o assunto. Você também pode revisar essa comparação de funções básicas .

Aqui estão algumas das coisas que eu observei no passado, nenhuma das quais deve ser uma quebra de negócio.

  • Geralmente, o MATLAB possui um melhor ambiente de programação (por exemplo, melhor documentação, melhores depuradores, melhor navegador de objetos) e é "mais fácil" de usar (você pode usar o MATLAB sem fazer nenhuma programação, se desejar). O Simulink permite programar visualmente conectando blocos em gráficos. O REvolution R está resolvendo algumas dessas diferenças , fornecendo um IDE melhor com depuração aprimorada, mas ainda está um passo atrás.
  • O MATLAB é um pouco mais rápido com a configuração normal ( veja este benchmark, por exemplo ), embora haja coisas que podem ser feitas para melhorar o desempenho do R se isso se tornar um problema.
  • Por ser comercial, também pode ter mais "produtos" (no sentido de complementos integrados) e suporte (mas você paga por isso). Veja a lista de produtos . Por exemplo, ele possui coisas como o compilador MATLAB, que cria programas executáveis ​​do MATLAB que podem ser implantados.
  • No que diz respeito aos pacotes / kits de ferramentas, o MATLAB tem muito mais suporte para as ciências físicas, enquanto o R é mais forte para as estatísticas, o que não significa que o outro não possa executar essas tarefas. E ambos podem ser facilmente estendidos.

Portanto, se a facilidade de uso não é uma preocupação primária (e não há outro motivo comercial para evitar o uso de uma ferramenta de código-fonte aberto), acho que há um argumento real a ser feito para o uso do R. uma comunidade forte em torno dele (as listas de discussão do R são incríveis), está se desenvolvendo rapidamente (consulte CRAN) e é gratuita (o que não é um problema pequeno!).

Edit: Eu apenas acrescentaria mais um ponto a isso: o livro "Análise Funcional de Dados com R e MATLAB" inclui um capítulo sobre "Comparações Essenciais dos Idiomas Matlab e R". Isso cobre algumas diferenças importantes de sintaxe (como a interpretação de um ponto ou o significado de colchetes []). Vale a pena ler o livro em si para qualquer pessoa interessada em programação funcional (em qualquer idioma).

Shane
fonte
5
Há uma referência agradável Matlab / R que mostra como executar tarefas equivalentes em cada aqui: math.umaine.edu/~hiebeler/comp/matlabR.html
Suppressingfire
4
"[MATLAB] também tem mais produtos e suporte". Eu discordo disso. CRAN e Bioconductor (para R) são muito mais abrangentes que MATLAB + as caixas de ferramentas + o File Exchange. Além disso, na minha experiência, a lista de discussão R-Help geralmente é tão eficaz quanto o suporte pago. Concordo que o compilador MATLAB é uma grande característica que não é replicado em R.
Richie Algodão
2
Muitas vezes, as funções R são melhor documentadas do que as do Matlab. Acho que a qualidade da documentação do Matlab varia muito de função para função e entre caixas de ferramentas (comerciais). Concordo que o Matlab IDE é um pouco mais amigável para iniciantes, mas não é melhor do que, por exemplo, o ESS for R, se você o usar diariamente.
precisa saber é o seguinte
10
O RStudio é um novo e bom R IDE
Jason Axelson 16/11
1
Pena que esta questão foi encerrada. Esta é uma das melhores discussões técnicas que eu já vi no StackOverflow.
Kd4ttc 17/03/2013
32

R é um ambiente para análise de dados estatísticos e gráficos. As origens do MATLAB estão na computação numérica. As implementações básicas de linguagem têm muitos recursos em comum se você os usar para manipulação de dados (por exemplo, operações de matriz / vetor).

R tem uma funcionalidade estatística difícil de encontrar em outros lugares (> 2000 Pacotes no CRAN ), e muitos estatísticos a usam. Por outro lado, o MATLAB possui muitas caixas de ferramentas (caras) para aplicações de engenharia como

  • processamento / aquisição de imagens,
  • design de filtro,
  • lógica fuzzy / controle fuzzy,
  • equações diferenciais parciais,
  • etc.
rcs
fonte
O R possui um grande repositório de pacotes chamado CRAN, que fornece diversos recursos adicionais (embora eu concorde com o seu ponto geral). Ex: um solucionador de PDE: cran.r-project.org/web/packages/deSolve/index.html
Suppressingfire
7
O MATLAB também possui algo análogo ao CRAN: um File Exchange considerável ( mathworks.com/matlabcentral/fileexchange ) com mais de 10.000 funções e caixas de ferramentas enviadas pelo usuário que estão disponíveis gratuitamente.
precisa saber é o seguinte
2
Também existe uma base de códigos considerável e gratuita para o MATLAB fora do File Exchange do MATLAB Central.
Predictor
26

Utilizei R e MATLAB para resolver problemas e construir modelos relacionados à Engenharia Ambiental e há muita sobreposição entre os dois sistemas. Na minha opinião, as vantagens do MATLAB estão em aplicativos específicos de domínio especializados. Alguns exemplos são:

  • Funções como racionalização que auxiliam nas investigações da dinâmica de fluidos.

  • Caixas de ferramentas, como o conjunto de ferramentas de processamento de imagem. Não encontrei um pacote R que ofereça uma implementação equivalente de ferramentas como o algoritmo de bacia hidrográfica.

Na minha opinião, o MATLAB oferece recursos gráficos interativos muito melhores. No entanto, acho que o R produz melhores gráficos de qualidade de impressão estática, dependendo do aplicativo. A caixa de ferramentas de matemática simbólica do MATLAB também é melhor integrada e mais capaz do que os equivalentes R, como Ryacas ou rSymPy. A existência do compilador MATLAB também permite que sistemas baseados no código MATLAB sejam implantados independentemente do ambiente MATLAB - embora sua disponibilidade dependa de quanto dinheiro você tem para gastar.

Outra coisa que devo observar é que o depurador do MATLAB é um dos melhores com os quais trabalhei.

A principal vantagem que vejo com R é a abertura do sistema e a facilidade com que ele pode ser estendido. Isso resultou em uma incrível diversidade de pacotes no CRAN. Sei que o Mathworks também mantém um repositório de caixas de ferramentas fornecidas por usuários e não posso fazer uma comparação justa, pois não a usei tanto.

A abertura do R também se estende à vinculação no código compilado. Há algum tempo, eu tinha um modelo escrito em Fortran e estava tentando decidir entre usar o R ​​ou MATLAB como front-end para ajudar a preparar entrada e processar resultados. Passei uma hora lendo sobre a interface MEX para código compilado. Quando descobri que precisaria escrever e manter uma rotina separada do Fortran que fazia algum malabarismo intrincado com ponteiros para gerenciar a interface, arquivei o MATLAB.

A interface R consiste em chamar .Fortran ([nome da sub-rotina], [lista de argumentos]) e é simplesmente mais rápida e limpa.

Sharpie
fonte
11
Também devo mencionar que R recebe uma grande vantagem em meu livro para o sistema Sweave por permitir a pesquisa reproduzível. Permitir que alguém execute novamente e analise os cálculos por trás de um artigo ou relatório usando uma ferramenta disponível gratuitamente é extremamente importante em minha opinião.
Sharpie
22

Uma grande vantagem do MATLAB sobre o R é a qualidade da documentação do MATLAB. R, sendo de código aberto, sofre a esse respeito, um recurso comum a muitos projetos de código aberto.

R é, no entanto, um ambiente e linguagem muito útil. É amplamente utilizado na comunidade de bioinformática e possui muitos pacotes úteis nesse domínio.

Uma alternativa ao R é o Octave ( http://www.gnu.org/software/octave/ ), que é muito semelhante ao MATLAB, ele pode executar scripts MATLAB.

John
fonte
2
Todos os pacotes enviados pelo R são testados para documentação e exemplos.
Fernando
21

Na minha experiência, mudar do MATLAB para o Python é uma transição mais fácil - o Python com numpy / scipy está mais próximo do MATLAB em termos de estilo e recursos do que o R. Há também clones diretos de código aberto do MATLAB, Octave e Scilab .

Certamente, o MATLAB pode fazer o que o R não pode - na minha área, o MATLAB é muito usado para aquisição de dados em tempo real - a maioria das empresas de hardware inclui interfaces MATLAB. Embora isso seja possível com o RI, imagine que seria muito mais envolvido. Além disso, o Simulink fornece toda uma área de funcionalidade que acho que está faltando na R. Tenho certeza de que há mais, mas não estou tão familiarizada com a R.

robince
fonte
11

Resposta curta: não, claro que não. Embora qualquer conjunto de pacotes de software matemático tenha sobreposições, eles sempre terão preconceitos em relação a determinados domínios problemáticos. Esses preconceitos estão fortemente relacionados ao fato de você querer ou não usar um desses pacotes.

Um exemplo do que o MATLAB pode fazer que o R não pode é a interface com o hardware em tempo real para processamento / aquisição e controle de sinal. Um modelo Simulink no MATLAB pode ser configurado para rodar em simulação na sua máquina antes de compilar o código para ser executado em um sistema real, tendo os dados medidos como entrada e calculando as saídas apropriadas (o que era antes da simulação de um sistema de controle agora está em pleno funcionamento 1). Com a placa de hardware apropriada em sua máquina, você pode executar sistemas de controle em tempo real através de um PC.

R, por outro lado, parece firmemente definido no papel da estatística, onde tenho certeza de que ela supera o que o MATLAB pode fazer. Da mesma forma, o Mathematica é melhor que o MATLAB em matemática simbólica; Python é melhor que MATLAB em programação geral; O gnuplot é melhor do que todos eles na criação de gráficos (er, eu assumo); e assim por diante.

Will Robertson
fonte
11
Sabe-se que R é muito bom para criar gráficos. Eles parecem muito bons também. Na verdade, a primeira razão para eu examinar o R ​​foi que eu tinha inveja de alguns dos bons gráficos que meus colegas fizeram, usando R. Então, mudei do gnuplot e nunca olhei para trás.
Frank
11

Eu concordo com muitas das respostas dadas acima. Como a resposta é específica para a difusão dos recursos MATLAB e R, mencionarei uma muito importante: o MATLAB inclui uma JVM e possui interoperabilidade perfeita e robusta com Java. Todo o vasto universo de bibliotecas de Java é acessível ao usuário do MATLAB. O IDE MATLAB pode quase ser usado como o Eclipse de um homem pobre. Em comparação, o rJava é muito imaturo, apesar do esforço valioso de seu criador (Roman François).

gappy
fonte
9

Não podemos porque é esperado / exigido pelos nossos clientes.

Nzbuu
fonte
3
Esta é uma resposta completamente válida. É importante perceber que existem muitos setores que simplesmente não aceitam uma solução de código aberto. Existem requisitos de conformidade questionáveis ​​que levam R da placa.
Brandon Bertelsen
1
@BrandonBertelsen: especificamente, o que?
SMCI
3
@smci essa afirmação não é mais tão verdadeira quanto em 2010. O uso de R proliferou.
Brandon Bertelsen
Ok, mas você pode nos dizer a partir de 2010 quais requisitos de conformidade retiraram o R do mercado (e quais ainda são um problema)?
SMCI
1
Nossos clientes geralmente também usam o MATLAB e geralmente somos obrigados a trocar códigos e modelos com eles. Você geralmente acha que os únicos setores que usam R se preocupam principalmente com conjuntos de dados e estatísticas.
Nzbuu 9/09/12
5

Com o pacote sqldf, o R é capaz não apenas de estatísticas, mas também de mineração de dados séria - assumindo que há RAM suficiente na sua máquina.

E com o pacote RServe R, torna-se um servidor TCP / IP comum; para que você possa chamar R fora do java (ou qualquer outro idioma, se tiver a API). Há também um pacote no R para chamar java out ou R.

Alex
fonte
É verdade, mas a pergunta é "O que o MATLAB pode fazer que R não possa fazer?" not "O que R pode fazer que MATLAB não pode fazer?".
Marek
4

Como usuário do MATLAB e do R, acho que são aplicativos muito diferentes. Eu próprio tenho formação em ciência da computação, etc. e não posso deixar de pensar que R é de estatísticos para estatísticos, enquanto MATLAB é de programadores para programadores.

O R facilita a visualização e computação de todo tipo de material estatístico, mas eu não o usaria para implementar nada relacionado ao processamento de sinais, se dependesse de mim.

Para resumir, se você deseja fazer estatísticas, use R. Se você deseja programar, use MATLAB ou alguma linguagem de programação.

lhahne
fonte
4
Venha um, Ré uma linguagem de programação.
Frank
6
"O Matlab é de programadores para programadores". O MATLAB foi originalmente escrito especificamente para fazer álgebra linear; não era uma linguagem de programação de uso geral. Muitos dos recursos de linguagem de uso geral foram abordados posteriormente. (É só tinha um sistema orientado a objetos viável para um ano.)
Richie Algodão
9
"O Matlab é feito por programadores para programadores": você está falando sério? A única coisa que realmente me incomoda com o MATLAB é que quem inventou a linguagem não era um programador, dado o constrangimento extremo da linguagem em algumas situações.
214 Hannes Ovrén
13
R foi criado por estatísticos, Matlab foi criado por engenheiros. Ambos são linguagens de programação totalmente capazes.
Sharpie
3
@smci A última vez que troquei o código Matlab de produção por código R foi no Serviço Nacional de Meteorologia em 2008 e o sistema está funcionando sem falhas desde então. O processamento in-core de conjuntos de dados de vários gigabytes usando algoritmos recursivos não é de modo algum uma tarefa representativa da computação científica como um todo e, portanto, é uma má escolha de referência para fazer declarações gerais sobre a adequação de uma linguagem de programação.
26412 Sharpie
2

O suporte a gráficos interativos é muito melhor no matlab do que no R. Eu odeio o matlab como idioma, mas fico com ciúmes quando vejo como seus usuários podem explorar dados com operações do mouse, enquanto estou ocupado repetindo comandos com novos valores para xlimetc. O Matlab também lida com gráficos de vários painéis muito melhor do que qualquer um dos métodos R da tarefa. Geralmente, os gráficos R têm uma sensação dos anos 1960. É bom para publicação, mas não é a melhor solução para exploração interativa de dados.

úmido
fonte
Como um usuário pesado das ferramentas de plotagem interativa de ambos os sistemas, concordarei com os limites (ou seja, como pressiono os dois com força), mas você provavelmente está perdendo algumas ferramentas gráficas interativas muito úteis em R. Verifique os seguintes pacotes : iplots, Acinonyx, manipulações de Rstudio e muito mais. Por diversão, confira este exemplo .
Iterator
"Os gráficos R têm uma sensação dos anos 1960" - isso pode ter sido verdade anos atrás. Hoje em dia, com o ggplot2, que está rapidamente ganhando popularidade, os gráficos R têm uma aparência moderna e bonita. Veja, por exemplo: r-bloggers.com/?s=ggplot
arielf