%% Luentoja Matemaattiset ohjelmistot-kurssilla 12-28.3.2012

%% Matriisin osat ja kokoaminen
clear
format compact
 A=reshape(1:6,2,3),B=ones(2,2),C=diag(1:3)
   [A B] % Vierekkain  
   [A;C] % Allekkain

%% Vektorin indeksointi
% 
% <html>
% <a href="http://math.tkk.fi/~apiola/matlab/opas/lyhyt/perusteet.html">
% Kts. myos lyhyesta oppaasta </a>
% </html>
%
%             Laita ensi tilassa <a name> tuonne!!

clear
format compact

v = [13 5 9  i]
v(2)              % 2. alkio         -> 5
v([1 3 end])      % alkiot 1 3 end   -> 13 9 i
v(1:3)            % alkiot 1 2 3     -> 13 5 9
v(1:3)=-[1 2 3]   % Vektorin osan muuttaminen
v([1 1 end-1 2 1]) % Saa toistaa ja j?rjest??.
v([1 3])=NaN      % Skalaarin laajennuss??nt? 
v                 % NaN  -2.0000   NaN  i

%% Matriisin indeksointi

clear
format compact
A=[3 33;9 8]
A(1,1)        % --> 3
A(1,2)        % --> 33

%{ 
  Voidaan indeksoida myos yhdella indeksilla.
  Silloin ajatellaan matriisi pitkana, sarakkeittain
  jonoutettuna vektorina.
%}

A(3)    % <--> A(2,1)
[A(3) A(1,2)]

%% Lisaa matriisin indeksoinnista
A = magic(6)
B = A(3,5)             
C = A([1,2,3],4)        % Sarakkeen 4 alkiot riveilta 1 2 3
D = A(4,[1,1,1])        % [A(4,1) A(4,1) A(4,1)] 
E = A([2,5],[3,1])      % Rivien 2 5 sarakkeet 3 1
F = A(:,4)              % Koko 4. sarake
G = A(4,:)              % Koko 4. rivi
H = A(:);               % A jonoutettuna sarakkeittain
size(H)                 % Pitka pystyvektori
H'                      % Naytetaan transponoituna.
A(1:3,[2 3 end-1])=NaN  % Paivitys vastaavasti kuin vekt.
                        % Matriisi A siis muuttuu.
%% Esimerkki: Rivioperaatiot Gaussin eliminoinnissa    
% <html>
% <a href="http://math.tkk.fi/~apiola/matlab/opas/lyhyt/perusteet.html">
%  Siirry lyhyeen oppaaseen. </a> 
% </html>
%
% Etsi:(CTR-F  Gauss).
% Ehdotus:  Kopioi komentoriveja omaan editoriisi ja kay ajatuksella lapi
%           vaiheita ainakin johonkin saakka. Tee omia muistiinpanoja.

%% Looginen indeksointi

%{
Hyvin tehokas tapa data-alkioiden valitsemiseen perustuu bittikuvioilla
"bitpatterns" indeksointiin. 
%}

% <html>
% <a href="http://math.tkk.fi/~apiola/matlab/opas/lyhyt/perusteet.html">
%  Lyhyt opas, CTR-F: loogisten </a> 
% </html>

clear
vk=[1 3 4 2 5 6 2 1 6 7 4 5 3 2 1 2 3];  % Varmuuskertoimet
vk >= 3                               
% Tuloksena looginen vektori, jossa 1 vastaa ehdon toteutumista.
vk(vk>=3) % Indeksoidaan loogisella vektorilla.
%% Looginen valinta matriisille
%{ 
 Toimii aivan samoin kuin vektorille.
 Voidaan valita loogisten operaattoreiden, kuten < > <= >= == ~
 tai loogisten is-funktioiden, kuten isprime, isfinite, ... avulla.
%}
% Esim:
clear
A=magic(6)
A>30       % Bittimatriisi
A(A>30)    % Ehdon toteuttavat alkiot (pystyvektorina)

%% Luentotehtava:

% Poimi kaikki A:n alkiot, jotka ovat alkulukuja ja > 10.
% Sijoita vastaaville kohdille A:han arvo Inf.
% Tiedoksi: help isprime, Looginen "and" on &
% 
%
%
%
%% Luentotehtava: (vrt. Lyhyt opas)
%{
 Muodostetaan yksikkovalilla (0,1) tasaisesti jakautuneista
 satunnaismuuttujista
 koostuva 10 x 10 matriisi. Voidaan kysya vaikka seuraavia:

    Kuinka moni alkio on vahintaan 0.2 ?
    Mika on kaikkien naiden summa?
    Kuinka moni on valilla (0.4,0.6) ? 
%}

%% Grafiikka, perusasiat

% * plot -  2d-datapisteiden piirto, tasokayrat
% * fplot, ezplot - Funktion piirto, adaptiivinen pisteiden valinta
% * plot3 - avaruuskayrat, periaate aivan sama kuin plot:lla
% * mesh,surf,surfc,surfl ... Pinta avaruudessa
% * contour  - Korkeuskayrapiirros (myos ezcontour)
%     
% Esim:
% 
% Piirra 
%%
% $$ \ \ \ \ \ y=x^3-2 x +1, x\in [-2,2]$$
%
x=linspace(-2,2,100); % 100 on oletus.
y=x.^3 -2*x +1;
plot(x,y)

%%
% <http://math.tkk.fi/~apiola/matlab/opas/lyhyt/grafiikka.html>
%

