Professional Documents
Culture Documents
Matlab 02
Matlab 02
Podstawy Informatyki
Programowanie w Matlab
Ćwiczenia 2
Podstawowe funkcje i stałe
W ćwiczeniu 1 poznaliśmy podstawowe operacje matematyczne. Poniżej znajduje się tabela
zawierająca nazwy i opis podstawowych funkcji wbudowanych w Matlab. Poszczególne ope-
racje wykonywane są na każdym elemencie macierzy wejściowej (a).
Funkcja Opis
sin(a), cos(a), tan(a), funkcje trygonometryczne; argument podawany
cot(a) w radianach (pi jest stałą przybliżającą wartość
liczby π)
asin(a), acos(a), atan(a), funkcje cyklometryczne
acot(a)
sinh(a), cosh(a), tanh(a), funkcje hiperboliczne
coth(a)
asinh(a), acosh(a), atanh(a) funkcje odwrotne do hiperbolicznych
sqrt(a) pierwiastek kwadratowy
exp(a) funkcja ea
log(a), log2(a), log10(a) odpowiednio ln(a), log2a, log10a
abs(a) wartość bezwzględna
angle(a), real(a) , imag(a) argument, część rzeczywista i urojona liczby
zespolonej
conj(a) liczba zespolona sprzężona
ceil(a) zaokrąglenie do liczby całkowitej w górę
floor(a) zaokrąglenie do liczby całkowitej w dół
fix(a) zaokrąglenie liczby dodatniej w dół,
ujemnej w górę
round(a) zaokrąglenie do najbliższej liczby całkowitej
rem(a,b) reszta z dzielenia a przez b
sign(a) funkcja signum (1 dla a>0, 0 dla a=0. –1 dla
x<0)
Istnieje również grupa funkcji zaprojektowanych głównie dla wektorów i macierzy. Jeżeli
argumentem takiej funkcji jest macierz, operacje wykonywane są dla każdej jej kolumny, a
wynikiem wówczas jest wektor wierszowy o wymiarze odpowiadającym liczbie kolumn w
macierzy.
Funkcja Opis
min(a), max(a) wielkość minimalna, maksymalna
mean(a), median(a) średnia arytmetyczna, mediana
cov(a), std(a) kowariancja, odchylenie standardowe
sum(a) suma
prod(a) iloczyn
Strona 1 z 8
Podstawy Informatyki 3 – ćwiczenia02
Ćwiczenie 2.1.
Proszę sprawdzić wszystkie powyższe funkcje. Należy zauważyć, że w Matlabie argumentem
wejściowym funkcji może być wynik innego polecenia. W szczególności proszę sprawdzić i
skomentować następującą operację
min(min(round(10*rand(5)))) (2.1)
Operatory relacji
Istnieje sześć operatorów relacji:
< mniejsze
<= mniejsze lub równe
> większe
>= większe lub równe
== równe
~= różne od
Argumentami relacji są macierze o tych samych wymiarach natomiast wynikiem jest macierz
o wymiarach takich samych jak argumenty, której elementy są równe 0 lub 1 w zależności od
wyniku relacji.
Ćwiczenie 2.2.
Proszę wprowadzić do pamięci macierze a i b (polecenie 2.2) oraz sprawdzić wszystkie moż-
liwe relacje pomiędzy ich elementami, tzn. a<b, a<=b, a>b, a>=b, a==b, a~=b
all(a) (2.3)
sprawdza, czy wszystkie elementy wektora są różne od zera, jeżeli a jest macierzą Matlab
sprawdza każdą kolumnę a wynikiem jest wektor zer i jedynek.
any(a) (2.4)
sprawdza, czy którykolwiek z elementów wektora jest różny od zera
isempty(a) (2.5)
isempty([]) (2.6)
zwraca 1 jeżeli macierz nie ma wartości.
Strona 2 z 8
Podstawy Informatyki 3 – ćwiczenia02
Tworzenie m-plików
Polecenia i wyrażenia w Matlabie można wprowadzać bezpośrednio w oknie Command Win-
dow i natychmiast je wykonywać. Innym sposobem jest zapisywanie ich w plikach teksto-
wych o rozszerzeniu .m (stąd zwanych często m-plikami) i wykonywać je w trybie pośrednim
(wsadowym) podając nazwę odpowiedniego pliku (bez rozszerzenia). M-pliki są zatem ko-
dami źródłowymi programów, które są interpretowane i wykonywane w środowisku Matlaba.
Mamy dwa typy m-plików: skrypty i funkcje. Struktura m-plików oraz różnice między skryp-
tem a funkcją opisane będą w następnych rozdziałach. Obydwa pozwalają na budowanie wła-
snych poleceń uruchamianych dokładnie tak jak wewnętrzne polecenia Matlaba (których
większość również zapisana jest w postaci m-plików). Dają tym samych ogromne możliwości
dostosowania środowiska obliczeniowego do własnych potrzeb.
Ponieważ m-pliki są zwykłymi plikami tekstowymi, można je tworzyć używając dowolnego
edytora tekstu (na przykład Notatnika). Matlab zawiera jednak wbudowany edytor zoptymali-
zowany pod kątem pisania oraz analizy poprawności skryptów oraz funkcji. Okno tego edyto-
ra wywoływane jest komendą edit wydaną w oknie poleceń lub przez wywołanie polecenia
New -> M- file z menu File.
M-pliki zapisywane są w bieżącym katalogu roboczym (Current Directory), a ich nazwy mu-
szą spełniać te same warunki co nazwy zmiennych (zaczynać się od litery, nie zawierać spa-
cji, innych znaków specjalnych oprócz ewentualnie podkreślenia, nie zawierać polskich liter
itp.). Zapisany plik powinien mieć nazwę z rozszerzeniem .m aby mógł być rozpoznany przez
Matlab jako plik zawierający kod źródłowy programu i odpowiednio zinterpretowany i wyko-
nany,
Skrypty
Skrypty są najprostszym rodzajem m-plików. Nie mają ani parametrów wejściowych ani wyj-
ściowych. Są tak naprawdę zapisem sekwencji poleceń wydawanych w trybie bezpośrednim, i
tak też są interpretowane przez Matlab. Skrypty operują na zmiennych już istniejących w
przestrzeni roboczej, mogą również tworzyć tam nowe zmienne. Zmienne utworzone w
skrypcie pozostają w przestrzeni roboczej po zakończeniu wykonywania poleceń zawartych w
skrypcie. Stanowi to istotną różnicę w stosunku do działania innych m-plików, funkcji, któ-
rym Matlab przydziela osobną pamięć w momencie uruchomienia, a po zakończeniu funkcji
wartości zmiennych lokalnych dla tej funkcji są usuwane z pamięci i nie są dostępne w prze-
strzeni roboczej Matlaba.
Strona 3 z 8
Podstawy Informatyki 3 – ćwiczenia02
Ćwiczenie 2.2.
Używając wewnętrznego edytora Matlab, proszę utworzyć i zapisać skrypt o nazwie
wyz_ilo.m , w którym zdefiniujemy podane niżej macierze a i b, obliczymy ich iloczyn
oraz wyznacznik tego iloczynu. Proszę także uruchomić ten skrypt wpisując w oknie poleceń
nazwę utworzonego pliku (bez rozszerzenia).
1 3 4 3 6 3
a = 2 3 4, b = 2 3 4
2 5 2 3 5 2
Tworząc skrypty i funkcje możemy korzystać z całego arsenału poleceń i instrukcji programi-
stycznych jakimi dysponuje język programowania Matlab. Podstawowymi instrukcjami w
każdym języku programowania są instrukcje warunkowe oraz instrukcje pętli.
Instrukcja warunkowa if
Instrukcja warunkowa if („jeżeli to”) ma postać standardową dla wielu języków programo-
wania. Mianowicie:
if wyrażenie logiczne
instrukcje
elseif wyrażenie logiczne
instrukcje
else
instrukcje
end
Instrukcję warunkową można wprowadzać w oknie poleceń linijka po linijce. Kiedy wiersz
zaczyna się od słowa kluczowego if Matlab przestaje wyświetlać wynik obliczeń po każdo-
razowym naciśnięciu klawisza Enter dopóki nie zostanie wprowadzona linia zamykającą
instrukcję ze słowem end. Wtedy analizowana jest cała instrukcja i wyświetlany wynik. Wy-
godniej jednak zapisywać te polecenia w skrypcie. Mamy wtedy możliwość łatwego popra-
wienia w edytorze ewentualnych błędów.
Przykład 2.1.
Proszę napisać skrypt z instrukcją warunkową, w którym wygenerujemy liczbę losową cał-
kowitą z przedziału <0;10> oraz jeżeli liczba ta będzie mniejsza lub równa 5 to przypiszemy
zmiennej wynik wartość 0, a jeżeli będzie większa od 5 to przypiszemy zmiennej wynik war-
tość 1.
Strona 4 z 8
Podstawy Informatyki 3 – ćwiczenia02
Zapisz skrypt pod nazwą przyklad2_1.m a następnie uruchom go wpisując w oknie poleceń
jego nazwę (bez rozszerzenia):
>>przyklad2_1
switch zmienna
case wartość1
instrukcje
case wartość2
instrukcje
case wartość3
instrukcje
otherwise
instrukcje
end
Przykład 2.2.
Proszę napisać skrypt z instrukcją switch, w którym wygenerujemy liczbę losową całkowitą z
przedziału <0;10> , a następnie przypiszemy zmiennej wynik wartość sinusa wygenerowanej
liczby jeżeli była to jedynka, cosinusa dla dwójki i tangensa w przeciwnym wypadku.
%Przyklad2_2 Instrukcja warunkowa switch
liczba=round(10*rand(1)) (2.8)
switch liczba
case 1
wynik=sin(liczba)
case 2
wynik=cos(liczba)
otherwise
wynik=tan(liczba)
end
Zapisz skrypt pod nazwą przyklad2_2.m a następnie uruchom go wpisując w oknie poleceń
jego nazwę (bez rozszerzenia):
>>przyklad2_2
Strona 5 z 8
Podstawy Informatyki 3 – ćwiczenia02
for zmienna=zakres
instrukcje_powtarzane
end
while wyrażenie_logiczne
instrukcje_powtarzane
end
Przykład 2.3.
Proszę napisać skrypt z instrukcją for, w którym wyświetlimy 10 liczb losowych całkowitych
z przedziału <0, 10>.
%Przyklad2_3 Instrukcja pętli wyliczanej
for i=1:10 (2.9)
disp(round(10*rand(1)))
end
disp(a)
Zapisz skrypt pod nazwą przyklad2_3.m a następnie uruchom go wpisując w oknie poleceń
jego nazwę (bez rozszerzenia):
>>przyklad2_3
Przykład 2.4.
Proszę napisać skrypt z dwoma zagnieżdżonymi instrukcjami for, w którym zbudujemy ma-
cierz o rozmiarach 5x5 (czyli 5 wierszy i 5 kolumn) składającą się z elementów o wartościach
i− j
aij = gdzie i oraz j oznaczają indeksy wierszy oraz kolumn.
i+ j
Zapisz skrypt pod nazwą przyklad2_4.m a następnie uruchom go wpisując w oknie poleceń
jego nazwę (bez rozszerzenia):
>>przyklad2_4
Strona 6 z 8
Podstawy Informatyki 3 – ćwiczenia02
Przykład 2.5.
Proszę napisać skrypt, w którym stablicujemy funkcję e − x zaczynając od 0 z krokiem 0.1 a
obliczenia będziemy kontynuować dopóty, dopóki wartości funkcji są większe od zadanej
wartości epsilon = 0.01 . Proszę podać ile wartości funkcji e − x zostanie zapisanych w tablicy.
Zapisz skrypt pod nazwą przyklad2_5.m a następnie uruchom go wpisując w oknie poleceń
jego nazwę (bez rozszerzenia):
>>przyklad2_5
Podsumowanie ćwiczenia 2
• funkcje matematyczne
• operatory relacji < > <= >= == ~=
• operatory logiczne | & ~
• m-pliki, skrypty
• instrukcje warunkowe if...elseif...else
switch...case
• instrukcje pętli for, while
Zadania do ćwiczeń 2
π
2.1. Oblicz wartość: cos + ctg(arcsin0.5) + arctg 2 0.3
3
2.4. Oblicz wartość minimalną i maksymalną w całej macierzy utworzonej w zadaniu 2.3.
2.5. Dla: x=[1 5 2 8 9 0 1] i y=[5 2 2 6 0 0 2], wykonaj poniższe polecenia i zinterpretuj ich
wyniki.
(a) x>y oraz x<y
(b) x==y oraz x<=y
(c) x>=y oraz x|y
(d) x&y oraz y&x
(e) (x>y)|(y<x) oraz (x>y)&(y<x)
Strona 7 z 8
Podstawy Informatyki 3 – ćwiczenia02
4 5 7 0 3 8 7 0
2.6. Wprowadź macierze: a = 2 10 12 24 oraz b = 34 3 12 18 i sprawdź czy
32 2 3 5 20 5 1 5
wszystkie elementy macierzy a są większe lub równe odpowiadającym im elementom macie-
rzy b. Zapisz polecenia w taki sposób, aby odpowiedzieć 1 jeśli jest to prawdą oraz 0 jeśli to
fałsz.
2.7. Sprawdzić, czy w macierzach a i b są pary aij = bij . Zapisz polecenia w taki sposób, aby
odpowiedzieć 1 jeśli jest to prawdą oraz 0 jeśli to fałsz.
2.8. Policzyć ile jest par aij, bij o wartościach różnych od 0, takich że aij = bij .
1
dla i ≠ j
2.13. Utwórz macierz A o rozmiarach 6 x 6 taką, że: a ij = i − j
0 dla i = j
Strona 8 z 8