Woods Skrevet 5. november 2015 Del Skrevet 5. november 2015 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
kjeita Skrevet 5. november 2015 Del Skrevet 5. november 2015 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
Woods Skrevet 6. november 2015 Forfatter Del Skrevet 6. november 2015 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
kjeita Skrevet 6. november 2015 Del Skrevet 6. november 2015 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
Kubjelle Skrevet 5. januar 2016 Del Skrevet 5. januar 2016 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
kjeita Skrevet 7. januar 2016 Del Skrevet 7. januar 2016 (endret) 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); 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 7. januar 2016 av kjeita Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå