13 svar
49 visningar
ilovechocolate är nöjd med hjälpen
ilovechocolate 545
Postad: 17 sep 17:13

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.

Dr. G 8257
Postad: 17 sep 21:21

Temp ska då innehålla 3 kolumner. 

Första kolumnen kan du läsa ut som 

Temp(:,1)

ilovechocolate 545
Postad: 17 sep 21:42

Okej!

Så det första blir

load Temperatur  
Temp;
MedelTemp=Temp(:,1);

 

Hur blir det sen?

Dr. G 8257
Postad: 17 sep 22:31

Prova vad du får om du skriver 

MedelTemp < 0

ilovechocolate 545
Postad: 17 sep 22:50

Det skriver ut en 31x1 matris med massa nollor och ettor...

Dr. G 8257
Postad: 17 sep 23:04

Ja. 

Du kan då plocka ut de negativa värdena i MedelTemp med 

MedelTemp(MedelTemp < 0)

ilovechocolate 545
Postad: 17 sep 23:10 Redigerad: 17 sep 23:10

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!

Dr. G 8257
Postad: 17 sep 23:44

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)

ilovechocolate 545
Postad: 18 sep 12:51 Redigerad: 18 sep 13:35

Menar du såhär?

Temp;
MedelTemp=Temp(:,1);
NegTemp=MedelTemp(MedelTemp<0);
Datum=[1:31];
NegDatum=Datum(MedelTemp<0);
Matsmats Online 427 – Live-hjälpare
Postad: 18 sep 13:16 Redigerad: 18 sep 13:18

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).

ilovechocolate 545
Postad: 18 sep 13:36

Jaha, okej! Det är bra att veta!

Men jag verkar fortfarande inte få till det...

Vad är det som går fel då?

ilovechocolate 545
Postad: 18 sep 13:56 Redigerad: 18 sep 13:58

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! 😊

Gott!

Svara Avbryt
Close