Gå til innhold

Matlab - Spørsmål rundt FOR og IF


Anbefalte innlegg

Hei, 

 

jeg er fersk innenfor programmering og dette språket. Jeg sliter litt med å forstå logikken i dette, er det noen som kan være behjelpelig med en ELI5? 

 

F.eks 

for i = 1:length(temp)   
        if temp > 15
        <Hva skal inn her?>
end
end

Si at 'temp' inneholder 1500 rader med temp-info. Hver gang temperaturen når 15 grader, ønsker jeg at den skal hente ut data fra et datasett(tabell med annen info) og skrive det ut i en ny tabell. 

 

 

 

Det kan være jeg spør på en rar/feil måte, men av en eller annen grunn klarer jeg bare ikke å forstå hvordan man skal utføre dette. 

 

Setter pris på feedback. 

Lenke til kommentar
Videoannonse
Annonse

Eksemplet ditt har en vesentlig feil.

Du spør om 'hele' tabellen temp er over 15, noe matlab forstår lite av.

 

Her er et eksempel som skal virke:

temp = [20 21 10 13 20 4 5 26 3 2 27];
utTemp = [];
utTeller = 1;

for i = 1:length(temp)   
	if temp(i) > 15
		utTemp(utTeller++) = temp(i);
	end
end

disp('ferdig')
disp(utTemp)
Hvis det er noe du ikke forstår, så bare spør i vei.
Lenke til kommentar

Eksemplet ditt har en vesentlig feil.

Du spør om 'hele' tabellen temp er over 15, noe matlab forstår lite av.

 

Her er et eksempel som skal virke:

temp = [20 21 10 13 20 4 5 26 3 2 27];
utTemp = [];
utTeller = 1;

for i = 1:length(temp)   
	if temp(i) > 15
		utTemp(utTeller++) = temp(i);
	end
end

disp('ferdig')
disp(utTemp)
Hvis det er noe du ikke forstår, så bare spør i vei.

 

 

Kan du forklare logikken i temp(i)

if temp(i) > 15
Lenke til kommentar

Kan du forklare logikken i temp(i)

if temp(i) > 15
temp er her en en-dimensjonal matrise med x elementer.

I matlab så starter vektoren på 1, og slutter på length()

(I motsetning til normal programmering hvor en array starter på 0.)

Altså vil temp i eksemplet ha 11 elementer.

 

Hvis vi kaller temp direkte, så får vi ut hele matrisen.

For å få ut enkeltelementer i matrisen, så må vi også fortelle i hvilken posisjon elementet vi er ute etter befinner seg i.

Dette er grunnen til at vi itterer over hele matrisen med:

for i = 1:length(temp)

 

Her har vi:

temp(1) = 20

temp(2) = 21

temp(3) = 10

temp(4) = 13

osv.

(I andre språk så bruker man ofte temp eller temp.at(i), men prinsippet er det samme.)

Det den linjen gjør er å sjekker om elementet 'i' i matrisen 'temp' er større enn 15.

Lenke til kommentar
  • 1 måned senere...

Eksemplet ditt har en vesentlig feil.

Du spør om 'hele' tabellen temp er over 15, noe matlab forstår lite av.

 

Her er et eksempel som skal virke:

temp = [20 21 10 13 20 4 5 26 3 2 27];
utTemp = [];
utTeller = 1;

for i = 1:length(temp)   
	if temp(i) > 15
		utTemp(utTeller++) = temp(i);
	end
end

disp('ferdig')
disp(utTemp)
Hvis det er noe du ikke forstår, så bare spør i vei.

 

Burde ikke utTeller starte på 0?

Og jeg tror ikke ++-notasjon fungerer i MatLab.

Lenke til kommentar

 

Eksemplet ditt har en vesentlig feil.

Du spør om 'hele' tabellen temp er over 15, noe matlab forstår lite av.

 

Her er et eksempel som skal virke:

temp = [20 21 10 13 20 4 5 26 3 2 27];utTemp = [];utTeller = 1;for i = 1:length(temp)   	if temp(i) &gt; 15		utTemp(utTeller++) = temp(i);	endenddisp('ferdig')disp(utTemp)
Hvis det er noe du ikke forstår, så bare spør i vei.

Burde ikke utTeller starte på 0?

Og jeg tror ikke ++-notasjon fungerer i MatLab.

MatLab er ikke helt som andre språk.

temp(3) vil her være 10, og ikke 13 som man er vant med.

(Det kan hende du tenker på ++utTeller, og ikke utTeller++.)

 

Når jeg skrev eksemplet så hadde jeg faktisk håpet at han skulle spørre om ++-notasjonen, siden jeg la den inn som en 'felle' i tilfelle han skulle bruke det i noe skolearbeid.

Den vil virke, men som ny, så ville han hatt store problemer med å forklare hvorfor han brukte den, og hvordan den virker ;)

Endret av kjeita
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...