MatLab - wprowadzenie
Marcin Kowalewski
1 Wprowadzenie do pracy w ±rodowisku MatLab
2
2 Liczby rzeczywiste i zespolone
3
3 Deniowanie i funkcje wspomagaj¡ce konstrukcje macierzy
4
3.1 Denicja przez wyliczenie elementów . . . . . . . . . . . . . . . . . . . . .
4
3.2 Denicja przez wygenerowanie elementów . . . . . . . . . . . . . . . . . . .
4
3.3 Denicja macierzy z wykorzystaniem innych macierzy . . . . . . . . . . . .
5
3.4 Funkcje pomagaj¡ce w budowaniu macierzy . . . . . . . . . . . . . . . . .
5
3.5 Odwoªania do elementów macierzy . . . . . . . . . . . . . . . . . . . . . .
6
3.6 Rozmiar i wy±wietlanie macierzy . . . . . . . . . . . . . . . . . . . . . . .
7
4 Dziaªania na macierzach
7
4.1 Operatory i wyra»enia tablicowe . . . . . . . . . . . . . . . . . . . . . . . .
7
5 Funkcje typu logicznego
9
1
1 Wprowadzenie do pracy w ±rodowisku MatLab
MATLAB - jest pakietem obliczeniowym oraz uniwersalnym j¦zykiem programowa-
nia wysokiego poziomu rmy MathWorks, przeznaczonym do wykonywania oblicze«
naukowo - in»ynierskich. Sercem pakietu jest interpreter j¦zyka umo»liwiaj¡cy im-
plementacj¦ algorytmów numerycznych oraz biblioteki podstawowych dziaªa« na
macierzach. Podstawowym typem danych jest macierz, st¡d nazwa MATrix LAB-
oratory. Pakiet posiada obszerne biblioteki dodatkowych procedur umo»liwiaj¡ce
rozwi¡zywanie typowych problemów obliczeniowych. Prosta budowa okienkowa
uªatwia korzystanie z programu. MATLAB wraz z bibliotekami mimo prostoty j¦zyka,
jest narz¦dziem niezwykle rozbudowanym wykorzystuj¡cym szeroki zakres wiedzy
wspóªczesnej zwi¡zanej z technik¡ obliczeniow¡. Zawarto±¢ pakietu Matlab w peªni
potwierdza slogan reklamowy rmy MathWorks: »ycie jest zbyt krótkie by pisa¢ p¦tle
do...loop.
Praca w ±rodowisku j¦zyka MATLAB mo»e odbywa¢ si¦ w dwóch trybach: interak-
tywnym, który polega na wydawaniu polece«, które po zatwierdzeniu wykonywane s¡
przez interpreter oraz wsadowym polegaj¡cy na tworzeniu m-plików (skryptów), zaw-
ieraj¡cych wi¦ksz¡ liczb¦ instrukcji.
Podstawienie:
a=3,14;
powoduje utworzenie zmiennej a o warto±ci 3.14.
rednik po poleceniu powoduje, »e warto±¢ b¦d¡ca wynikiem nie b¦dzie wy±wietlana na
ekranie. Polecenie
b=sin(a)
b = 0.0016
oblicza warto±¢ funkcji sinus dla zmiennej a, a wynik zapisuje do zmiennej b i wy±wietla
na ekranie. Je»eli nie podamy nazwy zmiennej to wynik dziaªania zostanie umieszczany
w standardowej zmiennej ans, np.:
sin(pi)
ans = 1.2246e-016
Utworzona zmienna jest pami¦tana od momentu utworzenia, a» do chwili jej usuni¦cia.
2
Nazwy zmiennych i informacje o nich mo»na uzyska¢ wywoªuj¡c funkcje who i whos. Aby
usun¡¢ zmienn¡ z pami¦ci nale»y wyda¢ polecenie clear zmienna, polecenie
clear
- usuwa wszystkie zmienne znajduj¡ce si¦ w pami¦ci. Aby zapisa¢ zmienne na dysku
wydajemy polecenie:
save nazwapliku
(domy±lnie przyjmowane jest rozszerzenie .mat).
Wczytanie danych z pliku dyskowego:
load nazwapliku
Mo»emy skorzysta¢ z podr¦cznej pomocy podaj¡cej opis funkcji:
help nazwafunkcji
Zawarto±¢ aktualnego katalogu mo»na wy±wietli¢ u»ywaj¡c funkcji dir lub ls w zale»no±ci
od u»ywanego OS.
Do zmiany katalogu sªu»y polecenie:
cd nazwakatalogu.
2
Liczby rzeczywiste i zespolone
Podstawowym typem dla elementów macierzy wykorzystywanym przez MATLAB s¡
liczby rzeczywiste. Maksymaln¡ i minimaln¡ warto±¢ liczby rzeczywistej dodatniej mo»na
pozna¢ za pomoc¡ funkcji realmax i realmin. Do okre±lenia sposobu, w jaki liczby
rzeczywiste s¡ przedstawione na ekranie sªu»y polecenie format typ, gdzie typ okre±la,
w jakiej postaci liczby rzeczywiste b¦d¡ wy±wietlane na ekranie (np. short, short e,
long, long e, hex, bank).
Przykªad: Przedstaw liczb¦ pi w ró»nej postaci u»ywaj¡c funkcji format.
format short
pi ans = 3.1416
format short e
pi ans = 3.1416e+000
format long
3
pi ans = 3.14159265358979
format long e
pi ans = 3.141592653589793e+000
Liczby mo»na podawa¢ w jednej z postaci:
a+b*i
a+b*j
a+b*sqrt(-1)
3 Deniowanie i funkcje wspomagaj¡ce konstrukcje
macierzy
3.1 Denicja przez wyliczenie elementów
A=[1 2 3 4; 1 1 1 1];
lub:
A=[1,2,3,4; 1,1,1,1]
lub:
A=[1 2 3 4
1 1 1 1]
lub:
A=[1,2...
3,4; 1,1,1,1]
A =
1 2 3 4
1 1 1 1
Poszczególne elementy macierzy oddziela si¦ spacjami lub przecinkami, a wiersze ±red-
nikami lub umieszcza si¦ je w oddzielnych liniach.
3.2 Denicja przez wygenerowanie elementów
A=[min:krok:max]
Polecenie generuje wektor zaczynaj¡c od warto±ci min, ko«cz¡c na elemencie o warto±ci
max z krokiem krok. Je»eli parametr krok zostanie pomini¦ty, to krok = 1.
4
Poni»szy przykªad wygeneruje macierz trzywierszow¡ o wyrazach od 1 do 10 w pierwszym
wierszu i o wyrazach od 2 do 20 w wierszu drugim i od 3 do 30 w trzecim.
A=[1:10; 2:2:20; 3:3:30]
A =
1 2 3
4
5
6
7
8
9
10
2 4 6
8
10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
3.3 Denicja macierzy z wykorzystaniem innych macierzy
Zdeniujmy macierze A, B i C nast¦puj¡co:
A=[1 2 3; 3 2 1];
B=[4 5; 0 -1];
C=[1 2 3 4 5; 1 1 1 1 1];
D=[A B; C]
A =
1 2 3 4
5
3 2 1 0 −1
1 2 3 4
5
1 1 1 1
1
Nale»y pami¦ta¢ o zgodno±ci wymiarów.
Powy»sze funkcje konstrukcji macierzy mo»na ª¡czy¢, np.
A=[1 2 3; 3 2 1];
i deniujemy macierz
D=[2:2:8; [0; 4], A]
D =
2 4 6 8
0 1 2 3
4 3 2 1
3.4 Funkcje pomagaj¡ce w budowaniu macierzy
5
Funkcja
Opis
eye(n), eye(m,n)
macierz jednostkowa o n × n lub
n × m
wymiarze
ones(n), ones(m,n)
macierz skªadaj¡ca si¦ z samych jedynek
zeros(n), zeros(m,n)
macierz skªadaj¡ca si¦ z samych zer
rand(n), rand(m,n)
wypeªnia macierz liczbami pseudolosowymi
o rozkªadzie jednostajnym na [0, 1]
randn(n), randn(m,n)
jak wy»ej tylko rozklad ma EX = 0 oraz V = 1
linspace(x
1
, x
2
), linspace(x
1
, x
2
, n
)
generuje wektor wierszowy 100 (n) liczb
równomiernie rozmieszczonych pomi¦dzy
liczbami x
1
a x
2
longspace(x
1
, x
2
), longspace(x
1
, x
2
, n
) generuje wektor wierszowy 50 (n) liczb
równomiernie rozmieszczonych pomi¦dzy
liczbami 10
x
1
a 10
x
2
3.5 Odwoªania do elementów macierzy
Niech
A=[1 2 3 4 5 6; 6 5 4 3 2 1; 1 1 2 2 3 3]
A =
1 2 3 4 5 6
6 5 4 3 2 1
1 1 2 2 3 3
Polecenie A(i,j) zwraca element macierzy A stoj¡cy w i-tym wierszu i w j-tej kolumnie,
np. A(2,3)
ans = 4
Polecenie A(1:3, 2:4) zwróci macierz
ans =
2 3 4
5 4 3
1 2 2
a zatem zakres wierszy od 1 do 3 oraz zakres kolumn od 2 do 4.
Polecenie A(3, :) lub A(3, 1:6) zwróci nam caªy trzeci wiersz.
6
Polecenie A(:,[3 6]) zwróci nam kolumny trzeci¡ i szóst¡.
Polecenie A(:,[1:3 6]) zwróci nam kolumny od 1 do 3 i szóst¡.
Polecenie A([2 3], 2:2:6) zwróci nam macierz powstaª¡ z przeci¦cia wierszy 2 i 3 oraz
kolumn 2, 4, 6.
Polecenie A(:, 6) = [ ] usunie z macierzy A szóst¡ kolumn¦ (podstawi za t¦ kolumn¦
kolumn¦ pust¡).
3.6 Rozmiar i wy±wietlanie macierzy
Polecenie disp(A) wysyªa zawarto±¢ macierzy naekran bez wypisywania nazwy zmiennej.
Polecenie [n,m] = size(A) zwraca liczb¦ wierszy n oraz kolumn m macierzy A.
Polecenia n = size(A,1) oraz m = size(A,2) zwracaj¡ odpowiednio liczb¦ wierszy n
oraz liczbe kolumn m macierzy A.
Polecenie n = length(X) zwraca dªugo±¢ wektora X, je»eli X jest macierz¡, to zwracany
jest dªu»szy z jej wymiarów.
4 Dziaªania na macierzach
Dziaªa« na macierzach dokonujemy za pomoc¡ operatorów +, -, *, dodawanie, odej-
mowanie, mno»enie, odpowiednio. Musimy tylko pami¦ta¢ o pewnych zasadach:
Przy dodawaniu i odejmowaniu musi si¦ zgadza¢ liczba wierszy i kolumn, tzn.
[A]
n×m
± [B]
n×m
= [C]
n×m
Przy mno»eniu musimy pami¦ta¢ aby liczba kolumn pierwszej macierzy byªa równa
liczbie wierszy macierzy drugiej, tzn.
[A]
n×m
∗ [B]
m×k
= [C]
n×k
Transpozycji macierzy A dokonujemy poleceniem A'.
Macierz odwrotn¡ do macierzy A, gdzie det(A) 6= 0 uzyskamy poleceniem A (-1).
4.1 Operatory i wyra»enia tablicowe
Ka»da macierz jest tablic¡ przechowuj¡c¡ liczby. MAtLab udostepnia operatory wykonu-
j¡ce operacje na ka»dym elemencie tablicy z osobna. S¡ to operatory tablicowe.
7
Dziaªania
Je±li chodzi o dodawanie nie ma tu »adnej ró»nicy.
Operator .* oznacza mno»enie dwóch macierzy o tych samych wymiarach.
[a
ij
]
n×m
. ∗ [b
ij
]
n×m
= [a
ij
b
ij
]
n×m
gdzie i = 1, 2, . . . , n oraz j = 1, 2, . . . , m.
Operator ./ oznacza dzielenie element po elemencie dwóch macierzy o tych samych wymi-
arach.
[a
ij
]
n×m
./[b
ij
]
n×m
= [a
ij
/b
ij
]
n×m
gdzie i = 1, 2, . . . , n oraz j = 1, 2, . . . , m.
Aby pomno»y¢ wszystkie elementy macierzy A przez liczb¦ r wykonujemy polecenie
r*A
Podobnie mo»emy dzieli¢ elementy macierzy A przez dowoln¡ liczb¦ r 6= 0.
Operator . umo»liwia podniesienie ka»dego elementu danej macierzy do dowolnej pot¦gi,
np.
2.3
ans = 8
Funkcje
Funkcja
Opis
sqrt(X)
pierwiastki kwadratowe elementów macierzy X
sin(X) cos(X) tan(X)
funkcje trygonometryczne
asin(X) acos(X) atan(X)
funkcje cyklometryczne
sinh(X) cosh(X) tanh(X)
funkcje hiperboliczne
asinh(X) acosh(X) atanh(X) funkcje odwrotne do hiperbolicznych
8
Funkcja
Opis
sqrt(X)
pierwiastki kwadratowe
exp(X)
macierz o elementach e
x
ij
pow2(X)
pot¦gi liczby 2
log(X)
logarytm naturalny elementów macierzy X
log2(X)
logarytm o podstawie 2
log10(X)
logarytm dziesi¦tny
abs(Z)
moduªy liczb zespolonych
real(Z)
cz¦±ci rzeczywiste
angle(Z)
argumenty elementów macierzy Z
imag(Z)
cz¦±ci urojone
conj(Z)
macierz sprz¦»ona do Z
ceil(X)
zaokr¡glenie elementów w gór¦
floor(X)
zaokr¡glenie elementów w dóª
fix(X)
zaokr¡gla elementy dodatnie z dóª, ujemne w gór¦
round(X)
zaokr¡glenie do najbli»szej liczby caªkowitej
sign(X)
tworzy macierz zast¦puj¡c elementy dodatnie 1
elementy ujemne -1 oraz równe zero 0
rem(X, Y) reszta z dzielenia odpowiadaj¡cym sobie
elementów macierzy X i Y
gcd(a,b)
NWD(a,b)
lcm(a,b)
NWW(a,b)
5 Funkcje typu logicznego
W MatLabie logiczna prawda odpowiada macierzy zawieraj¡cej wyª¡cznie elementy nieze-
rowe, natomiast logiczny faªsz odpowiada macierzy pustej lub zawieraj¡cej co najmniej
jedno zero.
9
Wyra»enie (operator) Relacja (funkcja)
x == y
x równe y
x = y
x ró»ne y
x < y
x mniejsze y
x > y
x wi¦ksze y
x <= y
x mniejsze równe y
x >= y
x wi¦ksze równe y
x | y
alternatywa: 1 - tam gdzie conajmniej jeden
z operatorów jest ró»ny od zera
x & y
koniunkcja: 1 - tam gdzie oba
operatory s¡ niezerowe
xor(x,y)
ró»nica symetryczna: 1 - tam gdzie jeden
z operatorów jest ró»ny od zera, ale nie oba naraz
x
negacja
Przykªad:
Dla A = [1 4 8] i B = [2 4 6], operacja
A < B
zwróci wynik [1 0 0].
Dla A = [1 0 8] i B = [2 0 0], operacja
A | B
zwróci wynik [1 0 1], natomiast operacja
xor(A,B)
zwróci wynik [0 0 1].
Funkcja
Dziaªanie
exist('nazwa') zwraca 1 gdy macierz 'nazwa' istnieje
isempty(X)
zwraca 1 gdy X jest macierz¡ pust¡
issparse(X)
zwraca 1 gdy X jest macierz¡ rzadk¡
isstr(X)
zwraca 1 gdy X jest ªa«cuchem tekstowym
isglobal
zwraca 1 gdy X jest zmienn¡ globaln¡
10
any(X)
je±li X jest wektorem, zwraca 1 gdy którykolwiek z elementów
jest niezerowy je±li X jest macierz¡ traktuje macierz jako
wektor kolumn i tworzy wektor zawieraj¡cy 1 gdy którykolwiek
z elementów kolumny jest niezerowy
all(X)
podobnie jak wy»ej, tylko zwraca 1 gdy wszystkie
elementy s¡ niezerowe
I = find(X)
zwraca indeksy niezerowych elementów macierzy X
w pierwszym wypadku zwraca indeksy wektora
[I,J] = find(X)
jak poprzednio zwraca indeksy wierszy i kolumn dla których
elementy s¡ niezerowe
[I,J,V] = find(X) tak jak poprzednio, tylko dodatkowo jest zwracany wektor V
zawieraj¡cy elementy macierzy X o wspóªrz¦dnych
podanych w wektorach I i J
isnan(X)
zwraca macierz zawieraj¡c¡ 1 tam, gdzie
gdzie odpowiadaj¡ce elementy maj¡ warto±¢ NaN,
(nie liczb¦)
isinf(X)
zwraca macierz zawieraj¡c¡ 1 tam, gdzie
gdzie odpowiadaj¡ce elementy maj¡ warto±¢ -inf lub +inf,
(−∞ lub +∞)
finite(X)
zwraca macierz zawieraj¡c¡ 1 tam, gdzie
gdzie odpowiadaj¡ce elementy maj¡ warto±¢ sko«czon¡
11