Nazwa programu pochodzi odangielskich słówMATrix LABoratory, gdyż początkowo program ten był przeznaczony donumerycznych obliczeńmacierzowych. Obecnie program ten potrafi znacznie więcej, cechuje go duża liczba funkcji bibliotecznych oraz duże możliwości rozbudowy przez użytkownika za pomocą pisania własnych funkcji. Posiada on swójjęzyk programowania, co umożliwia pisanie w pełni funkcjonalnych programów działających w środowisku Matlaba.
W zakresiegrafiki MATLAB umożliwia rysowanie dwu i trójwymiarowychwykresów funkcji orazwizualizację wyników obliczeń w postaci rysunków statycznych ianimacji. Możliwe jest pobieranie danych pomiarowych z urządzenia zewnętrznego przezporty w celu ich obróbki. Wszystko to powoduje, że program ten znajduje bardzo szerokie zastosowanie[2].
Prapoczątki programu MATLAB sięgają lat siedemdziesiątych, gdy wUSA na zlecenie National Science Foundation powstałybiblioteki językaFortran do obliczeń macierzowych:Linpack i Eispack. Jeden z autorów tych bibliotek, Cleve Moler prowadził zajęcia zalgebry liniowej na Uniwersytecie stanuNowy Meksyk. Chcąc ułatwić życie swoim studentom napisał on w 1980 r. program, który umożliwiał korzystanie z tych bibliotek bez potrzeby programowania w Fortranie. Program ten napisany (także w Fortranie) w formie prostego interaktywnego języka poleceń i rozprowadzany na zasadachpublic domain był pierwowzorem programu MATLAB.
W 1983 C. Moler oraz S. Bangert i J. Little (inżynier zUniwersytetu Stanford) postanowili rozwinąć powyższy projekt – zastąpili Fortranjęzykiem C i dodali zintegrowaną grafikę. Założyli oni firmę The MathWorks Inc., która do dziś zajmuje się rozwojem i sprzedażą pakietu Matlab. Program został pierwszy raz zaprezentowany w grudniu 1984 roku na konferencji naukowejIEEE Conference on Decision and Control w Las Vegas. Rok później pojawiła się pierwsza wersja programu dla systemuUnix.[1]
W celu zautomatyzowania pewną liczbę poleceń zwiersza poleceń możemy zapisać dopliku zrozszerzeniem *.m (stąd nazwa m-plik) i tę listę poleceń uruchomić jednym poleceniem – mówimy wówczas o m-plikuskryptowym.
Pisząc powyższą listę poleceń w postaci funkcji języka programowania otrzymujemy dodatkowo możliwość wywołań z parametrami – mówimy wówczas o m-pliku funkcyjnym. W starszych wersjach programu MATLAB w jednym pliku mogła znajdować się tylko jedna funkcja. W jednym pliku w nowszych wersjach może znajdować się wiele funkcji, przy wywołaniu m-pliku wywoływana jest pierwsza funkcja w pliku. M-pliki funkcyjne to programy działające w środowiskuMATLAB. Poniżej przykładowy m-plik generujący trójwymiarowy wykres:
Program napisany w języku C lub Fortran możemyskompilować poleceniem mex. Wynikiem kompilacji jest otrzymanie pliku dynamicznie ładowanej biblioteki współdzielonej (wMicrosoft Windows są to pliki*.dll) nazywanego mex-plikiem (skrót odMatlab EXecutable). Mex-plik można uruchomić z wiersza poleceń w oknie programu MATLAB tak jak zwykły m-plik.
Przygotowanie mex-pliku bywa kłopotliwe, ale kompilacja do mex-plików ma następujące zalety:
możemy korzystać z programów i bibliotek napisanych w C lub Fortranie.
wzrost szybkości obliczeń w porównaniu do m-plików. W tej kwestii w przyszłych wersjach programu MATLAB przewaga mex-plików będzie malała w stosunku do m-plików.
Tymczasowe lub końcowe wyniki obliczeń możemy zapisywać do pliku tekstowegoASCII o dowolnej nazwie lub do pliku binarnego z rozszerzeniem *.mat – wówczas wszystkieliczby (całkowite i zmiennoprzecinkowe) zapisywane są w formaciezmiennoprzecinkowym z podwójną precyzją.
Przykładowy kod źródłowy, który tworzy zmienne x i y, a następnie zapisuje je razem do pliku o nazwie dwie_zmienne.mat:
clearallx=1:100;y=sin(x);savedwie_zmiennexy
Wczytanie zmiennych z pliku *.mat jest możliwe za pomocą poleceniaload:
loaddwie_zmienne
Używanie plików *.mat zamiast ASCII ma następujące cechy:
mniejsza zajmowana pojemność nadysku – przykładowo, jeśli zapiszemy na dysku liczbę809154.1345098 to wpliku tekstowym zajmie ona 14bajtów (13 cyfr + kropka), natomiast w pliku binarnym – 8 bajtów (taki rozmiar mają liczby zmiennoprzecinkowe ze zdwojoną precyzją). Może to mieć znaczenie przy większej ilości danych.
do pliku ASCII możemy zapisać tylko jedną zmienną podczas gdy do pliku *.mat dowolną ich ilość (przy czym pojęcie „jedną zmienna” nie powinno być utożsamiane z jedną liczbą).
Wykresy i inne formy graficzne wygenerowane w programie MATLAB można zapisać do wybranego formatu graficznego lub do pliku binarnego z rozszerzeniem *.fig. Zaletą tej drugiej formy zapisu jest możliwość późniejszej modyfikacji zapisanego obiektu w programie. Zapisu do formatu fig możemy dokonać za pomocą wybrania odpowiedniej opcji z menu (save as) lub za pomocą poleceniasaveas. Wczytania pliku *.fig do programu MATLAB dokonuje się poleceniemopen lubopenfig.
Język programowania pakietu MATLAB jest pełnoprawnym językiem programowania wysokiego poziomu, o składni wzorowanej najęzyku C. Pozwala na używanie funkcji istruktur, oraz umożliwia pisanie programówzorientowanych obiektowo. Posiada on instrukcje sterujące takie jak: if, for, while, switch. Rezygnacja z trójargumentowej pętli for na rzecz tzw. notacji dwukropkowej skracakod źródłowy, a więc i czas pisania. Przykładowa pętla for napisana w C
inti;for(i=0;i<N;++i){//instrukcje}
Przykładowa pętla for napisana w programie MATLAB
fori=1:N%instrukcjeend
W zakresieprogramowania obiektowego możemy: definiować własneklasy obiektów i metody (funkcje) je obsługujące, przeciążać (nadpisywać) funkcje i operatory, oraz dziedziczyć klasy obiektów.
Zaawansowane możliwości programowania w MATLAB, duża ilość gotowych funkcji bibliotecznych (w tymimplementacji metod numerycznych) oraz możliwości graficzne powodują, że MATLAB pozwala na rozwiązanie wielu problemów numerycznych w czasie znacznie krótszym, niż zajęłoby napisanie własnego kodu w C lub Fortranie.
Wszelkie wprowadzane i deklarowane dane (liczby, tekst) MATLAB traktuje jakomacierz – pojedyncza liczba jest traktowana jako macierz o wymiarze 1x1. MATLAB wyróżnia następującetypy danych (wersja 5.x):
double – macierz pełna. Liczby są reprezentowane w formaciezmiennoprzecinkowym z podwójną precyzją. W programie MATLAB możemy wykonywać operacje arytmetyczne tylko na liczbach typu double.
char – typ tekstowy jakim jest dowolny napis. Formalnie jest to tak samo jak w języku C 8-bitowy typcałkowity (zakres 0–255). Dana liczba reprezentuje odpowiadający jej kod ascii.
sparse – macierz rzadka. Elementy zerowe macierzy nie są zapamiętywane w pamięci komputera. W przypadku macierzy o dużej liczbie zer (macierze diagonalne,macierze rzadkie etc.) oszczędzamy pamięć oraz uzyskujemy skrócenie czasu obliczeń.
struct – struktura. Tak jak w każdym języku programowania struktura jest typem danych zawierającym w swoich polach dane różnych typów.
cell – macierz komórkowa (blokowa) – pojedynczymi elementami takiej macierzy mogą być nie tylko liczby ale i dowolne dane z powyższych typów. W macierzy komórkowej możemy przechować kilka macierzy o różnym wymiarze, tekst i strukturę jednocześnie.
uint8 – 8-bitowy typ całkowity (zakres 0–255) przeznaczony do zapisywania w pamięci obrazów graficznych. Na tym typie danych nie można wykonywać żadnych operacji arytmetycznych.
Charakterystyczne dla języka programowania Matlaba jest automatyczne rozpoznawanie typów zmiennych – nie występuje deklaracja typu (przykładowo w języku C przed użyciem zmiennej abc konieczna jest linia – „double abc;”). MATLAB rozpoznaje typ zmiennej przy jej pierwszym użyciu, należy tylko odpowiednio ją wywołać.
obiekty graficzne (nadrzędne okno graficzne, układ współrzędnych, okno menu, przyciski i suwaki etc.) są hierarchicznie uporządkowane w postaci drzewa – każdy obiekt ma jednego przodka i może mieć dowolną ilość potomków (dziedziczenie),
każdy obiekt graficzny ma swoje właściwości (kolor, rozmiar, położenie etc.).
Pisząc okienkowy program w MATLAB wykorzystujemy gotowe obiekty graficzne, lub możemy tworzyć własne obiekty dziedzicząc już zdefiniowane.
Wczytywane obrazy są w pamięci zapisywane w postaci macierzy liczb double (w zakresie 0–1) lub liczb uint8 (zakres 0–255), obróbka obrazu polega na dokonywaniu operacji matematycznych na takiej macierzy.
Toolboksy (z ang.toolboxes) to zbiór dodatkowych bibliotek (m-plików) do rozwiązywania specjalistycznych problemów z określonych dziedzin (automatyka, elektronika, telekomunikacja, matematyka etc.). Biblioteki te rozszerzają możliwości programu MATLAB.
Spośród dużej liczby istniejących toolboksów wymienić można:
Financial Toolbox – przeznaczony do analiz i obliczeń finansowych (planowanie stałych przychodów, badanie wydajności obligacji, kalkulacja przepływu gotówki, obliczanie stóp procentowych etc.).
Fuzzy Logic Toolbox – środowisko do projektowania i diagnostyki inteligentnych układów sterowania wykorzystujących metodylogiki rozmytej i uczenie adaptacyjne.
Image Processing Toolbox – programowe narzędzia do przetwarzania obrazów.
Mapping Toolbox – przeznaczony do analizy informacji geograficznych i wyświetlania map, z możliwością dostępu do zewnętrznych źródeł geograficznych.
Neural Network Toolbox – zbiór funkcji do projektowania i symulacjisieci neuronowych.
Symbolic Math Toolbox – zestaw funkcji doobliczeń symbolicznych – rozszerza możliwości programu MATLAB o możliwość wykonywania obliczeń symbolicznych.