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.
Odpowiedzi:
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.
źródło
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.
źródło
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.
źródło
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.
źródło
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:
#
czy%
w odniesieniu do uwag, tylko Matlab zastosowań%
źródło
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 .
źródło
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.
źródło
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):
źródło
Istnieją pewne subtelne różnice w interpretacji języka programowania MATLAB przez Octave. Oktawa używa „
endif
” i „endwhile
” odpowiednio do zamykaniaif
iwhile
instrukcji. 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.źródło
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.
źródło
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 naA(i)
). Uważam, że to najlepszy język do nauki w tej chwili, a „przypadkowo poznasz MATLAB”, korzystając z niego.źródło
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.
źródło