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.
Respostas:
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:
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 :)
fonte
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.
fonte
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?
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte
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.
fonte