Cw1_Matlab.pdf

(298 KB) Pobierz
MATLAB jest interakcyjnym środowiskiem do wykonywania odliczeń naukowych i inżynierskich
Przebieg ćwiczenia 1. Podstawy obsługi pakietu MATLAB
MATLAB jest interakcyjnym środowiskiem do wykonywania odliczeń naukowych i inżynierskich. Umożliwia
testowanie algorytmów, modelowanie i symulację, analizę i wizualizację danych, sygnałów oraz wyników obliczeń.
Zasadnicze jego zalety to możliwość szybkiego uzyskania rezultatów skomplikowanych obliczeń i przedstawienie ich w
postaci wykresów dwu- lub trójwymiarowych, a także w postaci map wielobarwnych.
MATLAB jest językiem programowania wysokiego poziomu. Podstawowymi typami danych w MATLAB-ie są
tablice o elementach rzeczywistych lub zespolonych oraz struktury i obiekty. Zmienne przechowywane są w przestrzeni
roboczej (ang. workspace ) i są dostępne przez nazwę. W MATLAB-ie nie stosuje się deklaracji zmiennych. Zmienne
wybranego typu określa (definiuje) użytkownik. MATLAB automatycznie rozpoznaje typ zmiennej. Rezultaty
wykonywanych operacji matematycznych lub funkcji zależą od rozpoznanego typu.
1. Wykonywanie obliczeń
Wynik obliczeń wartości wyrażenia jest dostępny jako wartość zmiennej, której to wyrażenie przypisano. Dla
polecenia w postaci:
>> zmienna = wyrażenie
po naciśnięciu klawisza ENTER, zostanie obliczona wartość wyrażenia i przypisana zmiennej. Zmienna zostanie
wprowadzona do przestrzeni roboczej (ang. workspace ) – jeśli zmienna już istniała, to przyjmie nową wartość. Na
ekranie pojawi się odpowiedź w postaci:
zmienna = wartość wyrażenia
Możliwe jest także wykonywanie polecenia w postaci:
>> wyrażenie
W tym przypadku wynik obliczeń będzie przypisany standardowej zmiennej ans . Odpowiedź na takie polecenie jest
następująca:
ans = wartość wyrażenia
Dodanie średnika po wyrażeniu powoduje, że wartość wyrażenia nie jest wypisywana na ekranie.
W jednej linii można wpisać wiele poleceń, jeśli oddzieli się je średnikiem.
Wykonać następujące polecenia:
>> 1+3
>> 1e4
>> 1e4 + 2e4
>> log(2)
>> log(2.7183)
>> exp(1)
>> log(exp(1))
>> log10(2.7183)
>> log10(10)
>> pi
>> sin(pi/2)
>> 2^3
>> sin(0.4)^2+cos(0.4)^2
>> a = 12.5
>> a
>> a=5
>> a
>> b=5+4
>> c=a+b
>> z1=1+2i
>> z2=10j
>> real(z1)
>> imag(z1)
>> sqrt(-1)
>> i^2
>> sqrt(-4)
>> 1/0
2. Przydatne polecenia
who – lista zmiennych obecnych w przestrzeni roboczej programu
whos – lista zmiennych obecnych w przestrzeni roboczej programu wraz z formatem
clear – usuwa zmienne z przestrzeni roboczej
clear nazwa_zmiennej – usuwa zmienną z przestrzeni roboczej
3. Niektóre typy danych
W MATLAB-ie podstawowym typem danych jest tablica. Jej elementami mogą być liczby rzeczywiste lub
zespolone, znaki albo inne tablice. Macierz jest szczególnym przypadkiem tablicy. Jest to tablica dwuwymiarowa, na
której elementach wykonuje się operacje algebry liniowej.
Filozofię działania MATLAB-a oparto na operacjach wektorowo macierzowych. Pojedyncza wartość liczbowa jest
traktowana jako macierz o wymiarach (1x1). Wektor jest to macierz, która składa się z jednego wiersza lub jednej
kolumny.
1
68237201.004.png
Nie stosuje się deklarowania zmiennych, Tworzenie zmiennych wybranego typu wykonuje się poprzez instrukcje
przypisywania lub użycie odpowiedniej funkcji. Zestaw funkcji stosowanych do tworzenia i przekształcania typów
danych uzyskuje się poleceniem help datatypes .
macierze – tablice dwuwymiarowe prostokątne o elementach rzeczywistych lub zespolonych. Elementy macierzy
zapisuje się w nawiasach kwadratowych, kolumny oddziela się spacją lub przecinkiem, a wiersze średnikiem.
Wykonać następujące polecenia:
>> A = [1 2 3; 4 5 6; 7 8 9]
4. Dwukropek – operator generowania wektorów i tablic
Dwukropek (:) jest jednym z częściej używanych operatorów w MATLAB-ie. Jest on wykorzystywany przy
tworzeniu wektorów o równomiernie rozłożonych elementach. Umożliwia łatwe wyselekcjonowanie żądanych wierszy,
kolumn lub elementów tablic.
Generowanie wektorów
Generowanie wektorów, z zastosowaniem notacji dwukropkowej, przebiega według następujących zasad:
- j:k – taki zapis definiuje wektor [j, j+1, j+2, ..., k],
- j:d:k – taki zapis określa wektor [j, j+d, j+2d, ..., k].
Wykonać następujące polecenia:
>> w1 = 1:6
>> w2 = 1:0.1:2
>> w11 = 1:6.5
>> w22 = 10:10:55
>> A = [1:5; 6:10; 11:15; 16:20; 21:25]
>> b = [0:0.1:0.5]
>> B = [b; b+1; b+2; b+3; b+4; b+5; b+6]
Wybór żądanych wierszy, kolumn i elementów tablicy
Wyboru żądanych wierszy, kolumn i elementów tablicy dokonuje się za pomocą podanych poniżej zapisów:
- A(i, j) – wypisanie elementu z i -tego wiersza i j -tej kolumny,
- A(:, j) – wypisanie j -tej kolumny macierzy A ,
- A(i, :) – wypisanie i -tego wiersza macierzy A ,
- A(k) – wypisanie k -tego elementu macierzy A ,
- A(:) – wypisanie wszystkich elementów macierzy A w jednej kolumnie,
Wykonać następujące polecenia:
>> A
>> A(1,1)
>> A(1,2)
>> A(:, 1)
>> A(:, 3)
>> A(:, end)
>> A(1, :)
>> A(3, :)
>> A(end, :)
>> A
>> A(1)
>> A(2)
>> A(6)
>> A(7)
>> A(1:10)
>> A(1:end)
>> A(:)
>> A
5. Operatory arytmetyczne i operacje na macierzach
W MATLAB-ie wykonuje się za pomocą operatorów dwa rodzaje operacji na macierzach. Pierwszy rodzaj to
arytmetyczne operacje macierzowe określone regułami algebry liniowej (np. X*Y). Drugi rodzaj to tzw. arytmetyczne
operacje tablicowe , które są wykonywane na elementach macierzy (np. X .* Y – realizuje mnożenie elementów
wektorów lub macierzy o tych samych indeksach – X(i,j)*Y(i,j)). Operatory arytmetyczne zestawiono w poniższej
tabeli. Informacje, dotyczące sposobu działania operatorów, można uzyskach wykonując polecenia: help arith , help
slash , help ctranspose , help kron.
2
68237201.005.png
Symbol operacji
macierzowej
Nazwa operacji
Symbol operacji
tablicowej
+
*
^
/
\
.’
kon
dodawanie
odejmowanie
mnożenie
potęgowanie
dzielenie prawostronne
dzielenie lewostronne
sprzężenie macierzy
transpozycja macierzy
iloczyn tensorowy Kroneckera
+
.*
.^
./
.\
Wykonać następujące polecenia:
>> A = [1 2 3; 4 5 6; 7 8 9]
>> A + 1
>> A * 2
>> B = [1 1 1; 2 2 2; 3 3 3]
>> A.*B
>> A*B
>> A+B
6. Elementy grafiki dwuwymiarowej
Zapoznać się z opisem poleceń plot , grid , xlabel , ylabel , title , hold korzystając z systemu pomocy MATLAB-a.
Wykonać następujące polecenia:
>> x = 0:0.5:2*pi
>> y = sin(x)
>> plot(x,y)
>> plot(x,y,’:’)
>> plot(x,y,’--’)
>> plot(x,y,’-.’)
>> plot(x,y,’-’)
>> plot(x,y,’*’)
>> plot(x,y,’-*’)>> plot(x,y,'-*g')
>> grid
>> y1 = cos(x)
>> plot(x,y,’b’)
>> hold on
>> plot(x,y1,’g’)
>> hold off
>> plot(x,y)
>> y
7. Elementy grafiki trójwymiarowej
Zapoznać się z opisem poleceń plot3 , meshgrid , mesh , surf , colormap , gray korzystając z systemu pomocy
MATLAB-a.
Wykonać następujące polecenia:
>> t=0:0.1:20;
>> plot3(sin(t),cos(t),t)
>> x = -5:5
>> y = -8:2
>> [X Y] = meshgrid(x,y)
>> Z = -X.^2 - Y.^2
>> mesh(X,Y,Z)
>> mesh(x,y,Z)
>> surf(x,y,Z)
>> surf(X,Y,Z)
>> colormap(gray)
>> help gray
>> colormap(hot)
>> colormap(pink)
>> colormap(flag)
>> t=pi:0.01:62;
>> plot3(sin(t)./t,cos(t)./t,t)
>> xlabel('x')
>> ylabel('y')
>> zlabel('t')
3
68237201.006.png
Ćwiczenie 2. Teoria: sieci neuronowe
1. Model sztucznego neuronu
Podobnie jak w przypadku neuronowych sieci biologicznych, podstawowymi elementami z których buduje się
sztuczne sieci neuronowe są sztuczne neurony. Sztuczny neuron jest elementem, którego własności odpowiadają
wybranym własnościom neuronu biologicznego. Z założenia nie jest więc on jego wierną kopią, lecz elementem, który
powinien spełniać określone funkcje w sztucznej sieci neuronowej.
Ogólnie sztuczny neuron można rozpatrywać jako specyficzny przetwornik sygnałów działający według
następującej zasady: na wejście przetwornika doprowadzone są sygnały wejściowe, które następnie są mnożone przez
odpowiednie współczynniki wag, ważone sygnały wejściowe są następnie sumowane i na tej podstawie wyznacza się
aktywność neuronu.
Na rys. 1 przedstawiono model sztucznego neuronu. Składa się on z dwóch bloków: bloku sumowania ∑ i bloku
aktywacji f(ϕ).
Rys. 1. Model neuronu
W bloku sumowania wykonywane jest algebraiczne sumowanie ważonych sygnałów wejściowych, oraz
generowany jest sygnał wyjściowy ϕ :
= =
R
ϕ
w
u
+
b
=
w
T
u
+
b
(1)
1
i
i
i
1
gdzie: w – wektor współczynników wag w 1,i , u – wektor sygnałów wejściowych u i , R – liczba wejść neuronu, b – próg
(bias).
Sygnał ϕ poddawany jest przetwarzaniu przez blok aktywacji f (ϕ) realizujący zależność y = f (ϕ). Ostatecznie
sygnał wyjściowy ma postać:
()
=
R
( )
T
y
=
f
ϕ
=
f
w
u
+
b
=
f
w
u
+
b
(2)
1
i
i
i
1
Funkcja aktywacji, w zależności od konkretnego celu, jakiemu służy neuron, może przyjmować różne postacie.
Niektóre z nich to:
funkcja skokowa unipolarna (funkcja Heaviside’a)
() ()
1
jeśli
x
>
0
1
f
x
=
1
x
=
(3)
0.5
0
jeśli
x
0
0
-5
0
5
funkcja skokowa bipolarna
() ()
1
jeśli
x
>
0
1
f
x
=
1
x
=
0
(4)
1
jeśli
x
0
-1
-5
0
5
funkcja liniowa
5
f =
( )
ax
0
(5)
-5
-5
0
5
4
x
68237201.007.png 68237201.001.png
funkcja sigmoidalna unipolarna
1
f
()
=
1
0.5
(6)
1
+
e
β
x
0
-10
0
10
funkcja sigmoidalna bipolarna (tangensoidalna)
1
() ()
e
x
e
x
lub ()
x
1
e
x
f
x
= tanh
x
=
f
x
=
tanh
=
0
(7)
e
x
+
e
x
2
1
+
e
x
-1
-10
0
10
2. Sieci jednokierunkowe
Neurony połączone między sobą tworzą układ nazywany sztuczną siecią neuronową (w skrócie siecią
neuronową). W zależności od sposobu połączenia neuronów można wyróżnić sieci jednokierunkowe lub rekurencyjne
(ze sprzężeniem zwrotnym).
Sieć neuronowa jednokierunkowa jest złożona z neuronów ułożonych w warstwy o jednym kierunku przepływy
sygnałów. Połączenia międzywarstwowe występują jedynie między sąsiednimi warstwami.
Najprostszą siecią neuronową jest sieć jednowarstwowa. Tworzą ją neurony ułożone w jednej warstwie (rys. 2a,
2b). Każdy neuron posiada próg (bias) b i oraz wiele wag w ij prowadzonych do sygnałów wejściowych u j . Neurony
ułożone w pojedynczej warstwie działają niezależnie od siebie, stąd możliwości takiej sieci są ograniczone do
możliwości pojedynczych neuronów.
Rys. 2. Jednowarstwowa sieć neuronowa o R wejściach i S wyjściach: a) schemat pełny, b) schemat uproszczony
Każdy neuron realizuje odwzorowanie funkcyjne:
=
R
y
=
f
w
u
+
b
(8)
i
ij
j
i
j
1
gdzie: R – liczba wejść, y i i- te wyjście, w ij – waga dla i- tego neuronu i j- tego wejścia.
Powyższe równanie można zapisać również w zwięzłej postaci macierzowej:
( )
y
= f
Wu
+
b
(9)
gdzie: u – wektor wejścia, y – wektor wyjścia, W – macierz wag.
Sieć jednowarstwowa ma niewielkie znaczenie praktyczne, jakkolwiek stosuje się ją nadal tam, gdzie istnienie
jednej warstwy jest wystarczające do rozwiązania określonego problemu.
Sieć wielowarstwową tworzą neurony ułożone w wielu warstwach, przy czym oprócz wejść i warstwy
wyjściowej istnieje co najmniej jedna warstwa ukryta.
Na rys. 3 przedstawiono sieć o jednej warstwie ukrytej, a na rys. 4 sieć o dwóch warstwach ukrytych (w
oznaczeniach przyjęto stosować indeks górny do oznaczania numeru warstwy).
5
x
68237201.002.png 68237201.003.png
Zgłoś jeśli naruszono regulamin