MATLAB - Google

MATLAB

Z Wikipedii

Skocz do: nawigacji, szukaj
Matlab
Logo programu
Rodzaj język programowania, matematyka
Aktualna wersja stabilna R2008a (marzec 2008)
Producent The MathWorks
Licencja Zamknięte oprogramowanie
Platforma systemowa Linux/Unix, Windows, Macintosh
www.mathworks.com

MATLAB - program komputerowy będący interaktywnym środowiskiem do wykonywania obliczeń naukowych i inżynierskich, oraz do tworzenia symulacji komputerowych.

Spis treści

[edytuj] Opis ogólny

Nazwa programu pochodzi od angielskich słów MATrix LABoratory, gdyż początkowo program ten był przeznaczony do numerycznych 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ój język programowania, co umożliwia pisanie w pełni funkcjonalnych programów działających w środowisku Matlaba.

W zakresie grafiki Matlab umożliwia rysowanie dwu i trójwymiarowych wykresów funkcji oraz wizualizacjÄ™ wyników obliczeÅ„ w postaci rysunków statycznych i animacji. Możliwe jest pobieranie danych pomiarowych z urzÄ…dzenia zewnÄ™trznego przez porty w celu ich obróbki. Wszystko to powoduje, że program ten znajduje bardzo szerokie zastosowanie[potrzebne ÅºródÅ‚o].

IstniejÄ… alternatywne odpowiedniki tegoż programu rozprowadzane na licencjach FLOSS, takie jak Scilab czy Octave, jednak nie sÄ… tak rozbudowane jak Matlab[potrzebne ÅºródÅ‚o].

Obecnie (marzec 2008) numer najnowszej wersji tego programu to 7.6 (Release 2008a)

[edytuj] Rys historyczny

Pra-początki Matlab-a sięgają lat siedemdziesiątych, gdy w USA na zlecenie National Science Foundation powstały biblioteki języka Fortran do obliczeń macierzowych: Linpack i Eispack. Jeden z autorów tych bibliotek, Cleve Moler prowadził zajęcia z algebry liniowej na Uniwersytecie stanu Nowy 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 zasadach public domain był pierwowzorem Matlaba.

W 1983 C. Moller oraz S. Bangert i J. Little (inżynier z Uniwersytetu Stanford) postanowili rozwinąć powyższy projekt - zastąpili Fortran ję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. W 1985 roku pojawiła się pierwsza wersja programu.

[edytuj] Ważniejsze cechy programu

[edytuj] Najważniejsze rodzaje plików

[edytuj] M-pliki (*.m)

W celu zautomatyzowania pewną liczbę poleceń z wiersza poleceń możemy zapisać do pliku z rozszerzeniem *.m (stąd nazwa m-plik) i tę listę poleceń uruchomić jednym poleceniem - mówimy wówczas o m-pliku skryptowym.

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 Matlaba w jednym pliku mogła znajdować się tylko jedna funkcja. Obecnie w jednym pliku 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 środowisku Matlaba.
Poniżej przykładowy m-plik generujący trójwymiarowy wykres:

[x,y]=meshgrid(-3.5:0.05:3.5);
z=sin(x).*sin(y)+4*exp(-(x-0.5).^2-(y-0.5).^2);
surf(x,y,z)
colormap('jet')
shading interp
xlabel('X')
ylabel('Y')
zlabel('Z')
text(0,4,4,'z=sin(x).*sin(y)+4*exp(-(x-0.5).^2-(y-0.5).^2)','FontSize',18)

[edytuj] Mex-pliki

Program napisany w języku C lub Fortran możemy skompilować poleceniem mex. Wynikiem kompilacji jest otrzymanie pliku dynamicznie ładowanej biblioteki współdzielonej (w Microsoft Windows są to pliki *.dll) nazywanego mex-plikiem (skrót od Matlab EXecutable). Mex-plik można uruchomić z wiersza poleceń w oknie Matlaba 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 Matlaba przewaga mex-plików bÄ™dzie malaÅ‚a w stosunku do m-plików.

[edytuj] Mat-pliki (*.mat)

Tymczasowe lub końcowe wyniki obliczeń możemy zapisywać do pliku tekstowego ASCII o dowolnej nazwie lub do pliku binarnego z rozszerzeniem *.mat – wówczas wszystkie liczby (całkowite i zmiennoprzecinkowe) zapisywane są w formacie zmiennoprzecinkowym 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:

clear all
x=1:100;
y=sin(x);
save dwie_zmienne x y

Wczytanie zmiennych z pliku *.mat jest możliwe za pomocą polecenia load:

load dwie_zmienne

Używanie plików *.mat zamiast ASCII ma następujące cechy:

  • mniejsza zajmowana pojemność na dysku - przykÅ‚adowo jeÅ›li zapiszemy na dysku liczbÄ™ 809154.1345098 to w pliku tekstowym zajmie ona 14 bajtów (13 cyfr + kropka) a w pliku binarnym 8 bajtów (taki rozmiar majÄ… liczby zmiennoprzecinkowe ze zdwojonÄ… precyzjÄ…). Może to mieć duże znaczenie przy wiÄ™kszej iloÅ›ci danych.
  • konwersja z systemu dwójkowego na dziesiÄ™tny przy zapisywaniu do pliku ASCII może prowadzić do błędów zaokrÄ…gleÅ„.
  • Do pliku ASCII możemy zapisać tylko jednÄ… zmiennÄ… podczas gdy do pliku *.mat dowolnÄ… ich ilość. (UWAGA: "jednÄ… zmiennÄ…" nie oznacza jednÄ… liczbÄ™)

[edytuj] Język programowania

Język programowania pakietu Matlab jest pełnoprawnym językiem programowania wysokiego poziomu, o składni wzorowanej na języku C. Pozwala on na używanie funkcji i struktur, oraz umożliwia pisanie programów zorientowanych obiektowo. Tak jak wszystkie współczesne języki programowania wysokiego poziomu posiada on instrukcje sterujące takie jak: if, for, while, switch. Rezygnacja z trójargumentowej pętli for na rzecz tzw. notacji dwu-kropkowej przyśpiesza wykonanie programu.
Przykładowa pętla for napisana w C

for (wyrażenie1; wyrażenie2; wyrażenie3) {
  instrukcje;
}

Przykładowa pętla for napisana w Matlabie

for i=1:N 
  instrukcje;
end

W zakresie programowania obiektowego możemy: definiować własne klasy 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 Matlabie, duża ilość gotowych funkcji bibliotecznych (w tym implementacji 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 jako macierz - pojedyncza liczba jest traktowana jako macierz o wymiarze 1x1. Matlab wyróżnia następujące typy danych (wersja 5.x):

  • double - macierz peÅ‚na. Liczby sÄ… reprezentowane w formacie zmiennoprzecinkowym z podwójnÄ… precyzjÄ…. W Matlabie 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 typ caÅ‚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ć.

Typ Wywołanie
double a=1 (a=[1])
char a='napis'
sparse a=sparse(1)
struct a.składnik=1
cell a={1}

[edytuj] Grafika

Przykładowy wykres 3D wykonany za pomocą Matlaba
Przykładowy wykres 3D wykonany za pomocą Matlaba

Matlab cechuje obiektowy system graficzny:

  • 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 Matlabie 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 unit8 (zakres 0 - 255), obróbka obrazu polega na dokonywaniu operacji matematycznych na takiej macierzy.

[edytuj] Biblioteki Dodatkowe (Toolboksy)

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 Matlaba i pisane są także przez oddzielnych producentów oprogramowania.

Spośród dużej liczby istniejących toolboksów wymienić można:

  • Chemometrix Toolbox - przeznaczony do opracowywania danych chemicznych.
  • 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 metody logiki 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 symulacji sieci neuronowych.
  • Higher-Order Spectral Analisis Toolbox - przeznaczony do analizy sygnałów zakłóconych szumem niegaussowskim lub sygnaÅ‚ami generowanymi przez procesy nieliniowe. Biblioteka ta znajduje zastosowanie w biomedycynie, akustyce, ekonometrii, oceanografii, przetwarzaniu sygnałów mowy, technice radarowej i sonarowej.
  • Symbolic Math Toolbox - zestaw funkcji do obliczeÅ„ symbolicznych - rozszerza możliwoÅ›ci Matlaba o możliwość wykonywania obliczeÅ„ symbolicznych.
  • Partial Differential Equation Toolbox - zestaw funkcji do numerycznego rozwiÄ…zywania równaÅ„ różniczkowych czÄ…stkowych metodÄ… elementów skoÅ„czonych.
  • Simulink - pakiet sÅ‚użący do modelowania, symulacji i analizy ukÅ‚adów dynamicznych. Simulink dostarcza także graficzny interfejs użytkownika umożliwiajÄ…cy konstruowanie modeli w postaci diagramów blokowych.
  • Spline Toolbox - zestaw bibliotek do aproksymacji i interpolacji funkcjami sklejanymi.
  • Wavelet Toolbox - biblioteka do analizy sygnałów oraz usuwania szumów.

[edytuj] Zobacz też

[edytuj] Linki zewnętrzne


Core i7 - można składać zamówienia
Oczekiwany przez rzeszę użytkowników procesor Intel Core i7 (nazwa robocza Bloomfield) oficjalnie trafi na rynek w listopadzie. Niemniej jednak jeśli ktoś miesza w Kanadzie lub Wielkiej Brytanii, może już składać zamówienia w tamtejszych sklepach online.
eBay Polska kończy działalność
Gigant handlu internetowego eBay ogłosił plany zamknięcia oddziałów w większości z 39. krajów, w których działają lokalne wersje serwisu aukcyjnego. Serwisy zarządzane będą z Londynu i szwajcarskiego Berna. Pracę straci około tysiąca pracowników koncernu.
Ofiary przemocy online milczÄ…
W ostatnim roku trzech na czterech nastolatków padło ofiarą przemocy w sieci. Takie wnioski wysuwają psychologowie z Uniwersytetu Kalifornijskiego w Los Angeles.
Programiści walczyli w półfinałach Google Code Jam
W Krakowie odbyły się ostatnie rozgrywki ogólnoświatowego konkursu dla programistów Code Jam tuż przed wielkim finałem, zaplanowanym na 14 listopada w Mountain View w Kalifornii.
Windows XP nie umiera
Microsoft stwierdził, że firmy OEM mogą sprzedawać system Windows XP jeszcze przez 6 miesięcy. I taki prezent zafundował koncern z Redmond Viście na drugie urodziny tego OS-u. Paradoks.
Linki: Strona g³ówna