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

Like dokumenter
TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Testlig og binær form

Binærfiler versus tekstfiler

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

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

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

Datastrukturer (kap. 8)

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

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

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak ( exceptions ) - 3rd edition: Kapittel 6. Professor Alf Inge Wang

Læringsmål og pensum. Inn- og utoperasjoner 21/10/16

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

ITGK - H2010, Matlab. Repetisjon

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

Noen innebygde funksjoner - Vektorisering

Noen innebygde funksjoner - Vektorisering

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

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

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

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

TDT4105 IT Grunnkurs Høst 2016

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

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

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

Læringsmål og pensum

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs

Plan for dagen. Vprg 4. Dagens tema - filbehandling! Strømmer. Klassen FilLeser.java. Tekstfiler

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

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

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

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

Python: Filer og unntak Gaddis: Kapittel 6

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

Læringsmål og pensum. Oversikt

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

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

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

Filbehandling Tekstfiler

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

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

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

MENGDER (SETS) Læringsmål og pensum. Kapittel 9.2

Øvingsforelesning i Matlab (TDT4105)

Øvingsforelesning TDT4105

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

Python: Oppslagslister (dictionaries) og mengder 3. utgave: Kapittel 9

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

TDT4105 IT Grunnkurs Høst 2014

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

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

Matematikk Øvingsoppgaver i numerikk leksjon 4 m-ler

TDT4110 Informasjonsteknologi grunnkurs: Programmering: En større case. Professor Alf Inge Wang

Læringsmål og pensum. En større case. Mål Lære å lage større og sammensatte programmer Pensum Kapitlene 1-9 og 12.

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

TDT4105 Informasjonsteknologi, grunnkurs

Største primtallsfaktor i tall

TDT4105 IT Grunnkurs Høst 2014

TDT4110 Informasjonsteknologi, grunnkurs Uke 35 Introduksjon til programmering i Python

TDT4105 Informasjonsteknologi, grunnkurs Eksempler

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

TDT4110 IT Grunnkurs Høst 2016

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

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

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

Øvingsforelesning i Matlab TDT4105

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

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

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

INF1000 (Uke 5) Mer om løkker, arrayer og metoder

INF1000: noen avsluttende ord

TDT4110 IT Grunnkurs Høst 2016

Dictionary er et objekt som lagrer en samling av data. Minner litt om lister men har klare forskjeller:

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

IN1000 Repetisjonskurs: IO og listeoperasjoner (+ string)

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

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

Læringsmål og pensum. Designe et program

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

I dag skal vi ved hjelp av ganske enkel Python-kode finne ut om det er mulig å tjene penger på å selge og kjøpe en aksje.

NOTAT (pensum!) Javas klasse-filer, byte-kode og utførelse

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

Forelesning inf Java 4

Leksjon 3. Kontrollstrukturer

Øvingsforelesning i Matlab TDT4105

Programmeringsspråket C Del 2

Forelesning inf Java 5

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

IN1000 Obligatorisk innlevering 7

NB: Vi trenger alle sitteplassene, så ikke la setene stå tomme i mellom dere! Fyll opp forfra, fra midten, er dere snill

Forelesning inf Java 5

Programmeringsspråket C Del 2

Transkript:

1 TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose Anders Christensen (anders@ntnu.no) Rune Sætre (satre@ntnu.no) TDT4105 IT Grunnkurs

2 Læringsmål/pensum Filbehandling Mål: Forstå forskjell på tekstlig og binær form Forstå hvordan data organiseres i en fil Kunne overføre data til og fra filer i Matlab Pensum i Matlab-boka 3.6 «Introduction to File Input/Output» 9 Advanced File Input and Output Kahoot Quiz Fra forrige uke: Problemløsning/programmering Finne mønster i større tabell 2

3 Filer: Motivasjon Kan ikke alltid gjenskape data eller regne ut ting på nytt Ofte behov for å lagre verdier som skal leses inn eller er beregnet i et program for senere bruk Data kan være av samfunnsmessig interesse (værvarsling) og påkrevet lagret for senere tilgang Mange beregninger på realistiske systemer lager store datamengder må lagre for å kunne studere data med andre verktøy, f.eks. visualisering Overføre data mellom programmer 3

4 Tekstlig og binær form Binær form Praktisk for datamaskiner, men veldig upraktisk for mennesker! Tallverdier lagres som binært kodede tall Hvert tall (double) bruker da 8 bytes (64 bits) i minnet (RAM) Tekstlig form Mindre datamengder kan med fordel lagres som ASCII-tekst Tekstlig form gjør at vi også kan se hva verdiene er Matlab oversetter fra binær form til en tekststreng Bruker tegnene: 0, 1,..., 9,., +, - og e Hvert enkelt tegn (enkelt-bokstav) bruker da 2 bytes 4

5 Binærfiler versus tekstfiler Ulemper med tekstfiler Oversetting til/fra tekstlig form Tar (vanligvis) større plass Fordeler med tekstfiler Vi kan lett lese innholdet (så lenge filen ikke blir alt for stor) Standardisert ASCII, kan utveksle data mellom alle programmer Kan skrive inn nytt eller endret innhold i en teksteditor Filer kan bli store, veldig store Data fra en værberegning kan være over 4 GB (4 milliarder byte) Effektivitet og raske oppslag er viktig Lesbarhet (for mennesker) er irrelevant Vi skal fokusere på behandling av tekstfiler 5

6 Lagring av matriser Matlab gjør det enkelt å lagre matrisedata Samme datatype Regelmessig form (samme antall kolonner i alle rader) save <filnavn> <variabel> -ascii (-append) Lagrer variabel i tekstfil med filnavn -append legger til variabels innhold nederst i en gammel tekstfil load <filnavn> Henter data fra fil filnavn til variabel filnavn <variabel> = load( <filnavn> ) Henter inn data fra fil filnavn til variabelen variabel type <filnavn> Skriver ut innholdet i filen filnavn 6

7 Eksempel 1 7

8 Eksempel 1 (forts.) save og load er den enkleste måten å bruke filer Forutsetter matrisedata, ikke alltid det passer 8

9 Eksempel: Værdata Middeltemperaturer fra Voll i september: voll_sept_2011.txt Hver linje: dag mnd år temp Ønsker funksjon som beregner: Gjennomsnittstemperatur (mean) Laveste temperatur (min) Høyeste temperatur (max) 9

10 vaerstat.m 10

11 Eksempelkjøring 11

12 Lavnivå (avansert) filbehandling Tre steg 1. Åpne fil (etablerer kobling til filen) <fil-id> = fopen( <filnavn>, <tilgangstype>'); fil-id er en filpeker (referanse til filen) fil-id settes til -1 ved problemer Tilgangstyper: r lese (fra starten) w skrive (sletter gammelt innhold i filen først) a legge til (skrive på slutten av filen) 2. Bruker filen (lese og/eller skrive) 3. Lukke filen når vi er ferdige med den <status> = fclose(<fil-id>) Returnerer 0 når det går bra, -1 ellers 12

13 Lesing/skriving (steg 2) fgetl(<fil-id>) Leser inn en linje Returnerer en tekststreng med linjens innhold feof(<fil-id>) usann så lenge det er mer data igjen i filen (som ikke er lest) sann når vi har kommet til slutten av filen fprintf(<fil-id>, <formatstreng>, <verdier>) Skriver til filen med <fil-id> Som til skjerm Mange flere (spesialiserte) muligheter, se læreboka og help i Matlab. 13

14 Eksempelfil: Personregister Data om en person på hver linje Feltindikatorer: #navn: #adresse: #faar: Leser inn en og en linje og plukker ut data 14

15 lesandebyfil.m 15

16 Eksempelkjøring Leser en og en linje fra filen Skriver ut hele linjen 16

17 Plukker ut data: lesandebyfil2.m 17

18 Kjøreeksempel 18

19 Andeby- database Leser inn persondata til en vektor av strukturer Personpost (struktur): Vektor av personer: 19

20 lesandeby.m 20

21 Kjøreeksempel 21

22 Å legge til en «person» (en karakter) Lager funksjon som registrerer ny Andeby-innbygger Tar person-post som inn-parameter Åpner filen for å legge til ( a ) Lager tekstlinje ut fra person-posten Skriver tekstlinje til fil fprintf(fid, '%s\n', linje); Lukker filen 22

23 regandebykarakter.m 23

24 Kjøreeksempel 24

25 Problemet fra forrige uke: Søke etter del-tabell Dersom del-tabell finnes i tabell, returnere true + rad og kolonne for øvre-venstre-hjørne Ellers returneres false og 0 for både rad og kolonne Funksjonssignatur: function [finnes, rad, kol] = finnmonster(t, m) Problemer? Løsning? 25

26 >> T = randi(2,10,10) -1 T = 1 0 1 1 0 0 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 >> m = [ 1 1 1 ; 1 0 0 ; 1 0 1 ] m = 1 1 1 1 0 0 1 0 1 >> [finnes, rad, kolonne] = finnmonster(t,m) finnes = 1 rad = 5 kolonne = 7 >> 26

27 >> image(t*10) >> image(m*10) 27

28

29 29

30 return og break Terminering av funksjoner og løkker (før tiden) return break 30

31 return og break, forts. Overstyrer den normale programflyten Gir av og til enklere kode som er lettere å forstå Bør brukes sparsomt NB! break avslutter bare den (innerste) løkken den står i 31