Czy można używać Octave do nauki programowania MATLAB?

23

Chcę nauczyć się programowania MATLAB, abym mógł samodzielnie przeprowadzać badania / analizy, a także uczyć się / modyfikować niektóre skrypty MATLAB, które znalazłem online itp.

Problem polega jednak na tym, że nie stać mnie na MATLAB. Z tego, co słyszałem, GNU Octave jest w pełni kompatybilny z MATLAB. Wyzwaniem związanym z Octave jest to, że dokumentacja jest bardzo rzadka.

Tak więc MATLAB z jednej strony jest wyjątkowo drogi (-ve), ale ma wiele dobrej dokumentacji, samouczków i skryptów online (+), podczas gdy Octave jest darmowy (jak w piwie), chociaż (co zrozumiałe) brakuje kompleksowej dokumentacji itp. .

Zastanawiam się nad pobraniem i zainstalowaniem Octave, ale używając dokumentacji MATLAB (i skryptów), aby mi pomóc. Wiem, że istnieją pewne różnice między Octave i MATLAB - próbuję to ustalić, czy różnice są wystarczająco duże, aby udaremnić moje wysiłki (skutecznego) „uczenia się MATLAB za pomocą Octave”.

Wszelkie konstruktywne opinie są mile widziane.

Homunculus Reticulli
źródło
3
Witaj, Homunculus. Mamy mniej niż dwa miesiące i nie mamy jeszcze wielu tagów. Dodałem dla ciebie tag oktawy.
David Ketcheson
Inną opcją, jeśli Twoim celem jest po prostu użycie oprogramowania obliczeniowego do użytku osobistego, jest Mathematica. Pełna pełna wersja jest dostępna do użytku osobistego za mniej niż 300 USD. Nie wiem, czy to mieści się w twoim budżecie, czy nie. Ale za to, co się za to dostaje (ta sama wersja co pełna wersja komercyjna), warto pomyśleć. Uwaga: jeśli jesteś studentem, Matlab i Mathematica są również dostępne dla studentów za mniej więcej tę samą cenę.
Nasser
1
Jednym słowem tak. Różnice między językami są niewielkie. Dokumentacja dla Matlaba jest dostępna bezpłatnie w Internecie na stronie Mathworks.com (twórcy Matlaba). Główną rzeczą, za którą tęsknisz, jest GUI Matlaba. Trudno znaleźć dobry GUI dla Octave. Wersja rozwojowa Octave ma GUI, ale jest trudna do zainstalowania. Zainstalowałem QtOctave, który dostałem na outsch.org/2011/01/29/qtoctave-0-10-1-for-windows . Działa OK, ale zawsze pojawia się komunikat o błędzie podczas uruchamiania i nie mogę zakończyć procesu bez całkowitego zabicia Octave. Używam Notepad ++ ...
Stefan Smith,
... zamiast edytora QtOctave i wydaje się, że działa lepiej. Inną rzeczą, różnice między Octave i Matlab, takie jakie są, są szeroko udokumentowane na bezpłatnych stronach internetowych.
Stefan Smith
Ponieważ nie mam wystarczającej reputacji, aby móc komentować, chciałbym dodać, że stwierdzenie w przyjętej odpowiedzi: „Oczywiście istnieją funkcje MATLAB (szczególnie w zestawach narzędzi, ale Octave ich nie ma)” jest całkowicie źle. Octave ma bogaty zestaw pakietów w Octave-forge, które obejmują każdą funkcję pakietu Matlaba, jakiej kiedykolwiek potrzebowałem (pracuję w przetwarzaniu i optymalizacji obrazów medycznych i potrzebuję sporo zestawów narzędzi / pakietów). Również Akceptowane odpowiedź nie rozwiązuje poważny problem, którym jest brak kodu gdy pisze pytający będzie wykorzystywane przez laboratoria lub Indivi
barnhillec

Odpowiedzi:

24

Oświadczenie: Czasami denerwuję się, gdy ktoś próbuje mi powiedzieć, co według mnie powinienem zrobić, zamiast odpowiadać na zadane pytanie. Ale zaryzykuję i zasugeruję alternatywę dla ciebie.

Sugerowałbym spojrzenie na naukowe pakiety komputerowe Pythona: numpy , matplotlib i scipy . Razem zapewniają one większość podstawowej funkcjonalności MATLAB (w niektórych przypadkach dają więcej niż MATLAB). Są bezpłatne i mają otwarte oprogramowanie, a obecnie mogą mieć szerszą bazę użytkowników niż Octave. Duża część naukowej infrastruktury komputerowej w Pythonie jest obsługiwana przez Enthought Inc. , i zaleciłbym zainstalowanie ich bezpłatnej dystrybucji Enthought Python Distribution , która obejmuje wszystkie trzy wymienione przeze mnie pakiety i więcej.

Oczywiście istnieją funkcje MATLAB (szczególnie w przybornikach, ale Octave ich nie ma), których brakuje w Pythonie. Ale używam Pythona w połączeniu z językami niższego poziomu przez większość mojej pracy i pozwala mi programować w języku prawie tak wygodnym jak MATLAB, interfejs z wieloma przydatnymi pakietami, których MATLAB nie ma, i uruchamiać ten sam łatwy do odczytania kod na superkomputerze.

Edycja : możesz także wypróbować dystrybucję Anaconda Python z Continuum Analytics. Jest darmowa wersja, która zawiera wszystkie powyższe pakiety i wiele więcej.

David Ketcheson
źródło
7
Zależy to od tego, czy Homunculus chce się uczyć MATLAB, ponieważ konkretnie musi uczyć się MATLAB (na przykład do pracy), czy też chce nauczyć się MATLAB do wykonywania obliczeń naukowych, w takim przypadku Python może być lepszym wyborem ze względu na ograniczenia finansowe.
Geoff Oxberry
3
@DavidKetcheson: Właściwie używam numpy i matplotlib (ponieważ znam Python). Jednak ciągle napotykam wiele kodów MATLAB, dlatego chciałbym móc uczyć się na podstawie dostępnych skryptów MATLAB itp. (Bez konieczności płacenia za licencję). Poza tym zawsze dobrze jest mieć programowanie MATLAB jako dodatkowe pióro w mojej czapce - dlatego myślałem o nauce MATLAB przez backdoor (używając Octave).
Homunculus Reticulli
Tutaj +1 dla Pythona, to także prawdziwy język programowania :) Chociaż powinienem powiedzieć, że zacząłem od nauki MATLAB.
boyfarrell
Octave to klon Matlaba z bezpłatną licencją. Jego składnia językowa jest prawie w pełni kompatybilna. Python rozwiązuje zupełnie inny problem niż Matlab i Octave. Jego składnia jest znacznie bardziej skomplikowana i pełna, ponieważ język jest bardziej wszechstronny. Do prototypowania systemów liniowych użyłbyś Matlaba lub Octave'a, a następnie do wdrożenia gotowego do produkcji oprogramowania migrowałbyś do Pythona / Java. Przed przejściem z Matlaba na Python lub R powinieneś zrozumieć, w co się pakujesz.
FistOfFury,
@FistOfFury Używam czystego języka Python3 dla systemów liniowych. W przypadku oprogramowania gotowego do produkcji zwykle wybierasz C / Fortran lub wbudowany.
percusse
17

GNU Octave jest „w większości kompatybilny z Matlab”, niektóre subtelności oznaczają, że nie wszystkie skrypty są przenośne od MATLAB do Octave.

Warto przeczytać dokumentację dotyczącą języka i / lub uwag dotyczących zgodności w często zadawanych pytaniach lub w wikibooks . Istnieją również notatki dotyczące przenoszenia .

Istnieją pakiety podobne do zestawów narzędzi MATLAB, ale musisz je sprawdzić, aby dowiedzieć się, jak są podobne. Są też próby skryptów konwersji, które zajmują się różnicami między dwoma językami, ale o ile wiem, żaden nie jest doskonały.

Gareth A. Lloyd
źródło
12

Tak, możesz nauczyć się MATLAB poprzez Octave. Ale składnia Octave jest mniej restrykcyjna i bardziej zgodna z nowoczesnymi językami skryptowymi. MATLAB wydaje się pod tym względem opóźniony. Zobacz ten link wiki Programowanie MATLAB / Różnice między Octave a MATLAB

Kolejną dużą różnicą dla mnie była dostępność niektórych bibliotek dla MATLAB, ale nie dla Octave.

Kolejka praktykantów
źródło
9

Jeśli chodzi o ogólną naukę programowania w języku M i działanie MATLAB, tak, Octave jest w porządku. Jeśli potrzebujesz konkretnego przybornika w ramach swojej pracy i nikt nie wdrożył jego darmowej wersji, to nie masz szczęścia.

Edycja MATLAB dla studentów nie jest taka droga. Jeśli jesteś na uniwersytecie, możliwe jest, że mają licencję na witrynę. Powinieneś spojrzeć na obie możliwości.

Bill Barth
źródło
7

W przeszłości używałem Octave i MATLAB zamiennie na tych samych fragmentach kodu; Nie miałem problemów z kompatybilnością. Główne różnice, o ile mi wiadomo, to:

  1. MATLAB może być kompilowany bajtowo i jest nieco szybszy.
  2. Octave może używać albo #czy %w odniesieniu do uwag, tylko Matlab zastosowań%
  3. Oktawa produkuje znacznie lepsze wykresy.
Dan
źródło
1
Chciałbym usłyszeć, w jakim zakresie Octave produkuje znacznie lepsze wykresy (nie że szczególnie podoba mi się wykresy MATLAB ...).
Dirk
Octave używa gnuplot jako backendu. Być może bardziej podoba mi się wygląd gnuplot. Jedyne, co mogę wymyślić, to to, że nie muszę robić nic specjalnego, aby uzyskać antyaliasing; jest automatycznie włączony.
Dan
1
Moje doświadczenia z kreśleniem Octave były mieszane i po nauczeniu się czegoś z MATLAB jakość grafiki, którą z tego czerpię, jest teraz bardzo dobra. Może masz jakieś przykłady, w których Octave przewyższa Matab pod tym względem? Aso, skompilowane bajtowo? Mówisz o koderze MATLAB? Nie możesz po prostu wprowadzić dowolnego kodu MATLAB do tego narzędzia, a jeśli sobie przypomnę, jest to również dość drogie narzędzie, z pewnością niedostępne w wersji licencjonowanej dla studentów.
Reid.Atcheson
Ups, rozumiem, co masz na myśli mówiąc o kompilacji. Moja wina.
Reid.Atcheson
Przykro mi, ale co to znaczy Matlab można skompilować bajtowo?
user17915
6

Jest to rzeczywiście możliwe, szczególnie jeśli używasz GUI, takiego jak GUIOctave . Innym językiem, który może okazać się przydatny, ponieważ napisano dla niego wiele pakietów, jest R. Istnieje również GUI dla języka R, zwane RStudio, oraz dokument tłumaczenia między R i MatLab .

Jean-Victor Côté
źródło
5

Jeśli chodzi o twoje pytanie:
powiedziałbym tak. Po prostu dlatego, że paradygmaty i zasady są takie same. Różnice w składni są pomijalne i można je streścić w ściągawce (na wypadek, gdybyś pracował głównie z MATLABEM).


Kolejna sugestia dla alternatywy:
Jako alternatywę MATLAB używam SciLab . Jest darmowy, ponieważ Octave, ma przyzwoitą społeczność zapewniającą pomoc i wsparcie, a jego dokumentacja jest całkiem dobra. Wbudowana dokumentacja i pomoc dla funkcji jest podobna do tej w MATLAB. (Najbardziej podoba mi się możliwość wykonywania przykładów jednym kliknięciem). Składnia jest również podobna do MATLAB.

Jeśli chodzi o podobieństwa i różnice między SciLab i MATLAB, ten dokument może być dla Ciebie interesujący: Wprowadzenie do Scilab z punktu widzenia użytkownika Matlab, Eike Rietsch, maj 2010 (PDF) .

Kolejny plus dla SciLab nad MATLAB: Uruchomienie i GUI jest znacznie szybszy. Nie próbowałem jeszcze Octave.

Torbjörn
źródło
1
Nie jestem fanem Scilab, moje pierwsze wrażenie było takie, że było wiele małych różnic w składni i podstawowych funkcjach (w stosunku do Matlaba), ale żadna z tych okropnych rzeczy, które Python musi zrekompensować niezgodnością.
mdaoust
Hm ... zgodnie z twoim komentarzem i odpowiedzią Davida Ketchesona wydaje się, że naprawdę warto wypróbować Pythona.
Torbjörn
5

Praktyczny przykład:

Korzystam z MATLAB w pracy, aw zeszłym semestrze wziąłem udział w bezpłatnych zajęciach uczenia maszynowego online Stanforda .

Odrobiłem całą pracę domową w oktawie.

Zauważyłem tylko 2 różnice (korzystałem tylko z podstawowej funkcjonalności):

  • Oktawa jest nieco bardziej elastyczna w zakresie tego, jakie rodzaje wyrażeń można indeksować. Jeśli więc skorzystasz z tego, twój kod nie będzie przenośny.
  • W mojej instalacji wykresy pcolor () i image () nie działają dla tablic o rozsądnych rozmiarach, takich jak 1000 x 1000, małe, jak 50 x 50, działają dobrze.
mdaoust
źródło
5

Istnieją pewne subtelne różnice w interpretacji języka programowania MATLAB przez Octave. Oktawa używa „ endif” i „ endwhile” odpowiednio do zamykania ifi whileinstrukcji. Oktawa pozwala również zadeklarować funkcje w wierszu poleceń. Powinien jednak parsować wszystko, co analizuje MATLAB, więc jeśli trzymasz się języka programowania MATLAB, wszystko powinno być w porządku.

Należy pamiętać, że największe różnice między tymi dwoma programami dotyczą wbudowanych funkcji wykonujących większość numerycznych operacji podnoszenia, np. „ quad”, „ ode15s” Itp. Wszystkie te funkcje powinny być jednak dobrze udokumentowane podczas używania polecenia „ help”. Istnieją również listy mailingowe dla Octave, jeśli masz bardziej szczegółowe pytania, które nie są objęte pomocą online.

Pedro
źródło
3
Oktawa chętnie przyjmuje „koniec” na koniec obu pętli while i statemtents.
Bill Barth
4

Tak, absolutnie możesz, zrobiłem to. Duża część mocy MATLAB pochodzi jednak z niektórych niezwykle łatwych w użyciu zestawów narzędzi i wbudowanych funkcji, które mogą, ale nie muszą mieć odpowiedników w Octave.

Należy również pamiętać, że chociaż same podstawowe języki są kompatybilne (oprócz nowych funkcji OO w MATLAB), Octave ma kilka „dodatków” do składni, takich jak możliwość używania „! =” Dla NEQ, a także ma pewne alternatywne zachowania domyślne, takie jak sposób analizowania funkcji wbudowanych. Są to drobne rzeczy, które spowodują, że kod Octave nie będzie działał od razu w MATLAB, chyba że zadbałeś o to, aby nie polegać na tym zachowaniu.

MATLAB to także pełne środowisko komputerowe, a nie tylko język, który łączy się ze zoptymalizowanymi procedurami algebry liniowej. To, czego nauczysz się z Octave, zajdzie tylko tak daleko. Będziesz funkcjonować w MATLAB, jeśli będziesz biegły w Octave, ale nie będziesz tak produktywny w MATLAB, jak możesz.

Reid.Atcheson
źródło
2

Najlepszym darmowym językiem o składni podobnej do MATLAB jest Julia. Jest także szybszy i ma bardziej rozbudowany system pakietów (między innymi dlatego, że jest lepszy ...), ale składnia algebry liniowej jest prawie dokładnie taka sama (wiele algorytmów można przetłumaczyć na MATLAB, zmieniając A[i]indeksowanie na A(i)). Uważam, że to najlepszy język do nauki w tej chwili, a „przypadkowo poznasz MATLAB”, korzystając z niego.

Chris Rackauckas
źródło
0

Tak, możesz nauczyć się Matlaba za pomocą Octave. Oczywiście są pewne ograniczenia.

Octave i Matlab dzielą wiele ze swojej składni. Obie są pod tym względem wymienne. Doświadczenie w Matlabie jest bardziej bogate i przyjazne dla użytkownika, szczególnie podczas pracy z grafiką, chociaż Octave ma nowy graficzny interfejs użytkownika (GUI) w wersji beta. Oba systemy prawdopodobnie zbiegną się w miarę poprawy środowiska graficznego Octave.

Istnieje wiele bezpłatnych kursów na Coursera, które dają ci bezpłatną tymczasową licencję studencką Matlab na czas trwania kursu. Wyszukaj kursy uczenia maszynowego.

Pięść furii
źródło