%% 1 Rad- och kolonnvektorer i Matlab
%% 1.1 Lagra data i Matlab
% Takeaways
% Hur man lagrar data med  rad/kolonn-vektor .
% Begreppen  koordinat  i vektor och  index  för den.
% Kommandot  v( j ) ger kordinaten med index  j  i vektorn  v .
% Kommdot  length( v )  ger antalet koordinater i vektorn  v .
% Semikolon används för radbrytning i kolonnvektorer.
% Transponering. Kommandot  v'  gör en radvektor till kolonnvektor och tvärt om.
% I Matlab hanteras data (t.ex. värden på en variabel i ett experiment) genom att organisera den i listor. Det finns två olika typer av listor: en där data utgör en rad, en där den utgör en kolonn. Båda är användbara i olika sammanhang. När data ligger i en rad kallas detta en radvektor, när den ligger i en kolonn är det en kolonnvektor.
% Exempel  Antag att 6, -5, 3, 18, 3,  6, -10 är en serie av sju värden som uppmätts i ett experiment. För att analysera med Matlab vill vi få in datan i programvaran. Det kan t.ex. göras genom att i Matlab skriva
% v = [ 6 , -5 , 3 , 18 , 3 , 6 , -10 ]
% som ger en radvektor med 7 koordinater (dvs 7 värden), som man valt att kalla  v .
% Första koordinaten i  v , som är  6 , har index 1, andra koordinaten,  -5 , har index 2 och -10 har index 7.
% Vill man i stället mata in datan som en kolonnvektor och kalla den för  x_vals (som ska föra tankarna till "x-values"), gör man det genom
% x_vals = [ 6 ; -5 ; 3 ; 18 ; 3 ; 6 ; -10 ]
% Semikolon används alltså för "radbrytning". Första talet i denna lista har index 1 och 18 har index 4.
% Slut exempel.
% Om listan är lång är det inte enkelt att se hur många koordinater den har. Man kan då ta reda på det genom kommandot
% length( v )
% Villl man ha tag på datan som har index  j  (står på plats  j i listan) och kalla den för  a  gör man det genom kommandot
% a = v( j )
% Uppgift 1.1
% a)  Mata in följande sekvens av mätdata från ett experiement i Matlab och kalla listan för  t_vals:
%  0.2, 1.3, -0.5, 3.2, 7.1, -0.1, 9.2, 3.0, 4.2, -1.0
% b)  Ta reda på hur många mätdata man har och plocka ut de med udda index i en ny lista och kalla den  t_odd_vals .
%
% Lösning



% Tips
% Det är lite bökigt med semikolon på tangentbordet, så vill man mata in en kolonnvektor är det ofta enklare att mata in den som en radvektor och sedan göra om den till en kolonnvektor med en apostrof på slutet. Detta kallas att transponera radvektorn. Transponering av en kolonnvektor ger en radvektor.
% Dessutom kan en radvektor matas in med (bara) mellanslag mellan data (utan kommatecken).
% T.ex ger
% w = [ 1 2 -3 2 1 5 ]'
% samma resultat som
% w = [ 1 ; 2 ; -3 ; 2 ; 1 ; 5 ]
% Pröva detta här:



%
%% 1.2  Speciella vektorer i Matlab
% Takeaways
% linspace( a , b )  och  linspace( a , b , n ) .
% a : b  och  a : h : b .
% Om man vill ha en radvektor v  bestående av  100  tal jämnt fördelade
% mellan talen  a  och  b  kan man åstadkomma det med kommandot
% v = linspace( a , b )
% "linspace" står för "linearly spaced" dvs samma avstånd mellan två på varandra följande tal.
% Vill man ha ett annat antal värden än 100, t.ex. n  stycken, kan man göra det med
% v = linspace( a , b , n )
% Uppgift 1.2
% a)  Sätt  x_vals till en radvektor med 50 tal jämnt fördelade mellan -\pi  och  \pi.
% b)  Kontrollera att   x_vals innehåller 50 tal och att sista talet är  \pi.
% c)  Finns  0  med i  x_vals ?
% d)  Gör en lista   x_vals_rev  ("x-values reversed") med 25 tal jämnt fördelade mellan \pi och -\pi (första talet ska alltså vara \pi denna gång)
% Lösning



%
% En nackdel med  linspace  är att man inte direkt vet vad avståndet mellan två på varandra följande tal är. Vill man vara säker på att det avståndet alltid är ett fixt positivt tal (låt oss säga)  h  (aka steglängden) har Matlab ett sätt att hantera det. Radvektorn  v som har koordinater  a+h, a+2h, a+3h, etc så länge talen är  \leq  b kan definieras i Matlab med kommandot
% v = a : h : b
% Tänkt: talen i  v  fås genom att man startar med  a  och stegar sig framåt med  h  så länge resultatet är  \leq b . Man kan stega baklänges om man väljer  h negativt och  a \geq  b .
% Om man vill ha  steglängden  1  ( h = 1) behöver den inte skrivas ut:
% v = a : b   är samma som  v = a : 1 : b
% Uppgift 1.3
% a)  Sätt  w till en radvektor med vart femte tal mellan  1  och  40 .
% b)  Hur många tal finns i  w  och vilket är det sjätte talet?
% c)  Sätt  v  till en kolonnvektor med alla jämna tal mellan  101  och  82  i avtagande ordning.
% d)  Sätt  u  till en radvektor med alla heltal mellan  -3   och  5 . Vilket är det femte talet i  u ?
%  Lösning



%
%% 1. 3  Sammansättning av vektorer
% Takeaways
% För radvektorer  v  och  w  är  [ v  w ]  radvektorn med  v  följd av  w .
% För kolonnvektorer  v  och  w  är  [ v ; w ]  kolonnvektorn med  v  följd av  w .
% Semikolon efter ett kommando gör att man slipper se resultatet.
% Om  v  och  w  är två radvektorer kan man sätta samman dem till en radvektor där  v:s kooridnater förljs av  w:s genom
% [ v  w ]
% Pröva detta genom att låta  v  vara alla jämna tal mellan 2  och  10  och  w  alla udda tal från  9  till  3 :



% På samma sätt kan två kolonnvektorer sättas i en kolonn genom
% [ v ; w ]
% Pröva detta med  v  och  w  som ovan fast kolonnvektorer:



%
%% 1. 4  Operationer på vektorer
% Takeaways
% c + u , där  u  är en vektor och  c  ett tal , adderar  c  till varje koordinat i u .     u + c  ger samma resultat. Motsvarande gäller vid subtraktion.
% u + v  adderar vektorerna  u  och   v  (som ska ha samma antal koordinater)  koordinatvis. Motsvarande gäller vid subtraktion.
% c * u  multiplicerar varje koordinat vi vektorn  u  med talet  c . Man får samma  resultat med  u * c .
% u / c  delar varje koordinat i vektorn  u  med talet  c .
% u .* v , där  u  och  v  är vektorer med samma antal koordinater, multiplicerar  u  och  v  koordinatvis.
% u ./ v , där  u  och  v  är vektorer med samma antal koordinater, delar  u  och  v  koordinatvis.
% u .^ c , där  u  är en vektor och  c  ett tal eponentierar varje kooridinat med   u  med  c .
% u .^ v , där  u  och  v  är vektorer med samma antal koordinater, exponentierar  u  med  v  koordinatvis.
% Om  v  och  w  är två rad/kolonn-vektorer med samma antal koordinater ( length( v ) = length( w ) ) kan man addera dem koordinatvis till en ny vektor genom
% u = v + w
% så att koordinaten med index  j  i  u  är summan av  motsvarande koordinater i  v  och  w :
% u( j ) = v( j ) + w( j )
% Pröva detta med  v  alla heltal mellan  1  och  7  och  w  samma tal men i avtagande ordning:



% Vill man lägga till en (och samma) konstant  c  till varje varje koordinat i vektorn  v  gör man det med
% c + v  eller  v + c
% Pröva detta  med  v  kolonnvektorn vars koordinater är alla udda tal mellan 51 och 63  och  c = - 3



%
% Om  v  är en rad/kolonnvektor och  c  ett tal kan man multiplicera  eller dela  v  koordinatvis  koordinatvis med med  c  till en ny vektor genom
% u = c * v  eller  u = v * c
% w = (1/c) * v  eller   w = v / c
%  så att
% u( j ) = c * v( j )  respektive  w( j ) = v( j ) / c
% Uppgift 1.4
% a)  Mata in fyra olika radvektorer med  8  koordinater och beräkna det koordinatvisa medelvärdet av dem.
% b)  Beräkna  5  gånger resultatet i a).
% Lösning



%
% Vill man beräkna koordinatvisa produkten av två rad/kolonnvektorer  v  och  w  med samma antal koordinater görs det med (observera punkten!)
% v .* w
% så att
% u( j ) = v( j ) * w( j )
% för varje index  j , om u = v .* w . Anledningen till den extra punkten är att symbolen  *   i Matlab står för en anna typ av multiplikation (så kallad matrismultiplikation). Tänk på  .*  som "punktvis" (koordinatvis) multiplikation i listor.
% På samma sätt kan man utföra koordinatvis division och potens  med ett tal  n  genom
% v ./ w   respektive  v .^n
% så att
% u( j ) = v( j ) / w( j )  respektive u( j ) = v( j ) ^n
% för varje index  j , om  u = v ./ w  eller  u = v .^n .
% Uppgift 1.5
% a)  Sätt  v  till radvektorn med talen
%  (1 + 2)^2 / (3 * 1^3),  (2 + 2)^2 / (3 * 2^3),  (3 + 2)^2 / (3 * 3^3), ..., (10 + 2)^2 / (3 * 10^3)
% b)  Sätt  u  till radvektorn med talen  (x + 2)^2 / (3 * x^3 + 5)  där  x  är koordinater i en vektor av 10 jämnt fördelade tal mellan -1  och 5 .
% c)  Sätt  w  till vektorn vars koordinater är inversa värdet till koordinaterna i  u .
% d)  Sätt  z  till vektorn vars koordinater är
%  \frac{\sqrt{x^2+x}-\sqrt{x}}{x^2 + x+ 1}
% där  x  är  100  jämnt fördelade tal mellan  2 och  6 .
% e)  Vilket tal är det femtionde talet i vektorn med de 100 jämnt fördelade talen mellan   2  och  6 ?  Vilket värde har uttycket i  d)  för detta värde på x ?
% Lösning

