%% meshgridi.m  meshgrid, ulkotulo  
%  meshgrid-funktio on tarpeen erityisesti 3d-grafiikassa.
%  Liittyy harj.2 teht. 6,7
%{  
Aja skripti %%-merkkien rajaavissa osissa (CTR-ENTER tai CMD-ENTER(Mac)).

 Jos k"ayt"oss"a ei ole symbolic toolboxia, sijoita vektoreille x ja y
 sopivat numeeriset arvot, kuten:
 x=1:3; y=-5:-1;

%}
clear
close all
syms x1 x2 x3
syms y1 y2 y3 y4 y5
x=[x1 x2 x3]
y=[y1 y2 y3 y4 y5]
% x=1:3; y=-5:-1;  % Poista alkukommentti, jos ei symb. toolboxia.
[X,Y]=meshgrid(x,y)

Z=X.*Y   % Funktion f(x,y)=xy korkeusmatriisi.
%% Sama for-silmukalla: 

clear W
for i=1:5
    for j=1:3
        W(i,j)=x(j)*y(i);
    end
end    
W

% Olispa hankalaa, jos jokaista pintapiirrosta varten jouduttais
% rakentamaan tuollainen. Onneksi on meshgrid!

%% 
% Otetaan toinen esimerkifunktio:

%          f(x,y)=(cos(x)^2)*sin(y)^2
%
Z1=cos(X.^2).*sin(Y.^2)

%% Pinta- ja korkeusk"ayr"apiirrokset
%
% Edell"a n"ahtiin annetun 2:n muuttujan funktion "korkeusarvomatriisin" 
% muodostamisperiaate. Piirret"a"an nyt nuo funktiot:

x=linspace(-1,1,30); y=x;
[X,Y]=meshgrid(x,y);
Z=X.*Y;
surf(x,y,Z)
figure
contour(x,y,Z)
%
% Aivan vastaavasti voit piirt"a"a toisen, tai mink"a haluat.