Diferenças entre Octave e MATLAB? [fechadas]

272

Sou um programador que conhece Python, Ruby e algum C que está tentando decidir se quer aprender o GNU Octave ou o Matlab. Eu sei que eles têm muito em comum , mas não está claro para mim o quão semelhante é a sintaxe ou até mesmo as estruturas de dados. Todo mundo diz que eles são "semelhantes", mas ninguém diz como eles realmente são. O link acima mostra vários exemplos em que eles são sintaticamente semelhantes ou idênticos, isso é verdade para todo o idioma?

Estou tentando aprender o idioma em geral para fazer mais computação científica, possivelmente usando algumas bibliotecas de análise de imagem. Eu sei que existem muitas outras línguas em que eu poderia programar, mas meus conselheiros dizem que conhecer o MATLAB ou o Octave é crucial nas ciências.

Além disso, o Matlab vale o custo? Não tenho muito dinheiro, mas se houver diferenças importantes nas bibliotecas ou em outros lugares, tenho certeza de que poderia encontrar o dinheiro.

lswim
fonte
8
Como você é um estudante, vale a pena verificar se a sua escola fornece matlab aos alunos gratuitamente / barato; minhas escolas de graduação e pós-graduação fazem isso, o que torna um pouco mais fácil decidir seguir o matlab.
Dougal
23
Sim, mas quando ele sai da universidade e vai a algum centro de pesquisa, ele terá que comprá-lo e até lá conhecerá o Matlab e não as alternativas. Então, pensando a longo prazo, se você quer fazer carreira na ciência que parece que ele quer, não deve ignorar isso. Sem mencionar que essas licenças geralmente também não podem ser usadas para clusters.
precisa saber é o seguinte
2
Enquanto estudante, você poderá obter uma licença do matlab por cerca de 100 dólares (USD). Concedido se você quiser que algumas das outras caixas de ferramentas sejam de US $ 29 adicionais por caixa de ferramentas. Portanto, sem saber quais caixas de ferramentas você pode querer / precisar, é difícil justificar o custo.
Ben A.
23
+1 Acabei de começar a aprender o Octave hoje porque atualmente estou estudando Machine Learning e o professor recomendou o aprendizado do Oitava (porque é gratuito, porque o METLAB é caro e porque o aluno será muito mais produtivo para que o algoritmo da máquina funcione de primeiro usando Octave ou Metlab primeiro, em seguida, uma vez que seu trabalho, depois mudar para Java ou C ++)
Anthony
7
Eu aconselhá-lo a usar python + opencv
gukoff

Respostas:

235

Em vez de fornecer uma lista completa de diferenças, apresentarei minha opinião sobre o assunto.

Se você ler atentamente a página da wiki que você fornece, frequentemente verá frases como "O Octave suporta os dois, enquanto o MATLAB exige o primeiro" etc. Isso mostra que os desenvolvedores do Octave tentam tornar a sintaxe do Octave "superior" às do MATLAB.

Essa atitude faz com que o Octave perca completamente seu objetivo. A idéia por trás do Octave é (ou se tornou , devo dizer, ver comentários abaixo) ter uma alternativa de código aberto para executar o código m. Se ele tenta ser "melhor", tenta ser diferente , o que não está de acordo com os motivos pelos quais a maioria das pessoas o usa. Na minha experiência, executar coisas desenvolvidas no MATLAB nunca funciona de uma só vez, exceto as muito simples e muito curtas - Para qualquer função considerável, sempre preciso traduzir muitas coisas antes que funcione no Octave, se não reescreva do zero. Como isso é melhor , eu realmente não vejo ...

Além disso, se você aprender o Octave, há muita sintaxe permitida no Octave que não é permitida no MATLAB. Significado - o código escrito no Octave geralmente não funciona no MATLAB sem inúmeras conversões. Também não é compatível o contrário!

Eu poderia continuar: o MathWorks tem muitas caixas de ferramentas para o MATLAB, há o Simulink e seus produtos relacionados para os quais realmente não há equivalente no Octave (sim, você teria que pagar por tudo isso. Mas, muitas vezes, seu empregador / escola faz isso de qualquer maneira e, pelo menos, existe ), conformidade comprovada com vários padrões do setor, ferramentas de teste, ferramentas de validação, sistemas de gerenciamento de requisitos, geração de relatórios, uma comunidade e base de usuários muito maior, etc. etc. etc. MATLAB é apenas uma pequena parte de algo muito maior. Oitava é ... apenas Oitava.

Então, meu conselho:

  • Descubra se sua escola pagará pelo MATLAB. Muitas vezes eles vão.
  • Se não, e se você puder juntar o dinheiro, compre o MATLAB e aprenda a usá-lo corretamente. A longo prazo, é a melhor decisão.
  • Se você realmente não consegue o dinheiro - use o Octave, mas aprenda a sintaxe do MATLAB e fique longe da sintaxe apenas do Octave. (Veja a nota)

Por que esse último ponto? Porque nas ciências, muitas vezes existem grandes bases de código inteiramente escritas em MATLAB. Existem professores, engenheiros, estudantes, programadores profissionais, muitas e muitas pessoas que conhecem todos os intrincados detalhes sangrentos do MATLAB, e não tanto do Octave.

Se você conseguir um novo emprego e todo mundo em seu novo escritório falar espanhol, é meio arrogante exigir que todos comecem a falar inglês a partir de então, simplesmente porque você não fala / gosta de espanhol. Mesmo com MATLAB e Octave.

NB - se todos os votantes negativos pudessem deixar um comentário com seus argumentos e razões para discordar de mim, isso seria ótimo :)

Nota: O Octave pode ser executado no "modo tradicional" (incluindo o sinalizador --traditional ao iniciar o Octave), o que faz com que ocorra um erro quando certa sintaxe somente do Octave é usada.

Rody Oldenhuis
fonte
25
Sobre a falta de JIT, ele já foi implementado na versão de desenvolvimento do Octave. Eu não sei quando isso será lançado, mas eu o construí e a diferença é enorme para o código loopy. E para ficar longe da sintaxe do Octave apenas, existe a opção - tradicional do Octave. Não estou dizendo que o código do Matlab sempre é executado no Octave, mas isso está ficando muito melhor a cada versão e a compatibilidade é uma das suas prioridades (sem mencionar que mesmo versões diferentes do Matlab têm incompatibilidades suficientes entre eles).
precisa saber é o seguinte
14
E o que você chama é manter uma sintaxe superior ... se você tivesse a liberdade de alterar o Matlab, adicionar sintaxe extra ou funções diferentes, não é? Esses são os recursos que os usuários implementaram e não quebram a compatibilidade. Com frequência, coisas novas são rejeitadas com base nisso. A idéia é que a linguagem Matlab seja um subconjunto da linguagem Octave. Se você acha que a ideia é incrível, deve participar porque é um projeto da comunidade e tem os recursos que a comunidade se preocupa em desenvolver.
precisa saber é o seguinte
19
@RodyOldenhuis não é suposto ser um clone. Desenvolvimento Octave não começou dessa forma, ele só ficou cada vez mais empurrados para essa direção pelos usuários que mantêm manchas submetendo para isso sciencedirect.com/science/article/pii/S0959152412000911
carandraug
9
O fabricante de qualquer ferramenta de programação NUNCA foi responsabilizado por um erro?
Martin Beckett
6
@carandraug: ah, que inferno! Correção é mais importante do que tudo o que :)
Rody Oldenhuis
79

Um link mais completo para a lista de diferenças está no FAQ da Oitava . Em teoria, todo código executado no Matlab deve ser executado no Octave e os desenvolvedores do Octave tratam a incompatibilidade com o Matlab como bugs. Portanto, a resposta para sua primeira pergunta é sim em teoria. Obviamente, todo software possui bugs, nem o Octave nem o Matlab (sim, o Matlab também) estão a salvo deles. Você pode denunciá-los e alguém tentará corrigi-los

O Octave também possui recursos extras , a maioria deles é uma sintaxe extra que, na minha opinião, torna o código mais legível e mais sensato, especialmente se você estiver acostumado a outros idiomas de programação.

Mas o Octave tem mais do que apenas o custo monetário. O Octave também é gratuito no sentido de liberdade, é livre, mas não acho que este seja o lugar para reclamar sobre liberdade de software.

Eu faço o processamento de imagens apenas no Octave e acho que o pacote de imagens atende às minhas necessidades. Não sei, porém, qual será o seu. Portanto, minha resposta para se vale o custo é não, mas certamente outros discordarão.

carandraug
fonte
23

O MATLAB é, antes de tudo, uma oferta comercial. Portanto, tudo no MATLAB praticamente funciona imediatamente. Toda a funcionalidade principal é sólida e, se você estiver trabalhando em um projeto especial, o MATLAB provavelmente terá um complemento que eles podem vender, que adiciona muitos arquivos .m específicos do domínio para você. Não é barato, mas funciona e ele fará o trabalho sem reclamar.

O Octave sempre mostra suas raízes de código aberto e informações que querem ser livres. É gratuito e lembrará que é gratuito em todas as oportunidades. Foi desenvolvido por voluntários que odeiam o Windows com paixão. Portanto, o Octave é executado no Windows a contragosto. É bastante surpreendente que existam tantos recursos do MATLAB quanto eles.

Mas aqui está o problema. Sempre que você tenta fazer algo mais do que trivialmente complexo, o Octave repentinamente quebra de maneiras sutis e difíceis de entender. Ops - o driver do terminal teve um transbordamento em algum lugar profundo da camada OpenGL. Você não pode imprimir. Opa - os gráficos das figuras fazem coisas estranhas com suas fontes. Boa sorte para descobrir o porquê. Ops - existe alguma dependência oculta entre o Octave e outro software obscuro, para que não seja compilado. Boa sorte para descobrir qual é.

E a resposta da oitava é ei! É software livre! Você tem todo o código fonte, você pode corrigir todos esses erros! Talvez se eu tivesse tempo e recursos infinitos em minhas mãos, pudesse gastar todo o meu tempo corrigindo erros no software livre, mas pessoalmente não. Se eu trabalhasse na academia, eu poderia.

Portanto, no cerne, a questão de escolher MATLAB ou Octave se resume a uma pergunta. Curiosamente, essa pergunta é sempre a mesma, ao escolher entre variantes de software comercial versus variantes de software livre.

E a questão é:

Você tem mais dinheiro que tempo?

johnwbyrd
fonte
2
Outra pergunta é: o que as empresas onde você pode acabar trabalhando usam? Provavelmente Matlab pelas mesmas razões.
user276648
14

O Octave é basicamente uma versão de código aberto do MATLAB. Foi escrito para ser exatamente isso. O MATLAB possui uma interface gráfica muito agradável, o que facilita um pouco o uso, mas a próxima versão estável do OCTAVE também terá uma interface gráfica, que testei na versão instável, e que parece fantástica. O Octave é muito mais complicado porque foi desenvolvido e mantido por um grupo de voluntários, onde o desenvolvimento do MATLAB é financiado por milhões de dólares pela indústria. Ainda sou estudante e estou usando uma versão do MATLAB para estudantes, mas estou pensando em ir para o Octave assim que a versão estável com a GUI for lançada.

O MATLAB é provavelmente muito mais poderoso que o Octave, e os algoritmos são mais rápidos, mas para a maioria dos aplicativos, o Octave é mais do que adequado e é, na minha opinião, uma ferramenta incrível que é totalmente gratuita, onde o Octave é totalmente gratuito.

Eu diria que use o MATLAB enquanto você pode usar a versão acadêmica, mas a mudança para o Octave deve ser perfeita, pois eles usam exatamente a mesma sintaxe.

Por fim, há a questão do SIMULINK. Se você deseja fazer simulação ou controlar o design do sistema (provavelmente existem um milhão de outros usos), o SIMULINK é fantástico e vem com o MATLAB. Eu não acho que nenhum outro se aproxime disso, embora o Scilab seja aparentemente uma alternativa 'boa' de código aberto, eu não tentei.

Paz.

Jonny
fonte
"... porque foi desenvolvido e mantido por um grupo de voluntários, onde o desenvolvimento do MATLAB é financiado por milhões de dólares pela indústria". Quantidade de dinheiro em um projeto não é a causalidade da qualidade e livre de bugs. A deles talvez nem seja uma correlação.
Gagarine
"eles usam exatamente a mesma sintaxe" Não, eles não.
Cris Luengo
8

Eu apenas comecei a usar o Octave. E já vi pessoas usarem o Matlab. E uma grande diferença, como mencionado acima, é que o Octave possui uma interface de linha de comando e o Matlab possui uma GUI. Segundo eu, ter uma GUI é muito bom para depuração. No Ocatve, você precisa executar comandos para ver qual é o comprimento de uma matriz, etc., mas no Matlab ele mostra bem tudo usando uma boa interface. Mas o Octave é gratuito e bom para as tarefas básicas que eu faço. Se você tem certeza de que fará apenas coisas básicas ou não tem certeza do que precisa agora, vá para o Octave. Você pode pagar pelo Matlab quando realmente sentir necessidade.

sachinr
fonte
2
O Octave possui uma GUI atualmente em beta. Use o comando --force-gui ao executar a oitava.
precisa saber é o seguinte
6
... e a partir da versão 4 do Octave, a GUI é a interface do usuário padrão.
Ruslan #
7

O que torna o Matlab tão popular e especial são suas excelentes caixas de ferramentas em diferentes disciplinas. Como seu principal objetivo é aprender Matlab, não haverá diferença se você trabalha com Octave ou Matlab!

Ir e comprar Matlab sem nenhuma caixa de ferramentas legal (que depende basicamente do seu diploma) não é realmente uma despesa razoável!

Definitivamente, você pode começar bem com o Octave e seguir vários tutoriais sobre o Matlab na Internet.

user702846
fonte
4

Não há muito que gostaria de acrescentar à resposta de Rody Oldenhuis. Normalmente, sigo a estratégia de que todas as funções que escrevo devem executar no Matlab.

Testei algumas funções específicas nos dois sistemas, para os seguintes casos de uso:

a) a oitava não precisa de um servidor de licenças - por exemplo, se sua instituição não suportar licenças locais. Eu o usei uma vez em uma situação em que o sistema em que usei um script não tinha conexão com a Internet e funcionava por muito tempo (em um canto do laboratório) e usado por muitos usuários diferentes. Observação: não se trata do custo da licença, mas dos problemas técnicos relacionados.

b) O Octave suporta outras plataformas, por exemplo, o Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - que pode ser útil.

Alexander Kemp
fonte
3

Funções e fechamentos aninhados agora são suportados por vários idiomas, incluindo MATLAB. JavaScript promove fechamentos como um princípio de design de primeira classe.

Infelizmente, o Octave não suporta fechamentos (funções aninhadas com escopo lexical).

De acordo com http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html, pode-se até ter a impressão de que os desenvolvedores não querem ou são incapazes de acertar.

Isso quebrará muito código, nos dois sentidos. Nenhuma solução alternativa.

Wolfgang Kuehn
fonte
Não tenho mais certeza de que isso seja preciso. Funções aninhadas são implementadas no Octave, e eu as achei mais versáteis que as do Matlab: por exemplo, ser capaz de declarar funções (que não sejam lambdas) dentro de um script, o que não foi possível com o Matlab na última vez que o experimentei.
MayeulC
@MayeulC A parte mais versátil, na verdade, funciona nos dois sentidos.
Wolfgang Kuehn
0

Oitava e Matlab têm muitas semelhanças. Mas o Octave é uma interface de linha de comando. Você deve digitar cada comando no prompt de comando, enquanto o matlab vem com a melhor GUI. Eu recomendo que você use a versão do aluno do matlab; depois de aprender lições básicas, use o gnu octave permentaly. Agora o gnu oitava vem com o gui, mas agora é uma versão de desenvolvimento. Existem algumas interfaces gráficas para a oitava do gnu, como guioctave, xoctave (não grátis), DomainMath IDE, etc.

vinu kn
fonte
2
A versão de desenvolvimento do oitava (3.7.5 para ser) vem com uma interface gráfica nativa, que parece bastante legal!
precisa saber é o seguinte