Špeciálne jazykové prostriedky počítačov - SJPP

8. Funkcie pre prácu s údajmi

8.1. Základné funkcie pre prácu s údajmi

MATLAB umožňuje aj štatistické spracovanie údajov. Jednotlivé prvky sú zadávané ako matica (vektor). V prípade matice sa operácie robia po stĺpcoch.

Funkcia Opis
cumprod kumulatívne násobenie prvkov
cumsum kumulatívny súčet prvkov
max najväčší prvok
mean priemer alebo stredná hodnota
median stredná hodnota polohy
min najmenší prvok
prod násobenie prvkov
sort triedenie, zoraďovanie prvkov
std štandardná odchýlka
sum súčet prvkov
trapz numerická integrácia

8.1.1. Kumulatívny súčet prvkov a kumulatívne násobenie prvkov

Príklad 8.1: Kumulatívny súčet prvkov vektora
>> data3 = [3 2 5];
>> cumsum(data3)
ans =
     3     5    10
Príklad 8.2: Kumulatívny súčet prvkov matice
>> data4 = [4 3 2;3 7 4;-2 1 5]
data4 =
     4     3     2
     3     7     4
    -2     1     5
>> cumsum(data4)
ans =
     4     3     2
     7    10     6
     5    11    11
Príklad 8.3: Kumulatívne násobenie prvkov vektora
>> cumprod(data3)
ans =
     3     6    30
Príklad 8.4: Kumulatívne násobenie prvkov matice
>> cumprod(data4)
ans =
     4     3     2
    12    21     8
   -24    21    40

8.1.2. Súčet a násobenie prvkov

Príklad 8.5: Súčet prvkov vektora
>> data1 = [2 4 7];
>> sum(data1)
ans =
    13
Príklad 8.6: Súčet prvkov matice
>> data2 = [4 5 2;1 3 7;4 -2 1];
>> sum(data2)       % Sucet stlpcov 
ans =
     9     6    10

>> sum(data2,1)     % Sucet stlpcov 
ans =
     9     6    10

>> sum(data2,2)     % Sucet riadkov 
ans =
    11
    11
     3

>> sum(sum(data2))  % Sucet vsetkych prvkov 
ans =
    25
Príklad 8.7: Súčin prvkov vektora
>> prod(data1)
ans =
    56
Príklad 8.8: Súčin prvkov matice
>> prod(data2)        % Sucin stlpcov 
ans =
    16   -30    14

>> prod(data2,1)      % Sucin stlpcov 
ans =
    16   -30    14

>> prod(data2,2)      % Sucin riadkov 
ans =
    40
    21
    -8

>> prod(prod(data2))  % Sucin vsetkych prvkov 
ans =
    -6720

8.1.3. Minimálny a maximálny prvok z údajov

Príklad 8.9: Maximálny prvok vektora
>> max([4 2 15])
ans =
    15
Príklad 8.10: Minimálne prvky stĺpcov
>> min([15 5 3;1 6 7;4 8 2])
ans =
     1     5     2

>> min(min([15 5 3;1 6 7;4 8 2]))
ans =
     1

8.1.4. Stredná hodnota, priemer údajov

Príklad 8.11: Priemer prvkov vektora
>> mean([1 4 2 2 1])
ans =
     2
Príklad 8.12: Priemer prvkov matice
>> mean([1 3 2;5 2 1;2 2 1;4 2 2])
ans =
    3.0000    2.2500    1.5000

8.1.5. Zoradenie prvkov vektora a matice

Príklad 8.13: Zoradenie prvkov vektora
>> sort([4 8 5 1])
ans =
     1     4     5     8
Príklad 8.14: Zoradenie prvkov matice
>> sort([5 8 4;2 1 3;9 7 1])
ans =
     2     1     1
     5     7     3
     9     8     4

8.1.6. Numerický integrál

Funkciou trapz vieme vypočítať číselnú hodnotu integrálu krivky, ktorá je zadaná bodmi pomocou vektorov X, Y. Funkcia používa na výpočet integrálu lichobežníkovú náhradu.

Príklad 8.15: Numerický integrál
>> X = [1 2 3.5 5 7];
>> Y = [3 2 6 7 4];
>> trapz(X,Y)
ans =
   29.2500
Príklad 8.16: Numerický integrál, ak X je v tvare X = [0 1 2 3 ...]
>> trapz(Y)
ans =
   18.5000
top

8.2. Konečné diferencie, skalárny a vektorový súčin vektorov

Funkcia Opis
diff diferencia
gradient aproximovaný gradient

8.2.1. Výpočet diferencie

Funkcia diff vypočítava diferenciu, t.j. rozdiel medzi dvoma alebo viacerými bodmi podľa toho aký stupeň diferencie sa zvolí:

  1. diff(X), kde X je vektor, potom výsledná diferencia je v tvare
    [X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)]
  2. diff(X), kde X je matica, potom výsledná diferencia je realizovaná po stĺpcoch
    [X(2:n,:)-X(1:n-1,:)]
  3. diff(X,n), zápis n-tej diferencie. Napríklad pre 2. stupeň je v tvare
    [X(3)-2X(2)+X(1) ... X(n)-2X(n-1)+X(n-2)]
Príklad 8.17: Diferencia 1. stupňa - vektor
>> x = [4 7 3.5 -1 5 3 6];
>> diff(x)
ans = 
    3.0000   -3.5000   -4.5000    6.0000   -2.0000    3.0000
Príklad 8.18: Diferencia 2. stupňa - vektor
>> diff(x,2)
ans =
   -6.5000   -1.0000   10.5000   -8.0000    5.0000
Príklad 8.19: Diferencia 1. stupňa - matica
>> A=[1 2 3;1 4 5;7 8 9]
>> diff(A)
ans = 
     0     2     2
     6     4     4
Príklad 8.20: Diferencia 2. stupňa - matica
>> diff(A,2)
ans =
     6     2     2
Príklad 8.21: Výpočet derivácie funkcie sin(x2) použitím diferencie
>> h = .01;              % h je perióda vzorkovania
>> x = 0:h:pi;           % dy = y(i+1)-y(i); dt = h
>> diff(sin(x.^2))/h;    % derivácia funkcie použitím diferencie dy/dt
ans =
    0.0100    0.0300    0.0500    0.0700    0.0900    0.1100 ...
Príklad 8.22: Skutočná derivácia
>> 2*cos(x.^2).*x
ans =
    0    0.0200    0.0400    0.0600    0.0800    0.1000 ...

8.2.2. Výpočet gradientu

Funkcia gradient slúži na číselný výpočet gradientu funkcie. Funkcia môže byť dvojparametrová f(X,Y) alebo jednoparametrová f(X).
Pre dvojparametrovú funkciu platí zápis:
[PX,PY] = gradient(Z,dx,dy)
Funkcia vracia číselné partikulárne derivácie z matice Z do matíc PX = dZ/dx a PY = dZ/dy, kde dx a dy sú periódy vzorkovania pre X a Y.
Pri zápise [PX,PY] = gradient(Z) je dx = dy = 1.
Príklad 8.23: Jednoparametrová funkcia
>> x = [0:0.4:2.5];
>> y = exp(-x.^2);
>> gradient(y,0.4)
ans =
   -0.3696   -0.5909   -0.7690   -0.5625   -0.2733   -0.0927   -0.0379
top

8.3. Úlohy

  1. Vyvorte vektor a = [1 3 -2 2.4 8.4 -5.3] a maticu A = [1 2 3 4;-4 7 -2 3;7 4 2 -5]
  2. Použite základné funkcie pre prácu s údajmi (maticou A a vektorom a):
    • súčet a kumulatívny súčet prvkov
    • násobenie a kumulatívne násobenie prvkov
    • minimálny a maximálny prvok
    • triedenie prvkov
    • priemernú hodnotu prvkov
  3. Vypočítajte plochu pod krivkou určenou bodmi: X = [1 2.5 4 6 8]; Y = [3 5 2 7 4];
  4. Nájdite inflexný bod na krivke y=f(x), ktorej body získate príkazom:
    [y,t,x] = step([1],[1 2 1],[0:0.01:10])
    Príkazom plot(x,y) si môžete krivku vykresliť.
top