Om obligatoriske oppgave 2 Bakgrunn og tips

Like dokumenter
Tips til arbeidet med obligatorisk oppgave 2 i MAT-INF 1100 høsten 2004

KAPITTEL 10 Flerskala-analyse og kompresjon av lyd

KAPITTEL 10 Flerskala-analyse og kompresjon av lyd

Unix/Linux for litt viderekomne

Unix/Linux for litt viderekomne

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffmankoding

INF1020 Algoritmer og datastrukturer GRAFER

Nyttige Linux-kommandoer. Hvordan du kan jobbe mer effektivt Dag Langmyhr

Oversikt. INF1000 Uke 1 time 2. Repetisjon - Introduksjon. Repetisjon - Program

Håndtering av filer og kataloger

Håndtering av filer og kataloger

IN1020. Obligatorisk oppgave 1. Formål

INF1040 Digital representasjon

IN1010 V18, Obligatorisk oppgave 5

Øving 0 - Xcode TDT4102

Obligatorisk oppgave nr. 3 (av 4) i INF1000, våren 2006

INF1000: noen avsluttende ord

INF2810: Funksjonell Programmering. Huffman-koding

Del 1 En oversikt over C-programmering

$ls -l $grep -i Olsen adresseliste.txt less #!/bin/sh $echo `ls` $chmod 755. Praktisk Linux. Grunnleggende skall kommandoer. Irene Ludvigsen Husa

AlgDat 10. Forelesning 2. Gunnar Misund

Obligatorisk oppgave 5: Labyrint

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffman-koding

UNIVERSITETET I OSLO

Obligatorisk oppgave 1 i INF 4130, høsten 2008

AlgDat 12. Forelesning 2. Gunnar Misund

Obligatorisk oppgave 1 i INF 4130, høsten 2009

Dagens plan. INF Algoritmer og datastrukturer. Koding av tegn. Huffman-koding

Innhold. Kom i gang med IRiR. 1 Installer R & RStudio. 2 Last ned siste versjon av IRiR-skriptet

Oppgave 1 - Linux kommandolinje (%)

Beregning av med svært mange desimaler

Generiske mekanismer i statisk typede programmeringsspråk

Hvordan en prosessor arbeider, del 1

Obligatorisk oppgave 2 i INF 4130, høsten 2009

INF 1040 Løsningsforslag til kapittel

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

Bakgrunnen for INF2100. Velkommen til INF2100. Prosjektet. Hva gjør en kompilator?

Forelesning inf Java 4

Velkommen til INF2100 Jeg er Dag Langmyhr

Løsningsforslag for Obligatorisk Oppgave 2. Algoritmer og Datastrukturer ITF20006

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

INF1000 : Forelesning 4

Velkommen til INF2100

i=0 i=1 Repetisjon: nesting av løkker INF1000 : Forelesning 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker j=0 j=1 j=2 j=3 j=4

Sampling, kvantisering og lagring av lyd

INF 1000 høsten 2011 Uke september

INF2810: Funksjonell Programmering. Huffman-koding

INF1000 undervisningen INF 1000 høsten 2011 Uke september

Jentetreff INF1000 Debugging i Java

Dagens tema: Generelt om variable. Kodegenerering. Deklarasjon av array er. Versjonskontroll. Oppslag i array er

Velkommen til. INF våren 2016

Presentasjon av oblig 2

INF1000: noen avsluttende ord

INF Algoritmer og datastrukturer

Fig1. Den konvekse innhyllinga av 100 tilfeldige punkter i planet (de samme som nyttes i oppgaven.)

Oppgave 1 - Java og prosesser (20%)

Raster VS Vektor. Stian Larsen Raster

Datamaskinene ved Ifi (inkludert en kort intro til Unix/Linux)

Dagens tema: 12 gode råd for en kompilatorskriver

Oblig4 - forklaringer. Arne og Ole Christian

Tema for siste forelesning:

OPPGAVESETT 7 OBJEKTER OG REFERANSER

UNIVERSITETET I OSLO

Mål med kurset. Java i INF Dagens tema. GUI med Swing. Dokumentasjon

Litt mer om uttrykk: ++ og -- INF1000 : Forelesning 4. Oppgave. Blokker. 0 udefinert udefinert. Alternativ 2 Postfiks-operator

2 Om statiske variable/konstanter og statiske metoder.

INF5110. Oblig 2 presentasjon

Oversikt. Informatikk. INF1000: Grunnkurs i objektorientert programmering. Utenom INF1000 Informasjon & hjelp

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister

Rekursjon. Binærsøk. Hanois tårn.

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

Om plotting. Knut Mørken. 31. oktober 2003

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

Høgskoleni Østfold. Ny/utsatt EKSAMEN

Filer i Linux og Bourne-again shell

Dagens tema. C-programmering. Nøkkelen til å forstå C-programmering ligger i å forstå hvordan minnet brukes.

3. obligatoriske innlevering, høsten 2014

Array&ArrayList Lagring Liste Klasseparametre Arrayliste Testing Lenkelister Videre

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Forkurs i informatikk - Onsdag

INF Oblig 2 semantikksjekk og kodegenerering

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Hvordan jobber vi ved Ifi (inkludert en kort intro til Unix/Linux)

INF1000: Forelesning 7

INF2810: Funksjonell Programmering. Huffman-koding

I denne oppgaven blir du introdusert for programmeringsspråket JavaScript. Du skal gjøre den klassiske oppgaven Hei verden, med en katt.

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

Socket og ServerSocket

INF Uke 10. Ukesoppgaver oktober 2012

Forelesning inf Java 1

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

En oppsummering (og litt som står igjen)

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

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

Transkript:

Kompresjon p.1/14 Om obligatoriske oppgave 2 Bakgrunn og tips Forelesning 31/10, 2005 MAT-INF1100

Kompresjon p.2/14 Oblig 2 Hovedelementer 1. Dekomponering og interpolasjon 2. Kompresjon Siktemål Gi eksempler på manipulering av tidsserie; med lyd som eksempel Koding av en algoritme med arrayer og indekshåndtering Testing av kode på kjent problem Inpassing av egen kodebit i et eksisterende rammeverk

Kompresjon p.3/14 Kompresjon Viktig for lagring og sending av data. To hovedtyper: Tapsløs (lossless) Ingen informasjon går tapt eller fordreies orginale data kan rekonstrueres eksakt fra de komprimerte. Brukt for tekst, programmer, vitenskapelige data etc. (zip, gzip) Også for feks. bilder (gif,...) Med tap (lossy) Informasjon går tapt, men mer effektiv enn lossless Brukt for lyd, bilder og film (jpeg, mpeg,...) Kan ikke brukes for tekst, programmer etc.

Kompresjon p.4/14 Tapsløs kompresjon; gzip Brukes mye for å komprimere filer som ikke er i bruk. Bygger på gjenkjenning og effektiv representasjon av mønstre. Eksempel med to filer: null.dat ver.dat 0.00000000 0.41231056 0.00000000 0.58309519 0.00000000 0.71414284 0.00000000 0.82462113 0.00000000 0.92195445......

Kompresjon p.5/14 Effekt av gzip Filer med 10 linjer (bytes med rødt): linux ls -l -h null.dat ver.dat -rw-r r 1 geirkp geirkp 110 Oct 29 22:36 null.dat -rw-r r 1 geirkp geirkp 110 Oct 29 22:36 ver.dat linux gzip null.dat ver.dat linux ls -l -h null.dat.gz ver.dat.gz -rw-r r 1 geirkp geirkp 37 Oct 29 22:36 null.dat.gz -rw-r r 1 geirkp geirkp 95 Oct 29 22:36 ver.dat.gz Med 1000 linjer (størrelse i bytes): ukomprimert: 11000, null.dat.gz: 94, ver.dat.gz: 5000 Det er gjentagelser (og ikke at det er nuller) som gjør forskjellen. gzip er en vesentlig del av kompresjonen i obligen

Flerskala-dekomponering Opprinnelig sample, grovere sample : Avvik fra lineær interpolasjon i mellomnoder: er erstattet av totalt like mange er or er. Flerskala-dekomponering p.6/14

Flerskala-dekomponering;egenskaper I utgangspunktet: intet tap, ingen kompresjon. Bare en reorganisering av informasjonen Kompresjon (lossy!) kommer inn ved at toleranse settes til null. Totalt vil mange av ene da kunne bli null og kompresjon av typen gzip blir effektiv Dekomponeringen gjentas;,,.... Totalt ( betegner hele tidsserier (sampler)) Rekonstruksjon: definisjonsformler for brukes baklengs er og For lyd: alle samplene er 16 bits hetall; short i Java er Flerskala-dekomponering p.7/14

Problem: antall sampler i er like Vi har, mulig metode: 1. behandles som før og gir, 2. spesialbehandles ved innføring av :! Dekomponering av odde sample: en flere av Dekomponering av like sample: like mange enn og Mye er likt for de to tilfellene; dette bør gjenspeile seg i programmeringen Flerskala-dekomponering p.8/14

Obligatorisk oppgave 1. Litt leking med lyd. Komme i gang. Start med fila Filters.java 2. Håndregning av en enkel dekomponering. Lære algoritmen å kjenne og etablere et testseksempel med kjent løsning 3. Kode dekomponering, teste kode og prøve ut dekomponering på en lyd. Valgfri del med multippel dekomponering. I dag snakker vi bare om siste del. Flerskala-dekomponering p.9/14

Nedlasting p.10/14 Nedlasting, filflytting Anbefaling: lag en mappe og flytt deg dit mkdir -p kurs/mat-inf1100/oblig2 cd kurs/mat-inf1100/oblig2 wget... mkdir oppg3a cp *.java oppg3a rm... mkdir lager mappe(r), opsjon -p oppretter undermapper cd bytter arbeidsmappe, wget henter filer fra nettet (adresse gitt på WEB) cp kopierer de filer man trenger, men rm fjerner filer (det har fulgt en del skrot med wget Vi bør arbeide med 3a og 3b i ulike mapper

Nedlasting p.11/14 Filhåndtering i Linux flere filer håndteres samtidig med joker -notasjon (*) rm *.htm fjerner alle filer (i nåværende mappe) som har navn som ender på.html Er siste argument i en kopi eller flytt kommando et mappenavn kopieres/flyttes alt til denne cp *.java oppg3a Fjerning av mapper Først tømme mappen, deretter fjerne rm maa/*; rmdir maa (virker ikke om maa har undermapper) Alternativ; rekursiv delete rm -r maa Vær veldig forsiktig med rm kommandoen, spesielt kombinert med jokernotasjon (*)!

Nedlasting p.12/14 Javafiler i oppgave 3 AbstractCompressedSound.java inneholder superklasse med samme navn MatInf1100Sound.java inneholder lydklassen vår I Compressed1100Sound.java skal vi legge inn en konstruktør som dekomponerer og en public MatInf1100Sound decompress() Utenfra ser disse like ut i 3a og 3b. test parabola.java inneholder en main som tester koden i Compressed1100Sound.java vha. oppg. 2 CompressionTester.java utfører dekomp., rekonstruksjon av strenglyd og skriver filer original.obj opprinnelig generert signal Compressed1100Sound.obj dekomp./rekons.

Nedlasting p.13/14 Testing av kode i 3a javac test parabola.java java test parabola d-array:... w-array:... Testing av kompresjon i 3a rm -f *.obj *.obj.gz javac CompressionTester.java ; java CompressionTester ls -l -h *.obj gzip *.obj ls -l -h *.obj.gz

Nedlasting p.14/14 Effektivisering; for spesielt interesserte Testing av kompresjon med endringer i kode kan bli mye gjentagelser av kommandoer slitsomt og gir lett feil. Lag en fil, feks. run, med linjene rm -f *.obj *.obj.gz javac CompressionTester.java ; java CompressionTester ls -l -h *.obj gzip *.obj ls -l -h *.obj.gz Nå utføres disse med tcsh run eller source run. Dette er et enkelt eksempel på skripting. Kommandoshellet i linux er faktiske et programmeringsspråk som også innholder if-setninger og mye mer.