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źć.
Odpowiedzi:
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:
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 :)
źródło
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ą.
źródło
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?
źródło
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.
źródło
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ę.
źródło
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.
źródło
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ć.
źródło
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.
źródło
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.
źródło