MATLAB – PODSTAWY ZNAKI SPECJALNE
= – symbol przypisania
[ ] – tworzenie tablic, argumenty wyjściowe funkcji, łączenie tablic { } – indeksy struktur i tablic komórkowych
( ) – nawiasy do określania kolejności działań, do ujmowania indeksów tablic, do ujmowania argumentów wejściowych funkcji
. – kropka dziesiętna
... – kontynuacja polecenia w następnej linii
, – separator indeksów tablicy, argumentów funkcji, poleceń
; – koniec wiersza macierzy, rezygnacja z wypisywania wyniku na ekranie
% – początek komentarza w danej linii
: – generowanie wektorów, indeksowanie macierzy
‘ – początek i koniec łańcucha znaków, operator transpozycji, operator sprzężenia zespolonego
FUNKCJE SPECJALNE
pi – 3.14159265...
realmin – najmniejsza liczba rzeczywista realmax – największa liczba rzeczywista Inf – nieskończoność
NaN – Not–a–Number
ans – zmienna robocza
Inf – nieskończoność jest generowana przez dzielenie liczby różnej od 0 przez zero, lub przez działanie na wartościach, które wykraczają po za największą możliwą wartość rzeczywistą określoną przez funkcję realmax.
NaN jest generowana przy próbie wykonania działań typu 0/0 lub Inf–Inf
ZMIENNE LICZBOWE W MATLAB-IE
dzielą się na dwa typy:typ całkowity ze znakiem (int8, int16, int32, int64) i typ całkowity bez znaku (uint8, uint16, uint32, uint64) typ rzeczywisty pojedynczej precyzji (single) oraz typ rzeczywisty podwójnej precyzji (double)
Defaultowym (domyślnym) typem numerycznym dla zmiennych MATLAB-a jest typ double!
Jeśli zmienna x ma wartość
>> x = 12.56 x =
12.5600 Instrukcja
>> int16(x) ans = 13
konwertuje wartość x na liczbę całkowitą.
ans – oznacza zmienną utworzoną automatycznie przez MATLAB–a, gdy dane wyrażenie nie zostało przypisane żadnej zmiennej. Por. z przykładem poniżej:
>> x = 12.56 x =
12.5600
>> y = int16(x) y =
13
Typ Zakres zmiennych typu rzeczywistego
single –3.40282e038 3.4283e+038
double –2.22507e+308 1.79769e+308
RÓŻNE FORMATY ZAPISU LICZBY RZECZYWISTEJ NA PRZYKŁADZIE LICZBY π
>> format long, pi ans =
3.14159265358979
>> format long e, pi
ans = 3.141592653589793e+000
ZMIENNE W MATLAB–ie
Zmiennym nadaje się nazwy. Nazwa może się składać:• z liter, cyfr i znaku podkreślenia
• z dowolnej liczby znaków, ale tylko około 63 są rozróżnialne przez MATLAB-a
Nazwa musi zaczynać się od litery !
UWAGA!
MATLAB rozróżnia wielkość liter w nazwie zmiennej !!! Dla MATLAB-a zmienne A i a to dwie różne zmienne!
Format Typ Postać
short stałoprzecinkowy 3.1416 long stałoprzecinkowy 3.14159265358979 short e zmiennoprzecinkowy 3.1416e+000 long e zmiennoprzecinkowy 3.141592653589793e+000
rat ułamkowy 355/113
PODSTAWOWĄ STRUKTURĄ DANYCH W MATLAB-IE JEST TABLICA
Tablica (array) – to forma gromadzenia i przechowywania danych w pamięcikomputera. Tablicom nadaje się nazwy. Dane przechowywane w tablicy nazywają się jej elementami. Położenie elementu w tablicy określone jest za pomocą indeksów.
MATLAB dopuszcza tablice wielowymiarowe!
Macierz (matrix) – jest szczególnym przypadkiem tablicy dwuwymiarowej!
– tablica A(5 x 5) – macierz
B = 10 – tablica B(1 x 1) – skalar
STANDARDOWE FUNKCJE MATEMATYCZNE
⎟⎟
⎟⎟
⎟⎟
⎠
⎞
⎜⎜
⎜⎜
⎜⎜
⎝
⎛
=
10 2 9 7 0
4 0 7 0 1
7 10 7 2 0
9 9 2 4 5
10 0 7 7 2 A
OPERATORY ARYTMETYCZNE W MATLAB–ie w odniesieniu do MACIERZY
Operatory działań na macierzach:
A+B A-B A*B
A/B A\B A^B A’
Operator Opis
+ Dodawanie, jednoargumentowy operator plus - Odejmowanie, jednoargumentowy operator minus
* Mnożenie macierzy
/ Prawostronne dzielenie macierzy
\ Lewostronne dzielenie macierzy
^ Potęgowanie macierzy
‘ Transponowanie macierzy Wyjaśnienie. Jeśli:
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
=
2 9 4
7 5 3
6 1 8
A
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
=
6 3 1
3 2 1
1 1 1 B
* Mnożenie macierzy
/ Prawostronne dzielenie macierzy
/ A = B ⋅ A
−1B
\ Lewostronne dzielenie macierzy
B A B
A \ =
−1⋅
Związek między działaniami na macierzach B/A I A\B
)' ' '\
(
/ A A B
B =
^ Potęgowanie macierzy – podniesienie macierzy A do potęgi p Przypadki:
p liczba całkowita >0 C=A^p = A*A...*A p liczba całkowita <0 C=(A-1)^p
A^p gdy p jest liczbą rzeczywistą lub p^A – potęgowanie wymaga wyznaczania wartości i wektorów własnych
Gdy A i p są macierzami – błąd!
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
⋅ +
⋅ +
⋅
=
=
6 2 3 9 1 4 3 2 2 9 1 4 1 2 1 9 1 4
6 7 3 5 1 3 3 7 2 5 1 3 1 7 1 5 1 3
6 6 3 1 1 8 3 6 2 1 1 8 1 6 1 1 1 8 A* B
C c a b i j n
n
k kj ik
ij , , 1,2,...
1
=
=
∑
=
OPERATORY ARYTMETYCZNE W MATLAB–ie w odniesieniu do TABLIC.
NOTACJA KROPKOWA
Operatory działań na tablicach:A+B A-B A.*B
A./B A.\B A.^B A.’
Operator Opis
+ Dodawanie, jednoargumentowy operator plus - Odejmowanie, jednoargumentowy operator minus .* Mnożenie tablic
./ Prawostronne dzielenie tablic .\ Lewostronne dzielenie tablic .^ Potęgowanie tablic
.’ Transponowanie tablicy
‘ Sprzężenie zespolone
Wyjaśnienie. Jeśli
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
=
2 9 4
7 5 3
6 1 8
A
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
=
6 3 1
3 2 1
1 1 1 B
DZIELENIE TABLICOWE
PRAWOSTRONNE A./B LEWOSTRONE A.\B
SPOSOBY OKREŚLANIA TABLIC W MATLAB-ie
• Dane do tablicy są wprowadzane z klawiatury
• Tablica jest wczytywana z zewnętrznego pliku z danymi
• Tablicę może wygenerować użytkownik aplikacji wg ściśle określonego algorytmu, za pomocą napisanej przez siebie funkcji
• Tablica może zostać wygenerowana za pomocą odpowiedniej funkcji MATLAB-a
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
⋅
=
=
6 2 3 9 1 4
3 7 2 5 1 3
1 6 1 1 1 8
* . B A
D
c
ij= a
ijb
iji . j = 1 , 2 ,... n
ij ij ij
P b
c a B
A
C = /. ⇔ =
ij ij ij
L a
c b B
A
C = .\ ⇔ =
ZADAWANIE TABLICY Z KALWIATURY
• Wprowadź dane oddzielając elementy danego wiersza macierzy spacjami lub przecinkami
• Użyj znaku średnika by zaznaczyć koniec wiersza
• Otocz wprowadzoną listę elementów nawiasami [ ]
Dla macierzy
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
=
2 9 4
7 5 3
6 1 8
A napiszemy >>A = [8 1 6; 3 5 7; 4 9 2]
FUNKCJE MATLAB–a DO GENEROWANIA TABLIC
(n – liczba wierszy, m – liczba kolumn)• magic(n) – generuje macierz magiczną
• pascal(n) – generuje macierz Pascala stopnia n
• eye(n,n) – generuje macierz jednostkową nxn
• ones(n,m) – generuje tablicę nxm złożona z samych jedynek
• zeros(n,m) – generuje tablicę nxm złożoną z samych zer
• rand(n,m) – generuje tablicę nxm o elementach będących liczbami losowymi o rozkładzie równomiernym z przedziału (0,1)
• randn(n,m) – generuje tablicę nxm złożoną z liczb będących liczbami losowymi o rozkładzie normalnym
PODSTAWOWE FUNKCJE DZIAŁAŃ NA TABLICACH
Y = sum(A)gdy:
A – wektor, funkcja sum zwraca jako Y sumę elementów wektora
A – tablica, funkcja sum zwraca jako Y wektor sum w kolumnach tablicy
Y = prod(A) gdy:
A – wektor, funkcja zwraca jako Y iloczyn elementów wektora
A – tablica, funkcja zwraca jako y wektor iloczynów elementów w kolumnach Y = diag(A)
Funkcja zwraca jako Y wektor z przekątnej głównej macierzy A
Y = det(A) funkcja zwraca jako Y wartość wyznacznika macierzy kwadratowej
Y = tril(A)
Funkcja zwraca jako macierz dolną trójkątną z macierzy A Y = triu(A)
Funkcja zwraca jako Y macierz górną trójkątną z macierzy A
Y = inv(A)
Funkcja zwraca pod nazwą Y macierz odwrotną do macierzy A
Y = max(A) gdy:
A jest wektorem funkcja zwraca wartość Y będącą max elementem wektora A A jest macierzą funkcja zwraca wektor wierszowy Y o elementach będących max z poszczególnych kolumn
Y = min(A) gdy:
A jest wektorem funkcja zwraca wartość Y będącą min elementem wektora A A jest macierzą funkcja zwraca wektor wierszowy Y o elementach będących min z poszczególnych kolumn tablicy A
Y = mean(A) gdy:
A jest wektorem funkcja zwraca pod nazwą Y średnią arytmetyczną jego elementów A jest macierzą - zwraca wektor wierszowy Y o elementach będących średnimi arytmetycznymi elementów poszczególnych kolumn tablicy A
Y = sort(A) lub Y = sort(A,’ascend’) gdy:
A jest wektorem funkcja zwraca jako Y wektor uporządkowany rosnąco A jest macierzą - sortuje każdą kolumnę A rosnąco
Y = sort(A, ‘descend’)
j.w. tylko dla uporządkowania malejącego
NORMY:
Y = norm(A,p)
p =1 - max suma modułów w kolumnach
∑
=≤
= ≤ n i n ij
j a
A
1 1
1 max
p = inf max suma modułów w wierszach A
p=‘fro’ – norma Frobeniusa
Jeśli
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
=
6 3 1
3 2 1
1 1 1
A wówczas
>> A_1=norm(A,1) A_1 =
10
>> A_inf=norm(A,'inf') A_inf =
10
>> A_fro=norm(A,'fro') A_fro =
7.9373
SZYBKIE TWORZENIE TABLIC – OPERATOR DWUKROPEK ( : )
Tworzenie wektora wierszowego:>> a= 1:5 % Tworzenie wektora wierszowego (to jest komentarz) a=
1 2 3 4 5
>> b=1:2:10 b =
1 3 5 7 9
>>c = 1:-2.5:-10
∑
=≤
= ≤ n j n ij
i a
A
1 1
inf max
∑∑
= == n
i n
j
fro aij
A
1 2
1
c =
1.0000 -1.5000 -4.0000 -6.5000 -9.0000 Transponowanie wektora wierszowego:
>> c=c' c = 1.0000 -1.5000 -4.0000 -6.5000 -9.0000
>> n = (1:5)’ % Tworzy wektor wierszowy i transponuje n =
1
2
3
4
5
>> potegi = [n n.^2 n.^3 2.^n ] % Tablica kwadratów, sześcianów i potęg liczby 2 ... % dla w/w tablicy n potegi = 1 1 1 2
2 4 8 4
3 9 27 8
4 16 64 16
5 25 125 32
Utworzenie tablicy wartości lnx dla danego zakresu x: >> x = (1:0.2:2)' x = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000 >> lnx = log(x) lnx = 0 0.1823 0.3365 0.4700 0.5878 0.6931
lub
>> lnx = [x log(x)]
lnx =
1.0000 0 1.2000 0.1823 1.4000 0.3365 1.6000 0.4700 1.8000 0.5878 2.0000 0.6931
ZNAK (: ) W WYRAŻENIACH INDEKSOWYCH
Wyrażenia indeksowe odnoszą się do części macierzy lub tablicy. Zapis:A(1:k,j)
oznacza k pierwszych elementów z j-tej kolumny tablicy A.
sum(A(1:4,4))
oznacza sumę elementów leżących w 4. kolumnie tablicy A.
Dwukropek odnosi się do wszystkich elementów w wierszu lub kolumnie macierzy / tablicy
Słowo kluczowe end odnosi się do ostatniego wiersza lub kolumny tablicy.
sum(A(:,end)) oznacza sumę wszystkich elementów leżących w ostatniej kolumnie tablicy A.
Na przykład:
A =
1 5 7 3 5 9 1 3 4 0 6 7
>> s=sum(A(1:3,2)) s =
13 – suma trzech pierwszych elementów z drugiej kolumny macierzy A.
>> suma_3=sum(A(3:end,end)) suma_3 =
11 – suma elementów w ostatniej kolumnie macierzy A z wierszy od 3 do ostatniego