É possível usar o Octave para aprender a programação do MATLAB?

23

Quero aprender a programação do MATLAB para que eu possa realizar algumas pesquisas / análises por conta própria e também, para que eu possa estudar / modificar alguns scripts do MATLAB que encontrei on-line etc.

No entanto, o problema é que não posso pagar pelo MATLAB. O GNU Octave, pelo que ouvi, é bastante compatível com MATLAB. O desafio do Octave, porém, é que a documentação é muito esparsa.

Portanto, o MATLAB, por um lado, é proibitivamente caro (-ve), mas possui muitas boas documentações, tutoriais e scripts on-line (+), enquanto o Octave é gratuito (como na cerveja), embora (compreensivelmente) não possua documentação abrangente, etc. .

Estou pensando em baixar e instalar o Octave, mas usando a documentação (e scripts) do MATLAB para me ajudar a seguir em frente. Estou ciente de que existem algumas diferenças entre o Octave e o MATLAB - o que estou tentando descobrir é se as diferenças são grandes o suficiente para frustrar meus esforços para (efetivamente) "aprender o MATLAB usando o Octave".

Qualquer feedback construtivo é bem-vindo.

Homunculus Reticulli
fonte
3
Bem-vindo, Homúnculo. Temos menos de dois meses e ainda não temos muitas tags. Adicionei a tag oitava para você.
David Ketcheson
Outra opção, se seu objetivo é apenas usar um software computacional para seu uso pessoal, é o Mathematica. A versão completa está disponível para uso pessoal por menos de US $ 300. Não sei se isso está dentro do seu orçamento ou não. Mas para o que se ganha com isso (mesma versão que a versão comercial completa), vale a pena, eu acho. nota: Se você é aluno, o Matlab e o Mathematica também estão disponíveis para os alunos pelo mesmo preço.
Nasser
1
Em uma palavra, sim. As diferenças entre os idiomas são bem pequenas. A documentação do Matlab está disponível gratuitamente na Internet, no site Mathworks.com (os fabricantes do Matlab). A principal coisa que você sentirá falta é a GUI do Matlab. É difícil encontrar uma boa interface gráfica para o Octave. A versão de desenvolvimento do Octave possui uma GUI, mas é difícil de instalar. Instalei o QtOctave, obtido em outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Funciona bem, exceto que sempre há uma mensagem de erro na inicialização e não consigo finalizar um processo sem matar o Octave por completo. Eu uso o Notepad ++ ...
Stefan Smith
... em vez do editor do QtOctave, e parece funcionar melhor. Outra coisa, as diferenças entre o Octave e o Matlab, como elas são, são amplamente documentadas em sites gratuitos.
27613 Stefan Smith
Como não tenho reputação suficiente para comentar, gostaria de acrescentar que uma declaração na resposta aceita: "É claro que existem recursos do MATLAB (principalmente nas caixas de ferramentas, mas o Octave não os possui)" é completamente errado. O Octave possui um rico conjunto de pacotes no Octave-forge que inclui todas as funções de pacotes do Matlab que eu já precisei (trabalho no processamento e otimização de imagens para imagens médicas e preciso de algumas caixas de ferramentas / pacotes). Além disso, a resposta aceita não aborda uma questão importante, que é que nenhum código as gravações questionador será utilizável por laboratórios ou indivi
barnhillec

Respostas:

24

Isenção de responsabilidade: Às vezes fico irritado quando alguém tenta me dizer o que acha que devo fazer, em vez de responder à pergunta que fiz. Mas vou correr um risco e sugerir uma alternativa para você.

Eu sugeriria examinar os pacotes de computação científica do Python: numpy , matplotlib e scipy . Juntos, eles fornecem a maioria das principais funcionalidades do MATLAB (em alguns casos, eles fornecem mais do que o MATLAB). Eles são gratuitos e de código aberto, e atualmente podem ter uma base de usuários mais ampla que o Octave. Grande parte da infraestrutura de computação científica em Python é suportada pela Enthought Inc. , e eu recomendaria que você instale a distribuição gratuita do Enthought Python , que inclui todos os três pacotes mencionados acima e muito mais.

Obviamente, existem recursos do MATLAB (particularmente nas caixas de ferramentas, mas o Octave não os possui) que o Python não possui. Mas eu uso o Python em combinação com linguagens de nível inferior na maior parte do meu trabalho, e isso permite que eu programe em uma linguagem quase tão conveniente quanto o MATLAB, faça interface com uma série de pacotes úteis que o MATLAB não possui e execute o mesmo código de fácil leitura em um supercomputador.

Editar : você também pode tentar a distribuição Anaconda Python do Continuum Analytics. Existe uma versão gratuita que inclui todos os pacotes acima e muito mais.

David Ketcheson
fonte
7
Depende se o Homunculus deseja aprender o MATLAB porque eles precisam especificamente aprender o MATLAB (por exemplo, para um emprego) ou se querem aprender o MATLAB a fazer computação científica, caso em que o Python pode ser uma escolha melhor, devido às restrições financeiras.
precisa saber é o seguinte
3
@ DavidKetcheson: Na verdade, estou usando numpy e matplotlib (já que estou familiarizado com Python). No entanto, continuo seguindo um monte de código do MATLAB, então gostaria de poder aprender com os scripts disponíveis do MATLAB, etc. (sem ter que pagar a taxa de licença). Além de sempre ser bom ter a programação do MATLAB como uma pena extra, é por isso que eu estava pensando em aprender o MATLAB pela porta dos fundos (usando o Octave).
Homunculus Reticulli
+1 para Python aqui, também é uma linguagem de programação real :) Embora eu deva dizer que comecei aprendendo MATLAB.
boyfarrell
O Octave é um clone do Matlab com licença gratuita. Sua sintaxe de idioma é quase totalmente compatível. Python resolve um problema muito diferente do Matlab e Octave. Sua sintaxe é muito mais complicada e detalhada, porque a linguagem é mais versátil. Para a criação de protótipos de sistemas lineares, você usaria o Matlab ou o Octave e, para implementar o software pronto para produção, migraria para python / Java. Antes de mudar do Matlab para o Python ou o R, você deve entender no que está se metendo.
FistOfFury
@FistOfFury Eu uso Python3 puro para sistemas lineares. Para software pronto para produção, você geralmente usa C / Fortran ou incorporado.
percusse
17

O GNU Octave é "compatível principalmente com o Matlab", certas sutilezas significam que nem todos os scripts são portáveis ​​do MATLAB para o Octave.

Vale a pena ler a documentação do idioma e / ou notas de compatibilidade nas Perguntas frequentes ou nos wikilivros . Também existem notas de portabilidade .

Existem pacotes semelhantes às caixas de ferramentas MATLAB, mas você precisará vê-los para descobrir como eles são semelhantes. Também há tentativas de scripts de conversão que resolvem as diferenças entre os dois idiomas, mas que eu saiba, nenhum é perfeito.

Gareth A. Lloyd
fonte
12

Sim, você pode aprender MATLAB via Octave. Mas a sintaxe do Octave é menos restritiva e mais alinhada com as linguagens de script modernas. O MATLAB parece atrasado nesse aspecto. Veja este link wiki MATLAB Programação / Diferenças entre Octave e MATLAB

Outra grande diferença para mim foi a disponibilidade de determinadas bibliotecas para o MATLAB, mas não para o Octave.

Fila de Aprendizes
fonte
9

Para aprender geralmente a programação em linguagem M e como o MATLAB funciona, sim, o Octave está bem. Porém, se você precisar de uma caixa de ferramentas específica como parte do seu trabalho, e ninguém implementou uma versão gratuita dela, estará sem sorte.

Uma edição para estudantes do MATLAB não é tão cara. Se você estiver em uma universidade, é possível que eles tenham uma licença de site. Você deve examinar as duas possibilidades.

Bill Barth
fonte
7

Eu usei Octave e MATLAB de forma intercambiável nos mesmos trechos de código no passado; Não tive problemas com a compatibilidade. As principais diferenças, tanto quanto eu posso dizer, são:

  1. O MATLAB pode ser compilado em bytes e é um pouco mais rápido.
  2. O Octave pode usar um #ou mais %comentários, o Matlab usa apenas%
  3. Oitava produz gráficos muito melhores.
Dan
fonte
1
Eu gostaria de ouvir, em que sentido o Octave produz tramas muito melhores (não que eu particularmente goste das tramas do MATLAB ...).
Dirk
O Octave usa o gnuplot como back-end. Pode ser que eu goste mais do gnuplot. A única coisa específica em que consigo pensar é que não preciso fazer nada de especial para obter o antialiasing; é ativado automaticamente.
Dan
1
Minha experiência com a plotagem do Octave foi mista e, depois de aprender uma coisa ou duas com o MATLAB, a qualidade dos gráficos que obtive agora é muito boa. Talvez você tenha alguns exemplos em que o Octave supera o Matab para isso? Então, compilado por byte? Você está falando sobre o codificador MATLAB? Você não pode simplesmente inserir código arbitrário do MATLAB nessa ferramenta e, se bem me lembro, é uma ferramenta bastante cara, certamente não está disponível em uma versão licenciada para estudantes.
usar o seguinte código
Opa, entendo o que você quer dizer com a compilação. Minha culpa.
precisa saber é o seguinte
Sinto muito, mas o que significa Matlab pode ser compilado em bytes?
user17915
6

É realmente possível, especialmente se você usar uma GUI, como GUIOctave . Outro idioma que você pode achar útil porque muitos pacotes foram escritos para ele é o R. Há também uma GUI para o idioma R, chamada RStudio, e um documento de tradução entre o R e o MatLab .

Jean-Victor Côté
fonte
5

Em relação à sua pergunta:
eu diria que sim. Simplesmente porque os paradigmas e princípios são os mesmos. As diferenças na sintaxe são desprezíveis e podem ser resumidas em uma folha de dicas (caso você esteja trabalhando principalmente com o MATLAB um dia).


Outra sugestão para uma alternativa:
Como alternativa ao MATLAB, estou usando o SciLab . É gratuito como Octave, tem uma comunidade decente fornecendo ajuda e suporte e sua documentação é muito boa. A documentação incorporada e a ajuda para funções são semelhantes à do MATLAB. (O que eu mais gosto é a capacidade de executar os exemplos com um clique). A sintaxe também é semelhante ao MATLAB.

Com relação às semelhanças e diferenças entre o SciLab e o MATLAB, este documento pode ser do seu interesse: Uma introdução ao Scilab do ponto de vista do usuário do Matlab, Eike Rietsch, maio de 2010 (PDF) .

Outra vantagem do SciLab sobre o MATLAB: a inicialização e a GUI são muito mais rápidas. Ainda não experimentei o Octave.

Torbjörn
fonte
1
Não sou fã do Scilab, minha primeira impressão foi que havia muitas pequenas diferenças na sintaxe e nas funções básicas (relativas ao Matlab), mas nenhuma das impressionantes que o python tem para compensar a incompatibilidade.
mdaoust
Hm ... de acordo com o seu comentário e David Ketcheson responder, parece realmente valer a pena experimentar o Python.
Torbjörn 26/01
5

Exemplo prático:

Eu uso o MATLAB no trabalho e tirei o Stanford's aula gratuita de aprendizado de máquina on-line de no semestre passado.

Eu fiz todo o dever de casa na oitava.

Eu só notei duas diferenças (eu estava usando apenas a funcionalidade principal):

  • A oitava é um pouco mais flexível sobre que tipos de expressões podem ser indexadas. Portanto, se você tirar proveito disso, seu código não será portátil.
  • Na minha instalação, os gráficos pcolor () e image () não funcionam para matrizes de tamanho razoável, como 1000x1000, pequenas, como 50x50, funcionam bem.
mdaoust
fonte
5

Existem algumas diferenças sutis na interpretação do Octave da linguagem de programação do MATLAB. O Octave usa " endif" e " endwhile" para fechar ifewhile instruções respectivamente. Oitava também permite que você declare funções na linha de comando. No entanto, ele deve analisar tudo o que o MATLAB analisa também; portanto, se você se ater à linguagem de programação do MATLAB, deverá ficar bem.

Esteja ciente de que as maiores diferenças entre os dois programas estão nas funções internas que fazem a maior parte do trabalho pesado numérico, por exemplo, " quad", " ode15s" e outras. Todas essas funções, no entanto, devem ser bem documentadas ao usar o helpcomando " ". Também existem listas de discussão para o Octave, caso você tenha perguntas mais específicas que não são cobertas pela ajuda online.

Pedro
fonte
3
Oitava é mais do que feliz em aceitar "fim" para o final de ambos os loops while e if statemtents.
Bill Barth
4

Sim, você absolutamente pode, eu fiz. Grande parte da energia do MATLAB, no entanto, vem com algumas de suas caixas de ferramentas e componentes extremamente fáceis de usar, que podem ou não ter equivalentes no Octave.

Lembre-se também de que, embora os próprios idiomas base sejam compatíveis (exceto os recursos OO do MATLAB), o Octave possui algumas 'adições' à sintaxe, como poder usar "! =" Para o NEQ e também possui alguns comportamentos padrão alternativos, como a análise de funções embutidas. Essas são pequenas coisas que farão com que o código do Octave não seja executado no MATLAB logo de cara, a menos que você tenha cuidado para evitar confiar nesse comportamento.

O MATLAB também é um ambiente de computação completo, e não apenas uma linguagem que faz interface com rotinas de álgebra linear otimizadas. Portanto, o que você aprendeu com o Oitava só vai tão longe. Você será funcional no MATLAB se tiver proficiência no Octave, mas não será tão produtivo com o MATLAB quanto poderia.

Reid.Atcheson
fonte
2

A melhor linguagem livre com sintaxe semelhante ao MATLAB é a Julia. Também é mais rápido e possui um sistema de pacotes mais extenso (entre outras razões pelas quais é melhor ...), mas a sintaxe da álgebra linear é quase exatamente a mesma (muitos algoritmos que você pode traduzir para o MATLAB alterando A[i]para indexar para A(i)). Acredito que seja o melhor idioma para aprender agora, e você "conhecerá acidentalmente o MATLAB" apenas usando-o.

Chris Rackauckas
fonte
0

Sim, você pode aprender Matlab usando o Octave. Claro que existem algumas limitações.

Oitava e Matlab compartilham grande parte de sua sintaxe. Os dois são intercambiáveis ​​nesse sentido. A experiência no Matlab é mais rica e fácil de usar, principalmente ao trabalhar com gráficos, embora o Octave tenha uma nova interface gráfica de usuário (GUI) que está na versão beta. Os dois sistemas provavelmente convergirão ainda mais à medida que o ambiente gráfico do Octave for aprimorado.

Existem muitos cursos gratuitos no Coursera que oferecem uma licença temporária gratuita para estudantes do Matlab durante a duração do curso. Pesquise cursos de aprendizado de máquina.

FistOfFury
fonte