Professional Documents
Culture Documents
Matlab 01
Matlab 01
Podstawy Informatyki
Programowanie w Matlab
Wstęp
Czym jest Matlab?
MATLAB (Matrix Laboratory) to pakiet programowy, który przeznaczony jest do wykony-
wania złożonych obliczeń numerycznych oraz graficznej prezentacji wyników. Pakiet stanowi
interaktywne środowisko łączące obliczenia, wizualizację i programowanie. Daje użytkowni-
kowi możliwość korzystania z setek wbudowanych funkcji obliczeniowych, które wykorzy-
stują sprawdzone metody numeryczne, oraz z funkcji graficznych i animacyjnych. Dostępne
funkcje pozwalają w prosty sposób rozwiązać wiele problemów inżynierskich bez konieczno-
ści posiadania gruntownej wiedzy o szczegółach zastosowanej metody numerycznej. Oblicze-
nia wykonywane w Matlabie są wiarygodne, gdyż biblioteki Matlaba zawierają sprawdzone
funkcje pisane w większości przez specjalistów, nie powinny więc zawierać błędów. Oczywi-
ście możliwa jest w niektórych obliczeniach kumulacja błędów wynikająca z niedokładności
reprezentacji numerycznej danych, i w takich przypadkach Matlab ostrzega o możliwej nie-
dokładności wyników.
Strona 1 z 10
Podstawy Informatyki 3 – ćwiczenia01
Interfejs
Głównym oknem Matlaba jest Command Window. Praca w trybie bezpośrednim (interak-
tywnym) polega na wpisywaniu poleceń w tekstowym oknie poleceń. Ten sposób komunika-
cji z programem, choć przypomina dawne systemy operacyjne, nie powinien odstraszać użyt-
kowników zdominowanych przez współczesne, wszechobecne interfejsy graficzne. Okazuje
się bowiem, że od trybu bezpośredniego do pośredniego, czyli do programowania, jest tylko
jeden krok. Skrypty, o których będzie mowa w dalszych ćwiczeniach, to nic innego, jak wiele
poleceń zapisanych w jednym pliku i uruchamianych jednym poleceniem.
Obok okna poleceń, które jest niezbędne do komunikacji z programem, użytkownik ma do
dyspozycji kilka okien pomocniczych. Są to Command History, Current Directory, Work-
space, Launch Pad, Profiler, Help. Rysunek 1 przedstawia typowy układ okien. W oknie
poleceń pojawiają się polecenia wydawane przez użytkownika oraz wyniki (odpowiedzi) Ma-
tlab. Historia poleceń zawiera wszystkie polecenia wydane w bieżącej sesji natomiast works-
pace to lista aktualnie dostępnych zmiennych wraz z informacją o rozmiarze i typie elemen-
tów.
[A B C …] = polecenie(a, b, c, …)
Strona 2 z 10
Podstawy Informatyki 3 – ćwiczenia01
stując przy tym predefiniowane stałe (np. liczbę pi) oraz intuicyjne nazwy funkcji (np.
sin(x), cos(x) czy log(x)).
Po uruchomieniu Matlab zgłasza się znakiem >>, który oznacza gotowość wykonania polece-
nia.
Przykład 1.1.
W pierwszym ćwiczeniu sprawdźmy czy 2+3 to na pewno 5. W Matlab działanie to można
zrealizować na wiele sposobów. Spróbujmy najprostszego, najbardziej intuicyjnego. Po znaku
gotowości >> wpiszmy:
2+3 (1.1)
Odpowiedź:
ans =
Wpiszmy:
who (1.2)
ans
Jeżeli wpiszemy:
ans (1.3)
Matlab odpowie:
ans =
wyświetli zatem wartość zmiennej o nazwie ans. Spróbujmy teraz to samo działanie prze-
prowadzić w sposób nieco bardziej formalny. Zdefiniujmy dwie zmienne a=2 oraz b=3 na-
tomiast zmiennej c przypiszmy wartość wyrażenia a+b. W oknie poleceń wpiszmy:
Odpowiedź Matlaba
Strona 3 z 10
Podstawy Informatyki 3 – ćwiczenia01
c =
Po kolei. Polecenie a=2 przypisuje zmiennej o nazwie a wartość 2. Średnik na końcu polece-
nia wskazuje na to, że nie oczekujemy wyświetlania wyniku polecenia (jest on oczywiście
przechowywany w pamięci programu) oddzielając jednocześnie kilka poleceń wpisanych w
jednym wierszu. Polecenie c=a+b przypisuje zmiennej c sumę a i b. Ponieważ po ostatnim
poleceniu nie ma średnika Matlab wyświetla wartość zmiennej c (czyli 5).
Jeżeli jednak chcemy zobaczyć odpowiedź Matlab na wszystkie polecenia wpisywane w jed-
nym wierszu, powinny one być oddzielone przecinkami.
Proszę wykonać poniższe polecenia zwracając za każdym razem baczną uwagę na odpowie-
dzi generowane przez program.
Wpisując teraz komendę who w odpowiedzi zobaczymy listę wszystkich zmiennych znajdu-
jących się w pamięci (w tzw. przestrzeni roboczej). Zmienne te możemy również zobaczyć
aktywując zakładkę okna pomocniczego Workspace.
Ćwiczenie 1.1.
Wykonaj kolejno następujące polecenia:
Strona 4 z 10
Podstawy Informatyki 3 – ćwiczenia01
Zmienne
Elementem wyróżniającym Matlab spośród innych języków jest przyjęty format zmiennych:
są nim wyłącznie macierze (stąd nazwa Matlab: Matrix Laboratory). W formie macierzy za-
pisywane są zarówno zmienne numeryczne, jak i logiczne czy tekstowe. Szczególnym przy-
padkiem są wektory – macierze jednokolumnowe lub jednowierszowe i liczby – macierze o
wymiarze 1×1. (Sprawdź w oknie Workspace, że zmienne a, b i c z poprzedniego przykładu
to nic innego jak macierze o wymiarze 1×1. Również polecenie whos pozwoli wyświetlic
nazwy i wymiary zmiennych). W ogólnym przypadku zmienne mają wymiar dowolny.
Zmienną w Matlab można zdefiniować na wiele sposobów:
• wprowadzając elementy w wierszu poleceń
• generując elementy
• budując z innych macierzy
• wykorzystując mieszankę powyższych technik
Nazwy zmiennych w Matlabie powinny zaczynać się od litery i nie powinny zawierać spacji,
polskich liter i znaków zastrzeżonych (np. operatorów arytmetycznych +, * itp.). Trzeba rów-
nież pamiętać, że Matlab rozróżnia wielkość liter, tzn. odróżnia litery małe od wielkich.
Zatem zmienne y0 i Y0 oznaczają dwie różne zmienne.
Przykład 1.2.
Wpisz następujące polecenia:
X=[2, 5, 7, 8] – wektor wierszowy
Y=[1, 2, 4]’ - wektor kolumnowy; uwaga: znak ’oznacza transpozycję wektora
X=X’
W=1:6 - generowanie elementów od 1 do 6 z domyślnym krokiem 1
Z=0:0.1:1 - generowanie elementów od 0 do 1 z krokiem 0.1
Przykład 1.3.
Proszę sprawdzić wynik polecenia:
sin(0:pi/4:2*pi)
Alternatywnie wektor zawierający wartości funkcji sinus w przedziale <0, 2π> można uzy-
skać w następujący sposób:
alfa=0:pi/4:2*pi; sin(alfa)
Polecenie powyższe jest doskonałym przykładem macierzowej natury środowiska Matlab.
Polecenie sin(alfa) zwraca macierz o wymiarach macierzy alfa. Użytkownik nie musi
troszczyć się, czy jest to liczba, wektor czy macierz dwu- lub wielowymiarowa.
Strona 5 z 10
Podstawy Informatyki 3 – ćwiczenia01
Macierze dwuwymiarowe
Elementy macierzy dwuwymiarowych podaje się w nawiasach kwadratowych wpisując ele-
menty wiersza oddzielone spacjami natomiast same wiersze oddzielone są średnikami.
Wpiszmy:
a=[11 12 13;21 22 23] (1.8)
W wyniku otrzymujemy:
a =
11 12 13
21 22 23
Polecenia (1.9), (1.10) i (1.11) dają dokładnie taki sam efekt jak polecenie (1.8). Pojawiają się
natomiast godne uwagi możliwości:
• usuwanie zmiennej z workspace clear <nazwa>
• adresowanie elementów macierzy nazwa(i,j)
• kontynuacja długiego polecenia ...
a(2,2)/a(1,1) (1.12)
Funkcja Opis
macierz o wymiarach m×n z jedynkami na głównej przekątnej (macierz
eye(m,n)
jednostkowa gdy m=n; można wywołać w skróconej postaci eye(n))
ones(m,n) macierz m×n o wszystkich elementach równych 1
zeros(m,n) macierz m×n o wszystkich elementach równych 0
macierz m×n liczb pseudolosowych o rozkładzie jednostajnym na prze-
rand(m,n)
dziale <0, 1>
macierz m×n liczb pseudolosowych o rozkładzie normalnym o wartości
randn(m,n)
średniej 0 i wariancji 1
Strona 6 z 10
Podstawy Informatyki 3 – ćwiczenia01
Przykład 1.4.
Proszę wykonać poniższe polecenia zwracając za każdym razem baczną uwagę na odpowie-
dzi generowane przez program.
a=eye(5) (1.14)
a=eye(3,5) (1.15)
a=ones(3) (1.16)
a=rand(5) (1.17)
Kolejnym sposobem definiowania macierzy jest wykorzystanie kolumn, wierszy lub pojedyn-
czych elementów macierzy istniejących w przestrzeni roboczej. Poniższa tabela zawiera sze-
reg metod i funkcji pomocnych w tego typu operacjach macierzowych.
Polecenie Opis
A(i,j) element z i-tego wiersza oraz j-tej kolumny macierzy A
A(i,:) i-ty wiersz macierzy A
A(:,j) j-ta kolumna macierzy A
A(i,m:n) wszystkie elementy z i-tego wiersza o numerach od m do n
macierz złożona z wierszy o numerach od k do l i kolumn od m do n
A(k:l,m:n)
macierzy a
A lub A(:,:) cała macierz A
disp(A) wyświetla zawartość macierzy A bez zamieszczania nazwy zmiennej
ndims(A) wyświetla liczbę wymiarów macierzy A
wyświetla wektor wierszowy zawierający liczbę elementów w każ-
size(A)
dym z wymiarów macierzy A
zwraca liczbę elementów w pierwszym wymiarze macierzy A, dla
size(A,1)
macierzy dwuwymiarowej jest to liczba wierszy
Jeśli A jest wektorem to tworzy macierz ze składnikami wektora A na
diag(A) głównej przekątnej. Jeśli A jest macierzą to zwraca wektor złożony z
elementów znajdujących się na diagonali macierzy A
inv(A) tworzy macierz odwrotną do A
repmat(A,n,m) powielenie macierzy A n razy w pionie i m razy w poziomie
rot90(A) obrócenie macierzy A o 90° przeciwnie do ruchu wskazówek zegara
scalenie macierzy A i B ze względu na wiersze (macierz B przyklejo-
cat(1,A,B)
na pod macierzą A) . Taki sam efekt uzyskamy poleceniem [A; B]
scalenie macierzy A i B ze względu na kolumny (macierz B przykle-
cat(2,A,B)
jona z prawej strony do macierzy A), odpowiednik polecenia [A B]
Ćwiczenie 1.2.
Wykorzystując różne polecenia proszę zbudować macierz, która na przekątnej prostopadłej do
przekątnej głównej będzie miała wartości od 2 do 5 (licząc od lewego, dolnego rogu). Pozo-
0 0 0 5
0 0 4 0
stałe elementy mają być zerami, czyli:
0 3 0 0
2 0 0 0
Strona 7 z 10
Podstawy Informatyki 3 – ćwiczenia01
Ćwiczenie 1.3.
Istnieje pewna dwuwymiarowa macierz kwadratowa, o dowolnej liczbie wierszy większej lub
równej od 3, zwana magiczną. Ma tę własność, że suma elementów w każdej z kolumn jest
taka sama. Co więcej, również suma elementów każdego z wierszy jest tą samą liczbą. O ma-
gicznym pochodzeniu tej macierzy przesądza jednak fakt, że suma elementów leżących na
głównych przekątnych też jest taka sama. Wiedząc, że funkcja sum(a) wyświetla wektor
wierszowy, zawierający sumy elementów w kolumnach macierzy a, wykaż, że macierz utwo-
rzona poleceniem magic(5) jest macierzą magiczną.
Podsumowanie ćwiczeń 1
• Lista zmiennych who lub whos
• Wartości zmiennej <nazwa>
• Polecenie bez wyświetlania wyniku <polecenie>;
• Kilka poleceń w wierszu <pol1>, <pol2>, … lub
<pol1>; <pol2>; …
• Usuwanie zmiennej z workspace clear <nazwa>
• Usuwanie wszystkich zmiennych clear lub clear all
• Adresowanie elementów macierzy nazwa(i,j)
• Macierz transponowana nazwa’
• Wektor „od a do b z krokiem c” a:c:b
• Operatory macierzowe + - * / \ ^ ‘
• Operatory tablicowe + - .* ./ .^ ‘
Strona 8 z 10
Podstawy Informatyki 3 – ćwiczenia01
Zadania do ćwiczeń 01
−1
25 1
1.1. Oblicz wartość wyrażeń: 5 oraz 1 − 5
2 −1 2
1+ x
1.2. Oblicz wartość wyrażenia: y = 3 dla x = 0.2
1− x
1.3. Oblicz wartość wyrażeń: ln(e 2 ) oraz log10 (e 2 )
π π
1.4. Oblicz wartość wyrażenia: sin 2 + cos 2
4 4
π
i
3
π π
1.5. Oblicz wartość wyrażeń: e oraz cos + i sin
3 3
x + y /( x 2 + 4) 1 + cos( y − 2)
c) a = (1 + y ) , b= ;
e − x − 2 + 1 /( x 2 + 4) x 4 + sin 2 z
2 cos( x − π / 6) z
d) a= , b = 1 + tg 2 ;
1 / 2 + sin 2 y 2
e) a = ln | ( y − | x | ) x − y
|,
1
b = cos 2 (arc tg );
2
z + x /4 z
1 0 1 2
1.9. Zdefiniuj macierze A i B : A = ; B=
3 2 3 4
1.10. Wykorzystując funkcje eye(n) oraz zeros(n) oraz macierze A i B i wektor X zbuduj
1 0 1 0
3 2 0 1
macierz C = 0 0 1 2
0 0 3 4
1 3 5 7
Strona 9 z 10
Podstawy Informatyki 3 – ćwiczenia01
π 2π 4π 5π
1.13. Dla wektora t = 0; ; ;π; ; ; 2π oblicz wartości funkcji x = sin(t)
3 3 3 3
t −1
1.14. Dla wektora t z poprzedniego zadania oblicz wartości funkcji y = oraz funkcji
t +1
z = t sin(t)
1.17. Utwórz macierz o wymiarach 5 × 6 złożoną z liczb losowych z przedziału <0; 20>
1.18. Utwórz macierz o wymiarach 4 × 4 złożoną z liczb losowych z przedziału <20; 30>
Strona 10 z 10