Noen innebygde funksjoner - Vektorisering

Like dokumenter
Noen innebygde funksjoner - Vektorisering

TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6)

Største primtallsfaktor i tall

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Læringsmål og pensum. Oversikt

Bruk piazza for å få rask hjelp til alles nytte!

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Øvingsforelesning i Matlab TDT4105

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Binærfiler versus tekstfiler

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Oppsummering fra sist

TDT4105 Informasjonsteknologi, grunnkurs

Øvingsforelesning TDT4105 Matlab

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

Datastrukturer (kap. 8)

Finne ut om en løsning er helt riktig og korrigere ved behov

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

TDT4105 IT Grunnkurs Høst 2016

Øvingsforelesning i Matlab TDT4105

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

Læringsmål og pensum. v=nkiu9yen5nc

Finne ut om en løsning er helt riktig og korrigere ved behov

YouTube-kanal ITGK. Læringsmål og pensum

Oppgaver uke 1: Løsningsforslag

TDT4110 Informasjonsteknologi grunnkurs: Tema: Enkle funksjoner. - 3rd edition: Kapittel Professor Alf Inge Wang

Pensum: Starting out with Python

TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 1 Introduksjon til Programmering og Python. Professor Alf Inge Wang

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

Øvingsforelesning i Python (TDT4110)

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

Utførelse av programmer, funksjoner og synlighet av variabler (Matl.)

Repetisjon Novice Videregående Python PDF

Læringsmål og pensum

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

TDT4110 IT Grunnkurs Høst 2015

Python: Intro til funksjoner. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Øvingsforelesning TDT4105

Øvingsforelesning i Matlab (TDT4105)

Læringsmål og pensum. Oppgave

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

Matematikk Øvingsoppgaver i numerikk leksjon 5 Skript

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

Øvingsforelesning i Matlab (TDT4105)

Utførelse av programmer, metoder og synlighet av variabler i JSP

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Øvingsforelesning TDT4105 Matlab

Debugging. Tore Berg Hansen, TISIP

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

OPPGAVE 1 OBLIGATORISKE OPPGAVER (OBLIG 1) (1) Uten å selv implementere og kjøre koden under, hva skriver koden ut til konsollen?

Hjemmeeksamen 2 i INF3110/4110

Læringsmål og pensum. if (be): else (not_to_be):

Øvingsforelesning TDT4105 Matlab

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

TDT4105 Informasjonsteknologi, grunnkurs. Matlab 5: Løkker (FOR og WHILE) Matlab 6: Problemløsning / Algoritmer

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

O-notasjon og kompleksitet

Oblig 2 - MAT1120. Fredrik Meyer 23. september 2009 A =

Læringsmål og pensum. Intro løkker. Mål Lære om begrepet løkker Lære om bruk av while-løkke Lære om bruk av for-løkke Pensum. Kapittel 4.

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

TDT4110 IT Grunnkurs Høst 2016

TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker. - 3rd edition: Kapittel 4. Professor Alf Inge Wang

Øvingsforelesning i Matlab TDT4105

TDT4105 Informasjonsteknologi, grunnkurs

Palindrom - iterativt

TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og mengder (sets) - Kapittel 9. Professor Alf Inge Wang

Øvingsforelesning 5 Python (TDT4110)

TDT4110 Informasjonsteknologi grunnkurs: Kapittel 7 Filer og unntak ( exceptions ) Professor Alf Inge Wang Stipendiat Lars Bungum

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Dictionaries og sets (mengder) Utgave 3: Kap. 9. Terje Rydland - IDI/NTNU

Øvingsforelesning 1 Python (TDT4110)

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Oppgaver Kapittel 5 (del 2) Ada Gjermundsen

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

Objektorientert programmering i Python

16 Programmere TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

Eksamensoppgaver 2014

UNIVERSITETET I OSLO

TDT4110 IT Grunnkurs Høst 2012

JS: Grunnleggende JavaScript Nybegynner

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

Øvingsforelesning 5 Python (TDT4110)

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

TDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz

INF1000 Eksamen 2014 (modifisert)

MAT1030 Diskret Matematikk

Eksamensforelesning TDT4105

Transkript:

1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Uke 41: «Matlab programs» (kapittel 6) Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf: 735 91845 TDT4105 IT G 1 Uke41-Matlab-8 6. oktober 2015 2 Noen innebygde funksjoner - Vektorisering sum sum(<vektor>) -> summen av elementene sum(<matrise>) -> kolonnesummer cumsum Kumulative summer max (min) max(<vektor>) -> største element max(<matrise>) -> max element i hver kolonne find(<betingelse>) I vektor: Indeksene I matrise: Lineær indeks (1. kolonne, 2. kolonne, ) 2 Uke41-Matlab-8 6. oktober 2015

3 Eksempler vektorisering_4.m 3 Uke41-Matlab-8 6. oktober 2015 4 Preallokering av plass Allokering vil si å avsette plass til en variabel i minnet Tabeller som vokser gradvis er svært lite effektivt Finne ny plass Kopiere gamle verdier til ny plass Lønner seg å sette av nødvendig plass (pre-allokering) zeros(n), zeros(n,m) ones(n), ones(n,m) true(n), true(n,m) / false(n), false(n,m) logiske verdier 4 Uke41-Matlab-8 6. oktober 2015

5 Kumulative summer vektorisering_3.m 5 Uke41-Matlab-8 6. oktober 2015 6 Læringsmål: Synlighet av variabler (scope) Mer om funksjoner Flere ut-variabler Lokale funksjoner Persistente variabler Feilfinning: Feiltyper, Tracing og Debugger Pensum Kapittel 6 Matlab Programs Læringsmål og pensum 6 Uke41-Matlab-8 6. oktober 2015

7 Synlighet av en variabel (scope) Arbeidsområdet der den er gyldig Command Window: base workspace Lokale variabler Variabler definert i funksjoner Synlige inne i funksjonen Eksisterer ikke utenfor funksjonen Synlighet av variabler (scope) Skript ser variabler definert i Command Window Kan være kilde til feil/problemer clear: tømmer arbeidsområdet Globale variabler Ikke synlig inne i funksjoner uten å bli sendt som parameter Synlig i alle scriptene våre. Dårlig programmeringsskikk å dele globale variabler! 7 Uke41-Matlab-8 6. oktober 2015 8 Eksempel: rest i a/b Kommandovinduet og funksjonen har egne arbeidsområder Parameterne overfører data inn i funksjonens arbeidsområde Funksjonen returnerer verdi til kallende arbeidsområde Samme navn på variabler i ulike arbeidsområder referer ikke til en og samme variabel Funksjonens arbeidsområde aktiveres på nytt hver gang funksjonen kalles. Husker ingenting mellom kallene 8 Uke41-Matlab-8 6. oktober 2015

9 Arbeidsområder Command window har sitt Workspace (synlig i Matlabvinduet) Funksjonen rest har sitt arbeidsområde (usynlig) som er frikoblet fra Command windows arbeidsområde function a= rest(a,b) % finner resten i a/b når a og b er positive heltall while a>=b a=a-b; % a og b er lokale for denne funksjonen og ikke kjent % for andre deler av systemet % Verdiene slettes når funksjonen avsluttes end %while end %function rests workspace (eksisterer bare så lenge funksjonen kjører) a b 9 Uke41-Matlab-8 6. oktober 2015 10 Returnere flere argumenter (parametere) [rader, kolonner] = size(<matrise>) Eksempel: Er en verdi i en matrise i majoritet? Majoritet: Flere av denne verdien enn av de andre tilsammen - mer enn 50% av verdiene i matrisen. Pseudokode: Input: Matrise med verdier Gjør om matrisen til en vektor Sorter vektoren Tell opp for verdien til elementet i midten Sjekk om det er mange nok (antall > n antall) Returner: Flagg (true/false), Verdi Antall 10 Uke41-Matlab-8 6. oktober 2015

11 function [flagg, verdi, antall] = majoritet(m) % returnerer flagg = true hvis verdi er i % majoritet i m mer enn 50% av tallene % i m er verdi % verdi finnes da antall ganger i m % Flytter verdiene inn i en vektor v = m(:); % Sorterer vektoren v = sort(v); % Finner antall elementer n = length(v); % Indeks til elementet i midten if odd(n) midtindeks = (n+1)/2; else midtindeks = n/2; end % Sjekker om det er mange nok if antall > n antall flagg = true; else flagg = false; end end % function function retur = odd(tall) % Finner ut om tall er ett oddetall if mod(tall,2) == 1 retur = true; else retur = false; end end % function odd % Verdien i midten verdi = v(midtindeks); % Teller antallet av verdien antall = sum(v == verdi); 11 Uke41-Matlab-8 6. oktober 2015 12 12 Uke41-Matlab-8 6. oktober 2015

13 Sub-funksjoner Kan deklarere mer enn en funksjon i en m-fil Etter den primære funksjonen Sub-funksjoner, lokale funksjoner eller hjelpefunksjoner Usynlige og utilgjengelige utenfor m-filen Kalles fra primærfunksjonen som andre funksjoner Kan bidra til å dele opp programkoden Enklere, bedre kode Hvorfor ikke skrive som vanlig funksjon? 13 Uke41-Matlab-8 6. oktober 2015 14 Eksamen august 2012 14 Uke41-Matlab-8 6. oktober 2015

15 Funksjoner: Persistente variabler Variabler som beholder verdien mellom hver kjøring av funksjonen. Husker verdien fra avslutningen av forrige utførelse av funksjonen. Bør brukes med forsiktighet Verdiene nullstilles: clear all / clear functions / clear <funksjonsnavn> Ved omstart av Matlab 15 Uke41-Matlab-8 6. oktober 2015 16 function nyttnr = nykoelapp() % trekker neste koelapp % største nr på kølapp maxnr = 5; % holder rede på forrige nr persistent forrigenr if isempty(forrigenr) forrigenr = maxnr; end % finner nytt nr if forrigenr == maxnr nyttnr = 1; else nyttnr = forrigenr + 1; end % oppdaterer forrige nr forrigenr = nyttnr; end % function nykoelapp.m 16 Uke41-Matlab-8 6. oktober 2015

17 function nyttnr = nykoelapp() % trekker neste koelapp % største nr på kølapp maxnr = 5; % holder rede på forrige nr persistent forrigenr if isempty(forrigenr) forrigenr = maxnr; end % finner nytt nr if forrigenr == maxnr nyttnr = 1; else nyttnr = forrigenr + 1; end % oppdaterer forrige nr forrigenr = nyttnr; end % function Kjøring av kølapp Start 1. kjøring Slutt 1. kjøring Start 2. kjøring Slutt 2. kjøring Arbeidsområde nykoelapp Arbeidsområde nykoelapp Arbeidsområde nykoelapp Arbeidsområde nykoelapp maxnr : 5 nyttnr : 1 forrigenr : 1 forrigenr : 1 maxnr : 5 nyttnr : 2 forrigenr : 2 17 Uke41-Matlab-8 6. oktober 2015 18 Eksempelkjøringer 1 2 3 4 5 1 2 >> 1 2 >> clear nykoelapp 1 >> 18 Uke41-Matlab-8 6. oktober 2015

19 Syntaksfeil (syntax errors) Feil i bruken av språket Matlab gir beskjed Feil i programmer Kjøretidsfeil (runtime errors) Feil som oppstår under kjøring Logiske feil Programmet virker ikke som tiltenkt 19 Uke41-Matlab-8 6. oktober 2015 20 Trekanter Forutsetter: A <= B <= C Trekanttyper: 0: Umulig (A + B <= C) 1: Ubestemt 2: Likebeint (A = B eller B = C) 3: Rettvinklet (A 2 +B 2 = C 2 ) 4: Likebeint og rettvinklet (A = B og A 2 +B 2 = C 2 ) 5: Likesidet (A = B = C) Viktig å teste i riktig rekkefølge 20 Uke41-Matlab-8 6. oktober 2015

21 trekant.m 21 Uke41-Matlab-8 6. oktober 2015 22 Forts. 22 Uke41-Matlab-8 6. oktober 2015

23 Forts. (lokal funksjon) 23 Uke41-Matlab-8 6. oktober 2015 24 trekant_test.m 24 Uke41-Matlab-8 6. oktober 2015

25 Her ble det noe feil 25 Uke41-Matlab-8 6. oktober 2015 26 Debugger Program eller funksjonalitet for å finne feil i programmer. Breakpoints Programmet stopper på spesifiserte steder Kan se på variabler Steg-for-steg-utførelse Følge programflyten Inn i funksjoner som kalles (eller ikke) Fortsette (Continue) Alternativer: Stirre og tenke, trace på papir (i hodet) Ekstra utskriftskommandoer 26 Uke41-Matlab-8 6. oktober 2015

27 På trekantproblemet Breakpoints markeres med rød prikk, grønn pil viser neste kommando som vil bli utført 27 Uke41-Matlab-8 6. oktober 2015 28 R2015a: EDITOR-tabàDebug Step Clear breakpoints in all files Continue Step in Step out Run to Cursor Exit debug mode Set/clear breakpoint Breakpoints markeres med rød prikk, grønn pil viser neste kommando som vil bli utført 28 Uke41-Matlab-8 6. oktober 2015

29 Feil i rettvinklet Når c*c er større enn a*a+b*b blir venstresiden negativ og ulikheten blir sann uansett størrelsen på avviket. Må sjekke absoluttverdien! 29 Uke41-Matlab-8 6. oktober 2015 30 Eksamen 2010 30 Uke41-Matlab-8 6. oktober 2015

31 31 Uke41-Matlab-8 6. oktober 2015 32 a) b) 32 Uke41-Matlab-8 6. oktober 2015