13 svar
103 visningar
ilovechocolate behöver inte mer hjälp
ilovechocolate 664
Postad: 17 sep 2022 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 Online 9494
Postad: 17 sep 2022 21:21

Temp ska då innehålla 3 kolumner. 

Första kolumnen kan du läsa ut som 

Temp(:,1)

ilovechocolate 664
Postad: 17 sep 2022 21:42

Okej!

Så det första blir

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

 

Hur blir det sen?

Dr. G Online 9494
Postad: 17 sep 2022 22:31

Prova vad du får om du skriver 

MedelTemp < 0

ilovechocolate 664
Postad: 17 sep 2022 22:50

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

Dr. G Online 9494
Postad: 17 sep 2022 23:04

Ja. 

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

MedelTemp(MedelTemp < 0)

ilovechocolate 664
Postad: 17 sep 2022 23:10 Redigerad: 17 sep 2022 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 Online 9494
Postad: 17 sep 2022 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 664
Postad: 18 sep 2022 12:51 Redigerad: 18 sep 2022 13:35

Menar du såhär?

Temp;
MedelTemp=Temp(:,1);
NegTemp=MedelTemp(MedelTemp<0);
Datum=[1:31];
NegDatum=Datum(MedelTemp<0);
Matsmats 571 – Livehjälpare
Postad: 18 sep 2022 13:16 Redigerad: 18 sep 2022 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 664
Postad: 18 sep 2022 13:36

Jaha, okej! Det är bra att veta!

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

Matsmats 571 – Livehjälpare
Postad: 18 sep 2022 13:41

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

ilovechocolate 664
Postad: 18 sep 2022 13:56 Redigerad: 18 sep 2022 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! 😊

Matsmats 571 – Livehjälpare
Postad: 18 sep 2022 14:02

Gott!

Svara
Close