Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:dydaktyka:ml:lab1 [2013/02/12 15:54]
esimon [Rysowanie wykresów]
pl:dydaktyka:ml:lab1 [2019/06/27 15:50] (aktualna)
Linia 1: Linia 1:
 +
 +
 +
 ====== Laboratorium 1 - Wprowadzenie do GNU Octave ====== ====== Laboratorium 1 - Wprowadzenie do GNU Octave ======
 Środowisko Octave jest wolnym odpowiednikiem pakietu MATLAB. Środowisko Octave jest wolnym odpowiednikiem pakietu MATLAB.
-===== Instalacja i uruchamianie ===== 
  
 +[[http://​www.gnu.org/​software/​octave/​doc/​interpreter/​index.html|Dokumentacja]]
 +===== Instalacja i uruchamianie =====
 + 
 W przypadku większości systemów Linux, pakiet Octave można zainstalować bezpośrednio z repozytorium:​ <​code>​$ sudo apt-get install octave</​code>​ W przypadku większości systemów Linux, pakiet Octave można zainstalować bezpośrednio z repozytorium:​ <​code>​$ sudo apt-get install octave</​code>​
  
Linia 14: Linia 19:
 W języku Octave, nie prototypujemy zmiennych. Typy określane są automatycznie,​ tak jak w PHP, czy Bashu. W języku Octave, nie prototypujemy zmiennych. Typy określane są automatycznie,​ tak jak w PHP, czy Bashu.
 <code octave>​zmienna = 'moja zmienna';​ <code octave>​zmienna = 'moja zmienna';​
-zmienna = 12.34;+zmienna = 12.34; ​
 zmienna = [2 3 4; 3 4 5];</​code>​ zmienna = [2 3 4; 3 4 5];</​code>​
  
Linia 29: Linia 34:
      ​\end{bmatrix}$$      ​\end{bmatrix}$$
            
-W Octave zapiszemy ją jako:<​code octave>M = [5 6 0; 6 0 1; 0 6 1]</​code>​+W Octave zapiszemy ją jako:<​code octave>M = [5 6 0; 6 0 1; 0 6 1] </​code>​
  
 Aby odwołać się do danego elementu macierzy, lub wektora używamy nawiasów okrągłych.\\ Aby odwołać się do danego elementu macierzy, lub wektora używamy nawiasów okrągłych.\\
 **Uwaga :!:** W Octave indeksowanie rozpoczyna się od 1 a nie jak w popularnych językach programowania od 0! Np. Aby pobrać/​przypisać wartość elementu z pierwszego wiersza i drugiej kolumny macierzy M, piszemy: **Uwaga :!:** W Octave indeksowanie rozpoczyna się od 1 a nie jak w popularnych językach programowania od 0! Np. Aby pobrać/​przypisać wartość elementu z pierwszego wiersza i drugiej kolumny macierzy M, piszemy:
-<code octave>​M(1,​2)=7</​code>​+<code octave>​M(1,​2)=7 </​code>​
  
 Jako wynik otrzymujemy:​ Jako wynik otrzymujemy:​
Linia 45: Linia 50:
 <code octave> <code octave>
 M(:,3) % zwróci [0;​1;​1] ​ M(:,3) % zwróci [0;​1;​1] ​
-M(2,:) % zwróci [6 0 1]+M(2,:) % zwróci [6 0 1]  
 </​code>​ </​code>​
  
Linia 52: Linia 57:
 <code octave> <code octave>
 M = [5 6 0; 6 0 1; 0 6 1]; M = [5 6 0; 6 0 1; 0 6 1];
-M([2 3],[1 2])+M([2 3],[1 2]) 
 </​code>​ </​code>​
  
Linia 62: Linia 67:
 zeros(2,10) zeros(2,10)
 ones(1,10) ones(1,10)
-range = [1:10]+range = [1:​10] ​
 range = [1:​0.3:​10] ​ range = [1:​0.3:​10] ​
 range(5:10) range(5:10)
Linia 73: Linia 78:
 Octave udostępnia podstawowe operatory arytmetyczne zarówno dla macierzy jak i skalarów. Pełny zbiór operatorów dostępny jest w [[http://​www.gnu.org/​software/​octave/​doc/​interpreter/​Arithmetic-Ops.html#​Arithmetic-Ops|dokumentacji Octave]]. Octave udostępnia podstawowe operatory arytmetyczne zarówno dla macierzy jak i skalarów. Pełny zbiór operatorów dostępny jest w [[http://​www.gnu.org/​software/​octave/​doc/​interpreter/​Arithmetic-Ops.html#​Arithmetic-Ops|dokumentacji Octave]].
  
-**Uwaga :!:** Zwróć uwagę na działanie operatorów połączonych z kropką!+**Uwaga :!:** Zwróć uwagę na działanie operatorów połączonych z kropką! ​\\ 
 +Przetestuj działanie poniższego kodu. 
 +<code octave>​ 
 +A = [0.5 0.5; 1 1]; 
 +B = [2 2; 2 2]; 
 +  
 +A * B 
 +A .* B 
 +B ^ 2 
 +B .^ D 
 +</​code>​
  
  
Linia 94: Linia 109:
 function W = srednia(dane) function W = srednia(dane)
     % funkcja obliczająca średnią elementów w wektorze     % funkcja obliczająca średnią elementów w wektorze
-    W = sum(dane)/​length(dane);​+    W = sum(dane)/​length(dane); ​
 end end
 </​file>​ </​file>​
  
 Aby wywołać funkcje z przykładu powyżej wykonujemy polecenie: Aby wywołać funkcje z przykładu powyżej wykonujemy polecenie:
-<code octave>​Wynik = srednia([2 3 4 5 6 7 8]);</​code>​+<code octave>​Wynik = srednia([2 3 4 5 6 7 8]); </​code>​
  
 Jeśli funkcja ma zwracać więcej niż jeden argument, zapisujemy to w ten sposób: Jeśli funkcja ma zwracać więcej niż jeden argument, zapisujemy to w ten sposób:
Linia 107: Linia 122:
    % Funkcja zwraca indeksy znalezionej wartości, lub -1,-1    % Funkcja zwraca indeksy znalezionej wartości, lub -1,-1
    ​[rows,​cols] = size(M);    ​[rows,​cols] = size(M);
-   ​IndexX = IndexY =-1;+   ​IndexX = IndexY =-1; 
    for i=1:rows,    for i=1:rows,
      for j=1:cols      for j=1:cols
Linia 122: Linia 137:
 Aby pobrać wartości zwracane przez funkcję powyżej wpisujemy np.: Aby pobrać wartości zwracane przez funkcję powyżej wpisujemy np.:
 <code octave> <code octave>
-[X,Y] = myFind(M,​6);​+[X,Y] = myFind(M,​6); ​ 
 </​code>​ </​code>​
  
Linia 135: Linia 150:
 **Plot2** **Plot2**
 <code octave> <code octave>
-x = [0:​0.01:​10];​+x = [0:​0.01:​10]; ​
 y = sin(x); y = sin(x);
 plot(x,y); plot(x,y);
Linia 143: Linia 158:
 <code octave> <code octave>
 t = 0:​0.1:​10*pi;​ t = 0:​0.1:​10*pi;​
-r = linspace (0, 1, numel (t));+r = linspace (0, 1, numel (t)); 
 z = linspace (0, 1, numel (t)); z = linspace (0, 1, numel (t));
 plot3 (r.*sin(t), r.*cos(t), z); plot3 (r.*sin(t), r.*cos(t), z);
Linia 153: Linia 168:
 [xx, yy] = meshgrid (tx, ty); [xx, yy] = meshgrid (tx, ty);
 r = sqrt (xx .^ 2 + yy .^ 2) + eps; r = sqrt (xx .^ 2 + yy .^ 2) + eps;
-tz = sin (r) ./ r;+tz = sin (r) ./ r; 
 mesh (tx, ty, tz); mesh (tx, ty, tz);
 </​code>​ </​code>​
Linia 166: Linia 181:
   for j=1:y   for j=1:y
     M(i,j) = rand;     M(i,j) = rand;
-  end+  end 
 end</​code>​ end</​code>​
  
Linia 199: Linia 214:
 $$\sigma = \sqrt{\frac{\sum\limits_{i=1}^{N} $$\sigma = \sqrt{\frac{\sum\limits_{i=1}^{N}
   \left(x_{i} - \mu)^{2}}   \left(x_{i} - \mu)^{2}}
-  N}$$+  ​{N-1}}$$
   ​   ​
-Gdzie $\mu$ to średnia, a N to liczba wszystkich elementów.+Gdzie $\mu$ to średnia, a N to liczba wszystkich elementów ​w probie.
  
 ==== Odchylenie standardowe II==== ==== Odchylenie standardowe II====
Linia 210: Linia 225:
 Dla funkcji napisanych w poprzednich dwóch zadaniach ([[#​dlugosc_wektora|Długość wektora]] oraz [[#​odchylenie_standardowe_i|Odchylenie Standardowe I]]) dopisz ich odpowiedniki wektorowe (lub z użyciem pętli) i przetestuj ich działanie na wygenerowanym losowo zbiorze $10^6$ liczb. Dla funkcji napisanych w poprzednich dwóch zadaniach ([[#​dlugosc_wektora|Długość wektora]] oraz [[#​odchylenie_standardowe_i|Odchylenie Standardowe I]]) dopisz ich odpowiedniki wektorowe (lub z użyciem pętli) i przetestuj ich działanie na wygenerowanym losowo zbiorze $10^6$ liczb.
  
-Aby wygenerować dane użyj:<​code octave> data = rand(1,​10^6);</​code>​+Aby wygenerować dane użyj:<​code octave> data = rand(1,​10^6);​ </​code>​
  
 Porównaj czasy wykonywania funkcji: Porównaj czasy wykonywania funkcji:
Linia 216: Linia 231:
 timestart = time(); timestart = time();
  
-%Wywolanie funkcji+%Wywolanie funkcji ​
  
 timestop = time(); timestop = time();
  
-printf('​Czas wykonania to %d sekund.\n',​(timestop-stimestart));+printf('​Czas wykonania to %d sekund.\n',​(timestop-timestart));
 </​code>​ </​code>​
  
Linia 232: Linia 247:
 <code octave>A = zeros(10,​10) <code octave>A = zeros(10,​10)
 v = zeros(10, 1); v = zeros(10, 1);
 +x = zeros(10, 1);
 for i = 1:10 for i = 1:10
   for j = 1:10    for j = 1:10 
-    ​v(i) = v(i) + A(i, j) * x(j);+    ​x(i) = v(i) + A(i, j) * v(j); 
   end   end
 end end
Linia 243: Linia 259:
 for i = 1:7 for i = 1:7
   for j = 1:7   for j = 1:7
-    A(i, j) = log (X(i, j));+    A(i, j) = log (X(i, j)); 
     B(i, j) = X(i, j) ^ 2;     B(i, j) = X(i, j) ^ 2;
     C(i, j) = X(i, j) + 1;     C(i, j) = X(i, j) + 1;
Linia 252: Linia 268:
 ==== Rysowanie wykresu funkcji ==== ==== Rysowanie wykresu funkcji ====
  
-Napisz funkcję która będzie wyznaczała wartości funkcji z obrazka poniżej. Wyrysuj wartości tej funkcji na wykresie w przedziale od -10 do 10.+Napisz funkcję która będzie wyznaczała wartości funkcji z obrazka poniżej. Wyrysuj wartości tej funkcji na wykresie w przedziale od -10 do 10 z krokiem 0.5. 
 + 
 +{{:​pl:​dydaktyka:​ml:​absfun.png|Wartość bezwzględna}}
  
-{{:​pl:​dydaktyka:​ml:​prv:​absfun.png|Wartość bezwzględna}} 
  
pl/dydaktyka/ml/lab1.1360680847.txt.gz · ostatnio zmienione: 2019/06/27 15:54 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0