Plocka ut temperaturdata
Temperatur.mat innehåller en matris Temp med olika temperaturdata lagrat i tre kolumner i ordningen medeltemp, maxtemp och mintemp. Raderna i matrisen motsvarar dagarna (dagnummer) i december med 1:a dagen i december på rad 1.
Genom att skriva
load Temperatur
laddas matrisen.
1. Plocka ut medeltemperaturen för alla dagar ur Temp och lagra dessa i en kolumnvektor MedelTemp.
2. Plocka ut de medeltemperaturer som är under noll grader och lagra dessa i en kolumnvektor NegTemp i dagnummerordning.
3. Lagra motsvarande dagrummet i en kolumnvektor NegDatum.
Hur ska jag tänka här? har svårt att komma igång.
Temp ska då innehålla 3 kolumner.
Första kolumnen kan du läsa ut som
Temp(:,1)
Okej!
Så det första blir
load Temperatur
Temp;
MedelTemp=Temp(:,1);
Hur blir det sen?
Prova vad du får om du skriver
MedelTemp < 0
Det skriver ut en 31x1 matris med massa nollor och ettor...
Ja.
Du kan då plocka ut de negativa värdena i MedelTemp med
MedelTemp(MedelTemp < 0)
Jaha, okej!
Då blir det ju såhär:
load Temperatur %Läser in data
Temp;
MedelTemp=Temp(:,1);
NegTemp=MedelTemp(MedelTemp<0);
Hur blir det med den sista då? Den känns som en kluring!
Om du har en vektor Datum som innehåller 1 till 31 (i rätt ordning) så kan du ta ut de datum där temperaturen är negativ med
Datum(MedelTemp < 0)
Menar du såhär?
Temp;
MedelTemp=Temp(:,1);
NegTemp=MedelTemp(MedelTemp<0);
Datum=[1:31];
NegDatum=Datum(MedelTemp<0);
Japp, det Dr G har visat kallas "logisk indexering" i MATLAB.
MedelTemp < 0 blir en logisk vektor som innehåller nollor (false) för falsk och ettor (true) för sanna värden.
Sedan kan man indexera en annan vektor logiskt genom att som du gjorde ta Datum(MedelTemp < 0). Man plockar då ut de index i vektorn Datum där den logiska vektorn MedelTemp < 0 är sann (1). Du kan åskådliggöra vektorn MedelTemp < 0 genom t.ex. plot(MedelTemp < 0).
Jaha, okej! Det är bra att veta!
Men jag verkar fortfarande inte få till det...
Vad är det som går fel då?
Det står "Variable NegDatum must be of size [7 1]. It is currently of size [1 7]. Check where the variable is assigned a value". Men jag löste det! Tack så jättemycket för hjälpen! 😊