Różnice między Octave a MATLAB? [Zamknięte]

272

Jestem programistą, który zna Python, Ruby i trochę C, który próbuje zdecydować, czy nauczyć się GNU Octave, czy Matlab. Wiem, że mają ze sobą wiele wspólnego , ale nie jest dla mnie jasne, jak podobna jest składnia, a nawet struktury danych. Wszyscy mówią, że są „podobni”, ale nikt nie mówi, jak bardzo są podobni. Powyższy link pokazuje kilka przykładów, w których są one podobne pod względem składniowym lub identyczne, czy to prawda dla całego języka?

Staram się uczyć języka ogólnie, aby robić więcej obliczeń naukowych, być może korzystając z niektórych bibliotek analizy obrazów. Wiem, że istnieje wiele innych języków, w których mógłbym programować, ale moi doradcy twierdzą, że znajomość MATLAB lub Octave ma kluczowe znaczenie w nauce.

Ponadto, czy Matlab jest wart kosztów? Nie mam dużo pieniędzy, ale jeśli istnieją istotne różnice w bibliotekach lub gdzie indziej, jestem pewien, że mógłbym je znaleźć.

lswim
źródło
8
Ponieważ jesteś uczniem, warto sprawdzić, czy Twoja szkoła zapewnia uczniom matlab za darmo / tanio; robią to zarówno moje studia licencjackie, jak i gradowe, co sprawia, że ​​nieco łatwiej jest zdecydować się na matlab.
Dougal
23
Tak, ale kiedy opuści uniwersytet i pójdzie do jakiegoś centrum badawczego, będzie musiał go kupić, a wtedy będzie wiedział tylko Matlaba, a nie alternatywy. Myśląc długoterminowo, jeśli chcesz zrobić karierę naukową, która wydaje się, że on chce, nie powinieneś tego ignorować. Nie wspominając już o tym, że takich licencji zwykle nie można również wykorzystywać w przypadku klastrów.
carandraug
2
Będąc studentem, powinieneś być w stanie uzyskać licencję Matlab za około 100 dolców (USD). To prawda, że ​​jeśli chcesz korzystać z innych zestawów narzędzi, są to dodatkowe 29 USD za zestaw narzędzi. Więc nie wiedząc, jakie zestawy narzędzi mogą być potrzebne / potrzebne, trudno uzasadnić koszty.
Ben A.
23
+1 Właśnie zacząłem uczyć się Octave dzisiaj, ponieważ obecnie uczę się uczenia maszynowego, a nauczyciel zalecił naukę Octave (ponieważ jest bezpłatny, ponieważ METLAB jest drogi, a ponieważ uczeń będzie znacznie bardziej produktywny, uruchamiając algorytm maszynowy przez najpierw używając Octave lub METLAB, a potem działając, a następnie przełącz się na Javę lub C ++)
Anthony
7
Radzę użyć Pythona + opencv
gukoff

Odpowiedzi:

235

Zamiast dostarczyć ci pełną listę różnic, przedstawię ci moje zdanie na ten temat.

Jeśli dokładnie przeczytasz podaną stronę wiki, często zobaczysz zdania typu „Octave obsługuje oba, podczas gdy MATLAB wymaga pierwszego” itd. To pokazuje, że programiści Octave starają się, aby składnia Octave była „lepsza” niż MATLAB.

Takie podejście sprawia, że ​​Octave całkowicie traci cel. Ideą Octave jest (lub stała , powinienem powiedzieć, patrz komentarze poniżej), aby mieć alternatywę open source, aby uruchomić kod M. Jeśli próbuje być „lepszy”, stara się być inny , co nie jest zgodne z powodami, dla których większość ludzi go używa. Z mojego doświadczenia wynika, że ​​uruchamianie rzeczy opracowanych w MATLAB-ie nigdy nie działa za jednym razem, z wyjątkiem naprawdę prostych, bardzo krótkich rzeczy - dla każdej sporej funkcji zawsze muszę tłumaczyć wiele rzeczy, zanim zadziała w Octave, jeśli nie pisz go od nowa. Jak to jest lepsze , naprawdę nie widzę ...

Ponadto, jeśli nauczysz się Octave, istnieje wiele składni dozwolonych w Octave, które nie są dozwolone w MATLAB. Znaczenie - kod napisany w Octave często nie działa w MATLAB-ie bez licznych konwersji. Nie jest również kompatybilny na odwrót!

Mógłbym kontynuować: MathWorks ma wiele zestawów narzędzi dla MATLAB, jest Simulink i powiązane z nim produkty, za które tak naprawdę nie ma odpowiednika w Octave (tak, musiałbyś za to wszystko zapłacić. Ale często twój pracodawca / szkoła i tak robi to i przynajmniej istnieje ), potwierdzona zgodność z kilkoma standardami branżowymi, narzędziami testowymi, narzędziami do sprawdzania poprawności, systemami zarządzania wymaganiami, generowaniem raportów, znacznie większą społecznością i bazą użytkowników itp. itp. MATLAB to tylko niewielka część czegoś znacznie większego. Oktawa to ... tylko Oktawa.

Moja rada:

  • Dowiedz się, czy Twoja szkoła zapłaci za MATLAB. Często będą.
  • Jeśli nie, a jeśli uda ci się zebrać pieniądze, kup MATLAB i naucz się go prawidłowo używać. Na dłuższą metę jest to lepsza decyzja.
  • Jeśli naprawdę nie możesz zdobyć pieniędzy - skorzystaj z Octave, ale naucz się składni MATLAB i unikaj składni tylko Octave. (patrz uwaga)

Dlaczego ten ostatni punkt? Ponieważ w nauce często istnieją duże bazy kodu całkowicie napisane w MATLAB. Są profesorowie, inżynierowie, studenci, profesjonalni koderzy, mnóstwo ludzi, którzy znają wszystkie misterne szczegóły MATLAB, a nie tyle Octave.

Jeśli dostaniesz nową pracę, a wszyscy w nowym biurze mówią po hiszpańsku, to trochę zarozumiałe, żądając od wszystkich, aby od tego momentu zaczęli mówić po angielsku, po prostu dlatego , że nie mówisz po hiszpańsku. To samo z MATLAB i Octave.

Uwaga - gdyby wszyscy downvoters mogli po prostu zostawić komentarz ze swoimi argumentami i powodami, dla których nie zgadzali się ze mną, byłoby świetnie :)

Uwaga: Oktawę można uruchomić w „trybie tradycyjnym” (włączając flagę --traditional podczas uruchamiania Octave), co powoduje, że daje błąd, gdy używana jest pewna składnia tylko dla Octave.

Rody Oldenhuis
źródło
25
O braku JIT został już zaimplementowany w rozwojowej wersji Octave. Nie wiem, kiedy to zostanie wydane, ale zbudowałem go, a różnica jest ogromna dla kodu pętli. Aby uniknąć składni opartej tylko na Octave, istnieje opcja --tradycyjna Octave. Nie twierdzę, że kod Matlaba zawsze działa w Octave, ale z każdą wersją jest coraz lepiej, a kompatybilność jest jednym z ich priorytetów (nie wspominając, że nawet różne wersje Matlaba mają wystarczająco dużo niezgodności między nimi).
carandraug
14
A to, co nazywacie, polega na lepszej składni ... gdybyście mieli swobodę zmiany Matlaba, dodania dodatkowej składni lub innych funkcji, prawda? Są to funkcje, które użytkownicy wdrożyli i nie psują kompatybilności. Częściej nie, dlatego nowe rzeczy są odrzucane. Chodzi o to, że język Matlab jest podzbiorem języka Octave. Jeśli uważasz, że pomysł jest niesamowity, powinieneś dołączyć, ponieważ jest to projekt społecznościowy i ma funkcje, które społeczność stara się opracować.
carandraug
19
@RodyOldenhuis to nie powinien być klon. Rozwój oktawy nie zacząć w ten sposób, to po prostu się coraz bardziej w tym kierunku popychany przez użytkowników, którzy na bieżąco łat składających dla niego sciencedirect.com/science/article/pii/S0959152412000911
carandraug
9
Czy twórca narzędzi programistycznych EVER z powodzeniem został pociągnięty do odpowiedzialności za błąd?
Martin Beckett,
6
@carandraug: ah do diabła z tym. Poprawność jest ważniejsza niż wszystko :)
Rody Oldenhuis
79

Bardziej kompletny link do listy różnic znajduje się w FAQ Octave . Teoretycznie cały kod działający w Matlabie powinien działać w Octave, a programiści Octave traktują niezgodność z Matlabem jako błędy. Tak więc odpowiedź na twoje pierwsze pytanie brzmi „tak” w teorii. Oczywiście całe oprogramowanie ma błędy, ani Octave, ani Matlab (tak, Matlab też) są przed nimi bezpieczne. Możesz je zgłosić, a ktoś spróbuje je naprawić

Octave ma również dodatkowe funkcje , większość z nich to dodatkowa składnia, która moim zdaniem sprawia, że ​​kod jest bardziej czytelny i bardziej sensowny, szczególnie jeśli jesteś przyzwyczajony do innych języków programowania.

Ale Octave to coś więcej niż tylko koszt pieniężny. Oktawa jest darmowa także w sensie wolności, jest wolna, ale nie sądzę, że jest to miejsce, w którym można narzekać na wolność oprogramowania.

Przetwarzam obrazy tylko w Octave i uważam, że pakiet obrazów odpowiada moim potrzebom. Nie wiem jednak, co będzie twoje. Więc moja odpowiedź na pytanie, czy warto, to nie, ale na pewno inni się nie zgodzą.

carandraug
źródło
23

MATLAB to przede wszystkim oferta handlowa. Dlatego wszystko w MATLAB prawie działa od razu po wyjęciu z pudełka. Wszystkie podstawowe funkcje są solidne, a jeśli pracujesz nad specjalnym projektem, MATLAB prawdopodobnie ma dodatek, który może ci sprzedać, który dodaje wiele dodatkowych plików .m specyficznych dla domeny. To nie jest tanie, ale działa i wykona pracę bez reklamacji.

Octave zawsze pokazuje swoje korzenie typu open source, które chcą informacji, aby być wolnym. Jest bezpłatny i przypomni Ci, że jest bezpłatny przy każdej okazji. Jest rozwijany przez wolontariuszy, którzy z pasją nienawidzą systemu Windows. Dlatego Octave działa niechętnie na Windowsie. To dość zaskakujące, że istnieje tyle funkcji MATLAB, co one.

Ale oto pocieranie. Za każdym razem, gdy próbujesz zrobić coś więcej niż banalnie skomplikowane, Octave nagle rozpada się na subtelne i trudne do zrozumienia sposoby. Ups - sterownik terminalu miał przepełnienie gdzieś głęboko w warstwie OpenGL. Nie możesz drukować. Ups - wykresy postaci robią dziwne rzeczy za pomocą czcionek. Powodzenia w ustaleniu przyczyny. Ups - istnieje pewna ukryta zależność między Octave a innym niejasnym kawałkiem wolnego oprogramowania, więc nie będzie się kompilował. Powodzenia w ustaleniu, która to jest.

A odpowiedź Octave jest hej! To darmowe oprogramowanie! Masz cały kod źródłowy, możesz sam naprawić wszystkie te błędy! Może gdybym miał nieskończony czas i zasoby w swoich rękach, mógłbym spędzić cały czas na naprawianiu błędów w wolnym oprogramowaniu, ale ja osobiście nie. Gdybym pracował w środowisku akademickim, mógłbym.

Zasadniczo kwestia wyboru MATLAB czy Octave sprowadza się do jednego pytania. Co ciekawe, pytanie to jest zawsze takie samo przy wyborze między wersją komercyjną a wersją wolnego oprogramowania.

Pytanie brzmi:

Czy masz więcej pieniędzy niż czasu?

johnwbyrd
źródło
2
Kolejne pytanie brzmi: z czego korzystają firmy, w których możesz zakończyć pracę? Prawdopodobnie Matlab z tych samych powodów.
user276648,
14

Octave to w zasadzie otwarta wersja MATLAB-a. Zostało tak napisane. MATLAB ma bardzo ładne GUI, które sprawia, że ​​jest nieco łatwiejszy w użyciu, ale następne stabilne wydanie OCTAVE będzie również miało GUI, które przetestowałem w niestabilnej wersji i wygląda fantastycznie. Oktawa jest znacznie bardziej wadliwa, ponieważ została opracowana i utrzymywana przez grupę wolontariuszy, a rozwój MATLAB-u jest finansowany przez miliony dolarów przez przemysł. Nadal jestem studentem i używam studenckiej wersji MATLAB, ale myślę o przejściu do Octave po wydaniu stabilnej wersji z GUI.

MATLAB jest prawdopodobnie znacznie potężniejszy niż Octave, a algorytmy działają szybciej, ale dla większości aplikacji Octave jest więcej niż wystarczający i, moim zdaniem, jest niesamowitym narzędziem, które jest całkowicie darmowe, a Octave jest całkowicie darmowe.

Powiedziałbym, że używaj MATLAB, podczas gdy możesz używać wersji akademickiej, ale przejście na Octave powinno być płynne, ponieważ używają dokładnie tej samej składni.

Wreszcie jest kwestia SIMULINK. Jeśli chcesz wykonać symulację lub zaprojektować system sterowania (prawdopodobnie jest to milion innych zastosowań) SIMULINK jest fantastyczny i jest wyposażony w MATLAB. Nie wydaje mi się, żeby ktokolwiek się do tego zbliżył, chociaż Scilab jest najwyraźniej „dobrą” alternatywą open source, ale nie próbowałem tego.

Pokój.

Jonny
źródło
„... ponieważ został opracowany i utrzymywany przez grupę wolontariuszy, a rozwój MATLAB-u jest finansowany przez miliony dolarów przez przemysł”. Kwota pieniędzy w projekcie nie jest przyczyną przyczynowości jakości i braku błędów. Być może nie jest to nawet korelacja.
gagarine
„używają dokładnie tej samej składni” Nie, nie używają.
Cris Luengo,
8

Właśnie zacząłem używać Octave. I widziałem, jak ludzie używają Matlaba. Jedną z głównych różnic, jak wspomniano powyżej, jest to, że Octave ma interfejs wiersza poleceń, a Matlab ma GUI. Według mnie posiadanie GUI jest bardzo dobre do debugowania. W Ocatve musisz wykonywać polecenia, aby zobaczyć, jaka jest długość macierzy itp., Ale w Matlab ładnie pokazuje wszystko, używając dobrego interfejsu. Ale Octave jest darmowy i dobry do podstawowych zadań, które wykonuję. Jeśli jesteś pewien, że będziesz robił tylko podstawowe rzeczy lub nie jesteś pewien, czego potrzebujesz w tej chwili, wybierz Octave. Możesz zapłacić za Matlaba, kiedy naprawdę poczujesz taką potrzebę.

sachinr
źródło
2
Octave ma GUI, które jest obecnie w fazie beta. Użyj polecenia --force-gui podczas wykonywania oktawy.
ig343,
6
... i począwszy od wersji Octave 4, GUI jest domyślnym interfejsem użytkownika.
Ruslan
7

To, co sprawia, że ​​Matlab jest tak popularny i wyjątkowy, to doskonałe zestawy narzędzi w różnych dyscyplinach. Ponieważ Twoim głównym celem jest nauka Matlaba, więc nie ma nic innego, jeśli pracujesz z Octave lub Matlab!

Samo kupowanie Matlaba bez fajnego zestawu narzędzi (który w zasadzie zależy od twojego głównego) nie jest naprawdę rozsądnym wydatkiem!

Na pewno możesz zacząć od Octave i śledzić mnóstwo samouczków na temat Matlaba w Internecie.

użytkownik702846
źródło
4

Niewiele chciałbym dodać do odpowiedzi Rody'ego Oldenhuisa. Zazwyczaj kieruję się strategią, że wszystkie pisane przeze mnie funkcje powinny działać w Matlabie.

Niektóre specyficzne funkcje testuję na obu systemach dla następujących przypadków użycia:

a) oktawa nie potrzebuje serwera licencji - np. jeśli twoja instytucja nie obsługuje licencji lokalnych. Użyłem go raz w sytuacji, gdy system, na którym użyłem skryptu, nie miał połączenia z Internetem i miał działać przez bardzo długi czas (w rogu laboratorium) i był używany przez wielu różnych użytkowników. Uwaga: nie chodzi o koszt licencji, ale o związane z tym problemy techniczne.

b) Octave obsługuje inne platformy, na przykład Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) - które mogą się przydać.

Alexander Kemp
źródło
3

Zagnieżdżone funkcje i zamknięcia są teraz obsługiwane przez wiele języków, w tym MATLAB. JavaScript promuje zamknięcia jako pierwszorzędną zasadę projektowania.

Niestety Octave nie obsługuje zamknięć (funkcje zagnieżdżone z zasięgiem leksykalnym).

Zgodnie z http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html można nawet odnieść wrażenie, że programiści nie chcą lub nie są w stanie zrobić tego dobrze.

Spowoduje to uszkodzenie wielu kodów w obie strony. Brak obejścia.

Wolfgang Kuehn
źródło
Nie jestem już pewien, czy to dokładne. Funkcje zagnieżdżone są zaimplementowane w Octave i przekonałem się, że są one bardziej uniwersalne niż Matlab: na przykład możliwość deklarowania funkcji (innych niż lambdas) w skrypcie, co nie było możliwe w Matlabie przy ostatniej próbie.
MayeulC
@MayeulC Ta bardziej uniwersalna część faktycznie przecina obie strony.
Wolfgang Kuehn
0

Oktawy i matlaby mają wiele podobieństw. Ale Octave to interfejs wiersza poleceń. Musisz wpisać każde polecenie w wierszu polecenia, a matlab ma najlepsze GUI. Polecam najpierw użyć wersji studenckiej Matlab; po nauczeniu się podstawowych lekcji użyj oktawy peruwialnej. Teraz gnu oktawa jest dostarczana z GUI, ale teraz jest to wersja rozwojowa. Istnieje kilka interfejsów GUI dla oktawy gnu, takich jak guioctave, xoctave (nie za darmo), DomainMath IDE itp.

vinu kn
źródło
2
rozwojowa wersja oktawy (być może 3.7.5) jest dostarczana z natywnym GUI, które wygląda całkiem ładnie!
kjetil b halvorsen