Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Relevanta dokument
Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. save

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen. Tabell på skärmen, test

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Läsning, skrivning, tangentbord, skärm. F6: Filhantering (kap. 8) Tabell på skärmen

F5: Grafiska användargränssnitt (kap. 9 10) Vad är ett (grafiskt) användargränssnitt? Ett exempel: Enkel räknare

Grafiska objekt och egenskapslistor Grafikfunktioner returnerar en objektreferens. >> obj_r = quiver([0 1],[0 0],[1 0],[1 1],'o') obj_r = 111.

F5: Grafiska användargränssnitt (kap. 9 10) Vad är ett (grafiskt) användargränssnitt? Ett exempel: Enkel räknare

Föreläsning 13. In- och utmatning

Villkor if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 4 december 2015 Sida 1 / 26

TANA81: Simuleringar med Matlab

Villkor, if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Introduktion & MATLABrepetition. (Kap. 1 2 i MATLAB Programming for Engineers, S. Chapman)

F2: Styrstrukturer, programmeringsteknik (kap. 3 4)

Linjär algebra med tillämpningar, lab 1

Deklarera en struct som kan användas för att representera en rät linje

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Filer och structer Del 2

Programmeringsteknik med C och Matlab

Föreläsning 12: Datastrukturer & filer

Villkor if, switch. F2: Styrstrukturer, programmeringsteknik (kap. 3 4) If-kommando forts. If-kommando forts.

Textsträngar från/till skärm eller fil

Beräkningsvetenskap föreläsning 2

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Repetition av filer Grundkurs i programmering med Python

KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Börja programmera. Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner. Läs inte avsnitt 4.2.3

Objektorienterad Programmering (TDDC77)

Datatyper i MATLAB Tal

Programmering för språkteknologer I, VT2012. Rum

Planering Programmering grundkurs HI1024 HT TIDAA

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Språket Python - Del 2 Grundkurs i programmering med Python

Datorövning 1: Introduktion till MATLAB

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Planering Programmering grundkurs HI1024 HT data

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Filer. DA2001 (Föreläsning 16) Datalogi 1 Hösten / 19

TANA17 Matematiska beräkningar med Matlab

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Kursuppläggning. F1: Introduktion, Matlabrepetition (kap. 1 2) Motivering för programmering. Att kunna programmera

4.3. Programmering i MATLAB

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

Programmeringsteknik med C och Matlab

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Uppgifter till praktiska tentan, del A. (7 / 27)

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Introduktion till MATLAB

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Matematisk Modellering

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Föreläsning 1 & 2 INTRODUKTION

Filhantering. Grunderna i filhantering. Uppbyggnad av filer. Data hierarkin. Filpekaren. Positionering i filer

Strängar. Strängar (forts.)

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Kort om programmering i Matlab

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

TDP002 - Imperativ programmering

Beräkningsverktyg HT07

Beräkningsvetenskap och Matlab. Vad är MATLAB? Vad är MATLAB? Användningsområden. Vad är MATLAB? Grunderna i Matlab. Beräkningsvetenskap == Matlab?

Övningsuppgifter kapitel 8

TDDC77 Objektorienterad Programmering

Matematisk Modellering

Johan Karlsson Datavetenskap för teknisk kemi, 10p, moment 1 Datavetenskap Umeå Universitet. Tentamen

Enkla datatyper minne

Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Matriser och vektorer i Matlab

(a) Skriv en matlabsekvens som genererar en liknande figur som den ovan.

MMA132: Laboration 2 Matriser i MATLAB

C++ Lektion Tecken och teckenfält

Index. Vektorer och Elementvisa operationer. Summor och Medelvärden. Grafik i två eller tre dimensioner. Ytor. 20 januari 2016 Sida 1 / 26

Introduktion till MATLAB, med utgångspunkt från Ada

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

1 Funktioner och procedurell abstraktion

Övning från förra gången: readword

Introduktion till MATLAB

Lösningar till uppgifterna sätts ut på kurssidan på nätet idag kl Omtentamen i Programmering C, 5p, A1, D1, E1, Fri, Pr1, Te/Ek1,

Programmering, grundkurs, 8.0 hp HI1024, omtentamen, TEN1. Tisdagen den 7 juni 2011,

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Tentamen ges för: Tentamensdatum: Tid:

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Laboration 1: Linjär algebra

F8: Resterna. Substitutionschiffer. Permutationer. ASCII och char. Substitutionschiffer (Lab 3) Permutationer Rekursion

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 8 december 2015 Sida 1 / 22

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Uppgift 1 ( Betyg 3 uppgift )

Ordlistor, filhantering och ut på webben. Linda Mannila

Tentamen i Programmering grundkurs och Programmering C

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

NUMPROG, 2D1212, vt Föreläsning 9, Numme-delen. Stabilitet vid numerisk behandling av diffekvationer Linjära och icke-linjära ekvationssystem

Transkript:

Numeriska Metoder och Grundläggande Programmering för P1, VT2014 Föreläsning 5: Filhantering i Matlab Mer om datatyper: celltabeller, gles lagring (Kap. 7 & 8 i MATLAB Programming for Engineers, S. Chapman)

Mer of datatyper Gles lagring av matriser Celltabeller Filhantering i Matlab Läsning från tangentbordet, utskrift på skärmen Binär skrivning och inläsning med save och load Skrivning på och inläsning från textfil save och load Användning av filreferenser: öppna, stänga, filslut Binär skrivning och läsning med filreferens Skrivning och läsning med formatstyrning

Gles lagring av matriser Tabeller i Matlab sparar normalt varje element i minnet. Om de flesta elementen i en numerisk matris är nollor går det att vara mycket mer effektiv. Vid gles lagring sparas: nollskillda värden, och information of deras position Minnesåtgången blir mindre (om matrisen är tillräckligt gles) och om matrisen har en bra struktur kan numeriska metoder för att, t.ex., lösa linjära ekvationssystem bli mycket snabbare.

Gles lagring av matriser c l e a r A = d i a g ( ones (1000,1)+ rand ( 1 0 0 0, 1 ), 0 ) ; A = A + d i a g ( rand ( 9 9 9, 1 ), 1 ) ; A = A + d i a g ( rand (999,1), 1); spy (A) A g l e s = s p a r s e (A ) ; whos b = rand ( 1 0 0 0, 1 ) ;

Gles lagring av matriser t i c f o r k =1:50 x = A\b ; end m e d e l t i d = toc /50 t i c f o r k =1:50 x = A g l e s \b ; end m e d e l t i d = toc /50

Gles lagring av matriser e x e m p e l g l e s Name S i z e Bytes C l a s s A t t r i b u t e s A 1000 x1000 8000000 double A g l e s 1000 x1000 55976 double s p a r s e m e d e l t i d = 0.0144 m e d e l t i d = 1.3438 e 04 d i a r y o f f

Celltabeller I vanliga tabeller i Matlab är alla element av samma datatyp. Exempel: textsträngar som är vektorer av tecken, char matriser med numeriska värden I celltabeller kan olika element vara av olika datatyp. Såg exempel på celltabeller i samband med funktionsdefinitioner; fler exempel i dag. Skapa en celltabell med m rader och n kolumner genom A = cell(m,n); I varje position lagras då en tom tabell.

Celltabeller Exempel: A = c e l l ( 3, 2 ) ; A{1,1} = 4 5 ; A{1,2} = en t e x t ; A{2,1} = @( x ) s i n (3 p i x ) ; A{2,2} = eye ( 1 0 ) ; A{3,2} = c e l l ( 4, 4 ) ; d i s p (A) B = A( 1, 2 ) C = A{1,2} whos B C

Celltabeller Exempel: e x e m p e l c e l l t a b e l l [ 4 5 ] en t e x t @( x ) s i n (3 p i x ) [ 1 0 x10 double ] [ ] { 4 x4 c e l l } B = en t e x t C = en t e x t Name S i z e Bytes C l a s s A t t r i b u t e s B 1 x1 126 c e l l C 1 x7 14 char d i a r y o f f

Celltabeller Observera att: A(1,2) är en ny celltabell med 1 rad och 1 kolumn A{1,2} returnerar innehållet i position Allmänt ger A(rader,kolumner) en ny celltabell med innehållande de utvalda raderna och kolumnerna i A.

Läsning och skrivning, tangentbord och skärm

Läsning och skrivning, tangentbord och skärm Tidigare har vi hämtat data från tangentbordet och bara presenterat resultat på skärmen. In från tangentbordet: genom tilldelningskommando input(text till anv.), input(text till anv., s ), Ut på skärmen: tilldelning utan ; ger utskrift med variabelns namn disp(uttryck), ger utskrift utan variabelns namn fprintf(formatstr,uttryck,...), ger utskrift där formatsträngen styr hur uttryckens värdens skrivs ut. Ger mer kontroll över t.ex. radbrytning än disp.

Utskrift i kommandofönstret p i ans = 3.1416 d i s p ( p i ) 3.1416 format l o n g d i s p ( p i ) 3.141592653589793 format s h o r t d i s p ( [ T a l e t p i :, num2str ( p i ) ] ) T a l e t p i : 3.1416 d i s p ( [ T a l e t p i :, num2str ( pi, %16.15 f ) ] ) T a l e t p i : 3.141592653589793 f p r i n t f ( % s %16.15 f \n, T a l e t p i :, p i ) T a l e t p i : 3.141592653589793 d i a r y o f f

Exempel: tabell i kommandofönstret Vi vill skriva ut en tabell över trianglar s.a.: en vinkel är rät (Pythagoras sats) alla sidor har heltalslängder, den största sidlängden är högst 30

Exempel: tabell i kommandofönstret f p r i n t f ( \ n a b c\n ) f o r c = 1:30 c2 = c ˆ 2 ; f o r a = 1 : f l o o r ( s q r t ( c2 /2)) a2 = a ˆ 2 ; b = round ( s q r t ( c2 a2 ) ) ; i f end end end bˆ2 == c2 a2 f p r i n t f ( %5d%5d%5d\n, a, b, c ) ;

Exempel: tabell i kommandofönstret t a b e l l t r i a n g l a r a b c 3 4 5 6 8 10 5 12 13 9 12 15 8 15 17 12 16 20 7 24 25 15 20 25 10 24 26 20 21 29 18 24 30 d i a r y o f f

Läsning och skrivning, från och till fil När filen både skapas och läses in av Matlab: save och load När filerna används av både Matlab och andra program: fwrite, fread, (binärt) fprintf, fscanf, textscan, (formatstyrt, textfiler)

save Spara till fil save alla variabler i arbetsminnet sparas binärt till filen matlab.mat save filnamn alla variabler i arbetsminnet sparas binärt till filen filnamn.mat save filnamn variabellista variablerna i variabellistan sparas binärt till filen filnamn.mat Filerna är plattformsoberoende, men kan bara användas av Matlab. Använd save när data bara ska användas av Matlab. Kan spara i textfiler genom tillägget -ascii

load Läs från fil load alla variabler i filen matlab.mat läses in i arbetsminnet load filnamn alla variabler i filnamn.mat läses in i arbetsminnet load filnamn variabellista variablerna i variabellistan läses in från filnamn.mat till arbetsminnet

save f u l l m a t r i s A save g l e s m a t r i s A g l e s c l e a r whos l o a d f u l l m a t r i s l o a d g l e s m a t r i s whos Name S i z e Bytes C l a s s A t t r i b u t e s A 1000 x1000 8000000 double A g l e s 1000 x1000 55976 double s p a r s e d i a r y o f f

Läsning och skrivning med filreferens Matlab använder en filreferens för att hålla reda på en fil: vad programmet tillåts göra med filen, och aktuell position i filen. filreferens = fopen(filnamn,tillstånd) Tillstånd kan vara r, r+, w, w+, a, a+ Om öppningen misslyckades blir filreferensen -1. fclose(filreferens) Avsluta pågående utskrifter. Stäng filen. Vid lyckad stängning returneras 0, annars -1. feof(filreferens) Sant om inga data återstår att läsa, falskt annars.

Tillstånd r Öppna en existerande fil för att läsa r+ Öppna en existerande fil för att läsa och skriva w Radera innehållet i en existerande fil (eller skapa en ny tom fil) och öppna den för att endast skriva w+ Radera innehållet i en existerande fil (eller skapa en ny tom fil) och öppna den för att läsa och skriva a Öppna en existerande fil för att skriva i slutet av den existerande filen a+ Öppna en existerande fil för att skriva och läsa i slutet av den existerande filen

Binär läsning och skrivning med filreferens Skrivning binärt med filreferens: fwrite(filreferens,uttryck,precision) där precisionen kan vara t.ex. float64, float32, char,... Använd hjälpfunktionen för att se vad olika precisioner motsvarar i andra språk! Läsning binärt med filreferens: [variabel,antal] = fwrite(filreferens,storlek,precision) där antal är antalet lästa värden när inläsningen är klar, storlek anger hur många värden som önskas läsa in: ett tal, Inf, eller [m n] (läser sparar i m n tabell), och precision är som vid skrivning

Binär skrivning med filreferens Exempel: % Exempel b i n a r s k r i v n i n g med f i l r e f e r e n s A = randn ( 2, 2 ) ; u t f i l = fopen ( t e s t f i l. dat, w ) ; a n t a l = f w r i t e ( u t f i l, A, f l o a t 6 4 ) ; d i s p ( [ i n t 2 s t r ( a n t a l ), t a l s k r e v s t i l l f i l ] ) ; f c l o s e ( u t f i l ) ; c l e a r u t f i l ;

Binär läsning med filreferens Exempel: % Exempel b i n a r l a s n i n g med f i l r e f e r e n s i n f i l = fopen ( t e s t f i l. dat, r ) ; B = f r e a d ( i n f i l, [ 2 2 ], f l o a t 6 4 ) ; f c l o s e ( i n f i l ) ; c l e a r i n f i l ;

Läsning och skrivning med formatstyrning Skrivning som text med filreferens: fprintf(filreferens,formatsträng,uttryck) där formatsträng styr utskriftens utseende sprintf(formatsträng,uttryck) returnerar en sträng i stället för att skriva till fil Läsning från textfil med filreferens: [variabel,antal] = fscanf(filreferens,formatsträng,storlek) där antal är antalet lästa värden när inläsningen är klar, storlek anger hur många värden som önskas läsa in: ett tal, Inf, eller [m n] (läser sparar i m n tabell), och formatsträng är som vid skrivning CT = textscan(filreferens,formatsträng,antal läser kolumnuppdelad text

Formatsträngar består av formatkoder, specialtecken, och annan text. En formatkod har formen %[- + 0][n.n]k % och k är obligatoriska delar, några möjliga värden på k är: c ett tecken s en sträng i ett heltal (med tecken) e exponentform f decimalbråk g kortaste av e och f De möjliga värdena på de valfria delarna är: - vänsterställ + sätt alltid ut tecken 0 fyll ut med inledande nollor n. totalt antal tecken.n antal siffror/decimaler

Formatsträngar Specialtecken är bland andra: %% procenttecken apostrof \f sidmatning \n ny rad \r vagnretur \t tabulatortecken Uttrycket kombineras med formatkoderna. När formatsträngen tar slut används den från början igen. Exempel: f p r i n t f ( % f \ t %.8 f \ t %.8e\n, s q r t ( 2 ) ( 1 : 1 0 ) ) 1.414214 2.82842712 4.24264069 e+00 5.656854 7.07106781 8.48528137 e+00 9.899495 11.31370850 1.27279221 e+01 14.142136 d i a r y o f f

Formatstyrd skrivning med filreferens Exempel: % Exempel f o r m a t t e r a d s k r i v n i n g med f i l r e f e r e n s u t f i l = fopen ( t e s t f i l f. dat, wt ) ; a n t a l = f p r i n t f ( u t f i l, %16.15 e,a ) ; d i s p ( [ i n t 2 s t r ( a n t a l ), t e c k e n s k r e v s t i l l f i l ] ) f c l o s e ( u t f i l ) ; c l e a r u t f i l ;

Formatstyrd läsning med filreferens Exempel: % Exempel f o r m a t t e r a d l a s n i n g med f i l r e f e r e n s i n f i l = fopen ( t e s t f i l f. dat, rt ) ; C = f s c a n f ( i n f i l, % f ) ; f c l o s e ( i n f i l ) ; c l e a r i n f i l ;

Formatstyrd läsning med filreferens; Lab. 3 Exempel: Öppna en textfil innehållande en krypterad text, läs in och spara i en textsträng: %k r y p t o.m, v i s a r f i l h a n t e r i n g : % t e x t f i l t i l l t e c k e n v e k t o r f i d=fopen ( k r y p t e r a d 1. txt, rt ) ; t e x t=f s c a n f ( f i d, % c, I n f ) ; f c l o s e ( f i d ) ; c l e a r f i d ;

Direktåtkomst av olika delar av en fil Man kan styra var i en fil läsning och skrivning ska ske: frewind(filreferens), sätter aktuell position till början av filen ftell(filreferens), get aktuell position i byte från filbörjan fseek(filreferens,position,origo), sätter aktuell position till position byte efter origo; tre möjliga värden på origo: -1 är filbörjan, 0 är aktuell position, 1 är filslut

Exempel på inläsning av tabellerad text. I textfilen Aktiviteter vardag.csv finns följande tabell: A c t i v i t y Time Eat 2. 5 S l e e p 7. 5 Commute 1. 5 Work 8 L e i s u r e 4. 5 Vi vill skapa ett cirkeldiagram med aktiviteterna ordnade efter tid i fallande ordning.

Exempel på inläsning av tabellerad text. c l e a r ; c l c d a t a f i l = fopen ( A k t i v i t e t e r v a r d a g. csv, rt ) ; t i t e l r a d = t e x t s c a n ( d a t a f i l, % s %s, 1 ) ; data = t e x t s c a n ( d a t a f i l, % s %f ) ; f c l o s e ( d a t a f i l ) ; c l e a r d a t a f i l a k t i v i t e t = data {1}; t i d = data {2}; [ t i d s, i n d e x ] = s o r t ( t i d, descend ) ; f i g u r e p i e ( t i d s, a k t i v i t e t ( i n d e x ) ) ; t i t l e ( Week Day A c t i v i t i e s )

Week Day Activities Commute Eat Work Leisure Sleep

I mån av tid: publish diary print