MATLAB

Transkrypt

MATLAB
MATLAB
MATLAB - wprowadzenie
• MATLAB jest środowiskiem obliczeniowym przeznaczonym dla
zastosowań inŜynierskich. Pozwala on na przeprowadzenie
złoŜonych obliczeń numerycznych, zaawansowaną wizualizację
wyników obliczeń i programowanie w języku wysokiego poziomu.
• Nazwa MATLAB wywodzi się od interfejsu programowego
pozwalającego na wykorzystanie procedur numerycznych
(LINPACK i EISPACK)
EISPACK) i jest skrótem od słów matrix laboratory.
• Obecnie MATLAB jest najpopularniejszym narzędziem tego typu
na świecie i znalazł szerokie zastosowanie w róŜnych dziedzinach
nauki i techniki. Wśród tych zastosowań wymienić naleŜy cyfrowe
przetwarzanie sygnałów, przetwarzanie obrazów, automatykę,
automatykę,
finanse i badania medyczne.
medyczne.
• Otwarta architektura MATLABMATLAB-a pozwala na jego łatwe
rozszerzanie i tworzenie narzędzi zgodnych z wymaganiami
kaŜdego uŜytkownika.
1
MATLAB – Obliczenia
Język wysokiego poziomu w połączeniu z szeroką gamą
predefiniowanych funkcji matematycznych pozwala na
implementację dowolnego algorytmu za pomocą kilku linii kodu.
W MATLABMATLAB-ie zaimplementowano między innymi:
innymi:
• operacje macierzowe,
• analizę Fouriera,
Fouriera, Wavelet i inne,
• rozwiązywanie równań róŜniczkowych,
• obliczenia na macierzach rzadkich,
• funkcje trygonometryczne i inne funkcje matematyczne,
• analizę i prezentację danych spróbkowanych nierównomiernie,
• obliczenia symboliczne,
• interpolację.
Istnieje moŜliwość rozszerzenia MATLABMATLAB-a o nowe funkcje
MATLAB pozwala na dodanie nowych funkcji w postaci mm-plików
napisanych w języku MATLABMATLAB-a.
MATLAB – Programowanie
Zalety programowania w MATLABMATLAB-ie
• MATLAB stwarza moŜliwość skoncentrowania się nad
rozwiązaniem postawionego problemu, a nie na technicznych
szczegółach programowania takich jak zarządzanie pamięcią czy
deklaracje zmiennych.
• Wszystkie zmienne deklarowane są dynamicznie.
• Programy i procedury nie wymagają kompilacji czy linkowania i
mogą być wykonywane natychmiast po dokonaniu zmian w pliku
• MoŜna zdefiniować dowolne zmienne począwszy od skalarów,
poprzez wielowymiarowe macierze a skończywszy na złoŜonych
strukturach.
• Z MATLABMATLAB-em pracuje się w sposób interaktywny
wprowadzając kaŜde polecenie do interpretera lub w sposób
wsadowy pisząc programy i procedury.
2
MATLAB – Wizualizacja
• Matlab dostarcza bezpośredni dostęp do wyspecjalizowanych
funkcji graficznych niezbędnych w zastosowaniach inŜynierskich i
badaniach naukowych.
• Funkcje graficzne pozwalają na przedstawienie danych o róŜnym
charakterze.
• Dostępne są trzy i czterocztero-wymiarowe wykresy umoŜliwiające
wizualizację wielowymiarowych macierzy czy teŜ wielkości
zespolonych.
• Zaimplementowano efektywne algorytmy interpolacji danych
spróbkowanych w sposób nierównomierny.
• Dowolna grafika wytworzona w MATLABMATLAB-ie moŜe zostać
zaimportowana do innej aplikacji (np
(np.. MS Word).
• KaŜdy obiekt graficzny moŜe być modyfikowany w szerokim
zakresie w trybie interaktywnym lub wsadowym poprzez zmianę
odpowiednich atrybutów.
MATLAB – Analiza danych
3
MATLAB – wykresy 2D
1
1
0.8
0.6
0.9
0.4
0.8
0.2
0.7
1
0.6
0.8
-0.4
0.5
0.6
-0.6
0.4
0.4
0.3
0.2
0
-0.2
-0.8
-1
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
0.2
0
0.1
-0.2
-0.4
0
-3
1.5
-2
-1
0
1
2
3
-0.6
-0.8
1
-1
90
0
0.5
0.5
1
2
3
4
5
6
7
8
9
10
60
120
0.375
0
0.25
150
30
0.35
-0.5
0.3
0.125
0.25
-1
180
-1.5
-2.5
0.2
0
0.15
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
0.1
0.05
210
330
0
-0.05
-0.1
240
300
-0.15
270
0
0.5
1
1.5
2
2.5
3
3.5
4
MATLAB – wykresy 3D
25
1.5
20
1
15
0.5
10
0
-0.5
5
5
10
15
20
25
-1
-1.5
-2.5
-2
-1.5
-1
-0.5
0
0.5
1
1.5
2
4
MATLAB – wykresy specjalne
Wykres funkcji zespolonej
Polecenie rysujące
wykres z=cplxgrid[20];
cplxmap[z,z
];
cplxmap[z,z];
F(z) = z
5
Wykres funkcji zespolonej
F(z) = [z^4-1]^[1/4]
Polecenie rysujące wykres z=cplxgrid[20];
cplxmap[z,[z.^4
cplxmap[z,[z.^4--1].^[1/4]];
Cztery zera pierwiastka
czwartego stopnia z jedności
Wykres funkcji zespolonej
F(z) = z^3
Polecenie rysujące wykres z=cplxgrid[20];
cplxmap[z,z.^3];
Trzy max dla sześciennych
pierwiastków z jedności
6
MATLAB – Analiza danych
• MATLAB umoŜliwia
umoŜliwia akwizycję, gromadzenie, przetwarzanie i
prezentację danych, sygnałów i obrazów pochodzących z róŜnego
rodzaju źródeł.
• Istnieje moŜliwość interaktywnego eksperymentowania z
procedurami przetwarzania i wizualizacji danych.
danych. Dzięki temu, Ŝe
komendy wykorzystywane w trybie interaktywnym i w trybie
wsadowym są identyczne, to polecenia wydawane w trakcie
eksperymentów, moŜna natychmiast wykorzystać do tworzenia
procedur zapisanych w postaci mm-plików.
• Procedury słuŜące do przetwarzania danych to między innymi:
• procedury do interpolacji i decymacji,
• procedury do ekstrakcji wybranej części danych,
• procedury do skalowania i uśredniania,
• procedury do obcinania i porównywania,
• procedury do wygładzania i filtracji.
MATLAB – okna robocze
Edytor
Pomoc
Okno graficzne
Zmienne
Historia
Interpreter
7
MATLAB – główne okno
Zmienne w Matlabie - MACIERZE
• W Matlabie wszystkie uŜ
uŜywane zmienne są
są macierzami.
• Przez macierz rozumiemy zbió
zbiór wartoś
wartości numerycznych
odpowiednio zorganizowanych w wierszach i kolumnach. Liczba
kolumn lub wierszy okreś
określana jest dowolną
dowolną liczbą
liczbą cał
całkowitą
kowitą, a
jedynym ograniczeniem jest rozmiar dostę
dostępnej pamię
pamięci.
• Pierwszy rozmiar macierzy okreś
określa liczbę
liczbę wierszy, a druga liczba
słuŜy do okreś
określenia liczby kolumn. Przykł
Przykładowo macierz o
wymiarach 3 x 4 zawiera 3 wiersze i 4 kolumny, czyli łącznie
łącznie 12
elementó
elementów.
• Skalar w Matlabie jest szczegó
szczególnym przypadkiem macierzy o
rozmiarze 1 x 1.
• Wektor o n elementach jest definiowany jako macierz zawierają
zawierająca
1 wiersz (n
(n x 1) lub macierz zawierają
zawierająca 1 kolumnę
kolumnę (1 x n) –
wektor kolumnowy.
8
Zmienne w Matlabie - MACIERZE
• Nazwa zmiennej w Matlabie moŜ
moŜe być
być cią
ciągiem dowolnych cyfr i
liter o dł
długoś
ugości nie przekraczają
przekraczającej 19 znakó
znaków. Pierwszy znak nie
moŜ
moŜe być
być cyfrą
cyfrą i nazwa nie moŜ
moŜe zawierać
zawierać spacji oraz niektó
niektórych
znakó
znaków np.
np. ‘ + – .
• Pamię
Pamiętać
tać naleŜ
naleŜy, Ŝe w Matlabie rozró
rozróŜniane są
są duŜ
duŜe i mał
małe litery.
Tak wię
więc zmienne o nazwie c i C są dwiema ró
róŜnymi zmiennymi !
Podobnie MID i Mid to takŜ
Ŝ
e
dwie
ró
ó
Ŝ
ne
zmienne.
tak
r
• Liczby zespolone
• W Matlabie zmienne i oraz j automatycznie predefiniowane są
są
jako sqrt(sqrt(-1)
Zmienne w Matlabie - MACIERZE
• PoniŜ
PoniŜej przedstawiono kilka przykł
przykładó
adów macierzy zdefiniowanych w
Matlabie.
Matlabie. Proszę
Proszę zwró
zwrócić
cić uwagę
uwagę na rolę
rolę nawiasó
nawiasów kwadratowych w
definicji macierzy.
c = 5.66 lub c = [5.66] c – definicja skalara czyli macierzy 1x1
x = [ 3.5, 33.22, 24.5 ]
x – wektor wierszowy czyli macierz 1x3
x1 =[ 2;
x1 – wektor kolumnowy czyli macierz 4x1
5;
3;
-1]
A = [ 1 2 4;
A – macierz o rozmiarze 4x3
2 -2 2;
4 wiersze i 3 kolumny
0 3 5;
5 4 9]
9
Zmienne w Matlabie - MACIERZE
• Dostę
Dostęp do poszczegó
poszczególnych elementó
elementów macierzy jest moŜ
moŜliwy poprzez
wywoł
wywołanie typu A(i,j)
A(i,j), przykł
przykładowo zmiana wartoś
wartości jednego z
elementó
elementów macierzy moŜ
moŜe nastą
nastąpić
pić za pomocą
pomocą komendy
A(4,1)=5
• Macierz wyś
wyświetlana jest w Matlabie z zachowaniem struktury
macierzy.
• Macierze mogą
mogą być
być definiowane w ró
róŜny sposó
sposób:
Przykł
Przykład
• Macierz x o rozmiarze 1x3, o elementach: x(1)=2, x(2)=4 i x(3)=x(3)=-1.
x = [ 2 4 -1 ] lub x = [ 2,4,2,4,-1 ]
• Wykonanie polecenia nastę
następuje po naciś
naciśnię
nięciu Enter
• Kolejne elementy macierzy mogą
mogą być
być oddzielone spacjami lub
przecinkami.
Zmienne w Matlabie - MACIERZE
Macierz y o rozmiarach 2x4 o elementach: y(1,1)=0, y(1,2) = y(1,3) = 2,
y(1,4) = 3, y(2,1) = 5, y(2,2) = -3, y(2,3) = 6, y(2,4) = 4
moŜ
moŜe zostać
zostać zdefiniowana w nastę
następują
pujący sposó
sposób:
y = [ 0, 2, 2, 3;
5, -3, 6, 4 ]
lub
y = [ 0, 2, 2, 3 ; 5, -3, 6, 4 ]
Średnik ";
";" jest uŜ
uŜywany do do rozdzielenia wierszy definiowanej
macierzy jeś
jeśli definicja wprowadzana jest w jednej linii.
Wartoś
Wartości macierzy zdefiniowane mogą
mogą być
być równieŜ
wnieŜ za pomocą
pomocą
wyraŜ
wyraŜenia, np.:
np.:
a = [ sin(pi/2)
sin(pi/2) sqrt(2) 3+4 6/3 exp(2) ]
10
Zmienne w Matlabie - MACIERZE
Nowa macierz moŜ
moŜe zostać
zostać równieŜ
wnieŜ utworzona przy wykorzystaniu
wcześ
wcześniej zdefiniowanych macierzy.
Przykł
Przykładowo korzystają
korzystając z poprzednio zdefiniowanej macierzy x
utworzono macierz x1:
x1:
Polecenie:
x1 = [ x 5 8 ]
generuje macierz:
x1 = [ 2 4 -1 5 8 ]
WyraŜ
WyraŜenie
x(5) = 8
Powoduje dodanie nowego elementu macierzy x
x = [ 2 4 -1 0 8 ]
i dodatkowo automatycznie wstawiony zostaje element x(4) ró
równy zero.
Zmienne w Matlabie - MACIERZE
Nowa macierz moŜ
moŜe zostać
zostać utworzona ró
równieŜ
wnieŜ z innych macierzy:
Polecenia:
c=[4 5 6 3]
z = [ y;c ]
dają
dają w wyniku:
z=[0 2 2 3
5 -3 6 4
4 5 6 3]
Po kaŜ
kaŜdej wykonanej komendzie (po naciś
naciśnię
nięciu Enter)
Enter) Matlab
wyś
wyświetla rezultat wykonywanej komendy. Efekt wyś
wyświetlania efektu
dział
działania komendy moŜ
moŜna zablokować
zablokować zakań
zakańczają
czając linię
linię polecenia
średnikiem.
z=[y;c];
11
Zmienne w Matlabie - MACIERZE
Macierze mogą
mogą być
być równieŜ
wnieŜ generowane za pomocą
pomocą odpowiednich
funkcji konstruują
konstruujących, przykł
przykładowo:
zeros - tworzy macierz zerową
zerową
ones
- tworzy macierz jedynek
eye
- tworzy macierz z jedynkami na przeką
przekątnej
rand
- tworzy macierz z liczbami losowymi
Funkcje te wywoł
wywołane z jednym parametrem tworzą
tworzą macierz kwadratową
kwadratową
o zadanym wymiarze, z dwoma odpowiednią
odpowiednią macierz prostoką
prostokątną
tną.
Macierze mogą
mogą być
być równieŜ
wnieŜ konstruowane w wyniku „programowania”
programowania”
Przykł
Przykładowo stosują
stosując polecenie for
for i=1:10,
for j=1:10,
t(i,j)
t(i,j) = i/j;
end
end
Instrukcje sterujące - IF
Przykład instrukcji if
if a>0
disp('a is greater then 0')
else
disp('a is smaller then 0')
end
Aby dokonać sprawdzenia czy dwie macierze są sobie równe nie moŜna
moŜna
zastosować polecenia A==B a naleŜy się posłuŜyć funkcją isequal
Przykład:
if isequal(A,B),
isequal(A,B), disp('a is the same as b') end
12
Instrukcje sterujące - switch , case
Instrukcja switch powoduje wykonanie okreś
określonej grupy instrukcji w
zaleŜ
zaleŜnoś
ności od wartoś
wartości zmiennej sterują
sterującej. Instrukcja case słuŜy do
okreś
określenia tych grup, a polecenie end zamyka obszar dział
działania polecenia
switch.
switch.
Ogó
Ogólna postać
postać instrukcji switch:
switch:
switch switch_expr
case case_expr
instrukcje
case {case_expr1, case_expr2, case_expr3,...}
instrukcje
otherwise,
otherwise,
instrukcje
end
Instrukcje sterujące – switch, case
Przykł
Przykład 1
Przykł
Przykład 2
switch action
case ‘situat1’
situat1’
disp(‘
disp(‘Action for situation 1’)
case ‘situat2’
situat2’
disp(‘
disp(‘Action for situation 2’)
case ‘situat3’
situat3’
disp(‘
disp(‘Action for situation 3’)
otherwise
error('This is impossible')
impossible')
end
switch b
case 0
a=sin(x)
a=sin(x)
case 1
a=cos(x)
a=cos(x)
case 2
a=tan(x)
otherwise
a=0;
end
13
Instrukcje sterujące - for
Instrukcja for powoduje powtó
powtórzenie wykonania zbioru instrukcji zadaną
zadaną
liczbę
liczbę razy. Polecenie end zamyka obszar dział
działania polecenia for.
for.
Przykł
Przykład
for i = 1:m
for j = 1:n
H(i,j)
);
H(i,j) = 1/(i+j
1/(i+j);
end
end
Instrukcje sterujące – while, break
Instrukcja while powoduje powtó
powtórzenie wykonania zbioru instrukcji
dopó
dopóki speł
spełniony jest warunek. Polecenie end zamyka obszar dział
działania
polecenia while.
while.
Ogó
Ogólna postać
postać polecenia while
while warunek
instrukcje
end
Instrukcja break pozwala przerwać
przerwać wykonywanie pę
pętli spowodowanej
poleceniami for lub while
14
Instrukcje sterujące – while, break, if
Przykł
Przykład
a = 0;
fa = -Inf;
Inf;
b = 3;
fb = Inf;
Inf;
while bb-a > eps*b
x = (a+b)/2;
fx = x^3x^3-2*x2*x-5;
if fx == 0
break
elseif sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x;
fb = fx;
end
end
Instrukcje – clear, clc
• W Matlabie dostę
dostępna jest funkcja któ
która pozwala na usunię
usunięcie z pamię
pamięci
zbę
zbędnych zmiennych. jest to polecenie clear,
clear, któ
które uŜ
uŜyte bez Ŝadnego
argumentu powoduje USUNIĘ
USUNIĘCIE WSZYSTKICH ZMIENNYCH z
pamię
pamięci.
• Jeś
Jeśli chcemy usunąć
usunąć tylko wybrane zmienne to naleŜ
naleŜy podać
podać nazwy
tych zmiennych jako argument tej funkcji.
Przykł
Przykładowo
clear z MED A
Opró
Oprócz tej komendy wspomnieć
wspomnieć naleŜ
naleŜy w tym miejscu o komendzie
clc
któ
która pozwala na wyczyszczenie okna poleceń
poleceń.
15
Instrukcje – who, whos, format
• Polecenia who,
who, whos
• Pozwalają
Pozwalają na uzyskanie informacji o zmiennych znajdują
znajdujących się
się w
pamię
pamięci
• Zmiana precyzji wyś
wyświetlania wynikó
wyników format
• NiezaleŜ
NiezaleŜnie od wybranej precyzji wyś
wyświetlania wynikó
wyników wszystkie
operacje w Matlabie wykonywane są
są na zmiennych typu double.
• Zmianę
Zmianę precyzji wyś
wyświetlania moŜ
moŜna uzyskać
uzyskać uŜywają
ywając polecenia
format
Przykład
a=sqrt(2)
format long,
long,
b=sqrt(2)
a-b
format short
Instrukcje – save
• śeby zapisać
zapisać wartoś
wartości zmiennej "x
"x" do pliku tekstowego o nazwie
"var_x.txt"
var_x.txt" moŜ
moŜna uŜ
uŜyć polecenia
save var_x.txt x –ascii
ascii
• śeby zapisać
zapisać zmienną
zmienną "x" do pliku w formacie Matlaba o nazwie
"var_x.mat"
var_x.mat" moŜ
moŜna uŜ
uŜyć polecenia
save var_x x
• śeby zapisać
zapisać wszystkie zmienne do pliku w formacie Matlaba o
nazwie "mysession.mat
"mysession.mat"" moŜ
moŜna uŜ
uŜyć polecenia
save mysession
• Wczytywanie sesji i zmiennych z pliku na dysku
• Do wczytania zmiennej (lub sesji) z pliku w formacie Matlaba zastosuj
polecenie load.
load.
load mysession
16
Pomoc - help, lookfor
• Aby uzyskać
uzyskać pomoc na temat funkcji zastosuj polecenie help podają
podając
jako parametr nazwę
nazwę funkcji
help sin
• Przeszukiwanie plikó
plików pomocy w celu odnalezienia informacji
zwią
związanych z okreś
określonym terminem czy teŜ
teŜ funkcją
funkcją moŜ
moŜna uruchomić
uruchomić
stosują
ą
c
polecenie
lookfor.
.
stosuj
lookfor
lookfor sin
• MoŜ
MoŜna teŜ
teŜ skorzystać
skorzystać z systemu pomocy w formacie HTML.
KONIEC
WYKONAŁA :
Agnieszka Moraczyńska
ETI 9.1
0.025
0.02
0.015
0.01
0.005
0
-0.005
-0.01
-0.015
-0.02
-0.04
-0.03
-0.02
-0.01
0
0.01
0.02
0.03
0.04
0.05
17