% En times tutorial i MATLB for FYS2150 Våren 2019 UiO
%
% I Mat1100 har dere hatt en del Matlab i kompendiet:Tom Lindstrøm og Klara Hveberg: "Flervariabelanalyse med lineær algebra"
% I Mek1100 har dere hatt Matlab, se kapittel 3 i kompendiet: Bjørn Gjevik og Morten Wang Fagerland: "Feltteori og vektoranalyse"
% I Mat1120 har dere hatt Matlab: Erik Bédos, Geir Dahl, Øyvind Ryan: "MATLAB for MAT1120"
%
% Skriv linjene nedenfor på kommando-promptet (>>) i Matlab  og observer resultatet (eller "Run Section" som live-script)
% Dag Kristian Dysthe 2016
% Live skript og flere endringer Alex Read, Januar 2019
%
% Lag en 3x3 matrise A

A=[1 2 3; 4 5 6; 9 8 6]

%
% Avslutt linje med semicolon for å undertrykke visning av resultatet

A=[1 2 3; 4 5 6; 9 8 6];

%
% Skriv ut forskjellige elementer og grupper av elementer i A

A(2,1)
A(2,2)
A(2,1:2)
A(1:2,2:3)
A(2:3,:)

%
% Størrelsen av A og forskjellige operasjoner

size(A)
A'
inv(A)
A*inv(A)
sum(A) % summerer kolonner
sum(A')

%
% Forskjellen mellom size og length

B = [1 2 3 4 5 6;1 2 3 4 5 6]
size(B)
size(B,1)
size(B,2)
length(B)
length(B')

%
% Lag tomme eller uniforme matriser

zeros(3,2)
B=ones(4,2)
B*B'
B'*B
% NB! Neste linjen illustrerer feil!
%B*B

%Elementvis ganging
B.*B
b=1:10;
c=ones(size(b))
d = sum(b) %ikke bruk løkker hvis du kan unngå det!!!
% Dot product
b*c'
% Illustrer unødvendig løkke for dot-produkt
for i=1:length(b)
    d(i) = b(i)*c(i);
end
sum(d)

%
% Identitetssmatrisen

I4by4 = eye(4)

%
%
% Sett opp en kontrolvariabel a (verdier langs x-aksen) og jobb med enkle funksjoner av a

a=0:0.01:2*pi;
plot(a,sin(a))
hold on
plot(a,cos(a),'r')
b=linspace(0,2*pi,10);
plot(b,cos(b),'ro')
hold off
axis tight

% Bruk en funksjon (sincos.m) som vi har skrevet selv:
% function [f] = sincos( x )
% %UNTITLED3 Summary of this function goes here
% %   Detailed explanation goes here
% f = sin(x).*cos(x);
% end
%

hold on
plot(a,sincos(a),'b-')
hold off

%
% Vi har  små skjermer, hvordan se resultater samtidig som du jobber videre:
%     dock figurer, TAB "View": del opp figurområdet for å ordne vinduer
%     kopier Command History -> Editor
%
% Jobb med tilfeldige tall

help rand
a=rand(1,1000);
figure(1), plot(a,'o')
figure
b=randn(1,1000);
figure(2), plot(b,'o')

%
% Job med histogrammer

figure(1), histogram(b)
b=randn(1,10000);
figure(2), histogram(b,20)
figure(3), histogram(b,40)
figure(4), histogram(a)

%
% Plott data og jobb med enkle polynomtilpasning

x=0:100;
y=3*x+5;
plot(x,y,'s')
figure(1)
y=3*x+5+20*randn(size(x));
plot(x,y,'s')
plot(x,y)
plot(x,y,'s')
help polyfit
[p,s]=polyfit(x,y,1) %ikke nøyaktig 3 og 5
yh=polyval(p,x);
hold on, plot(x,yh,'k:','LineWidth',2), hold off

% Gjør figuren lett å forstå - regler for gode figurer i rapporter:
% Store nok fonter er viktig!!!
% Data markert med punkter
% Ikke linjer mellom datapunktene
% Modelltilpasning til data markert med tydelig linje

xlabel('Strm, mA','FontSize',20,'FontName','Times')
ylabel('Spenning, mV','FontSize',20,'FontName','Times')
text(10,280,['R = U/I = ',num2str(p(1),3),' Ohm'],'FontSize',20,'FontName','Times')
set(gca,'FontName','Times')
set(gca,'FontSize',20)
axis tight 

%
%% Sett i cellemodus, flere grafer i figuren

figure(2), histogram(y-yh)
subplot(2,1,1), histogram(y-yh)
axis([-50 50 0 25])
subplot(2,1,2), plot(sort(y-yh),x/max(x))
hold on
subplot(2,1,2), plot(x-mean(x),(erf((x-mean(x))./(sqrt(2)*std(y-yh)))+1)/2,'r')
axis([-50 50 0 1])
hold off

%
% Les data fra en text-fil (to kolloner) inn i Matlab

fileid = fopen('data.txt');
xy = textscan(fileid,'%f %d');
fclose(fileid);
xy{1}
xy{2}
plot(xy{1},xy{2},'r+')