TSKS21 Signaler, Information och Bilder Lab 2: Digitalisering

Relevanta dokument
Signal- och Bildbehandling, TSBB14. Laboration 2: Sampling och rekonstruktion. DFT.

Flerdimensionella signaler och system

Introduktion till MATLAB

Spektrala Transformer

Signal- och Bildbehandling, TSBB14. Laboration 2: Sampling och Tidsdiskreta signaler

TSBB14 Laboration: Intro till Matlab 1D

Laboration 3 Sampling, samplingsteoremet och frekvensanalys

Lab 1 Analog modulation

TSDT15 Signaler och System

DT1130 Spektrala transformer Tentamen

TSBB16 Datorövning A Samplade signaler Faltning

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

MR-laboration: design av pulssekvenser

TAIU07 Matematiska beräkningar med Matlab

Instruktion för laboration 1

Laboration: Grunderna i Matlab

TANA17 Matematiska beräkningar med Matlab

DT1120/DT1130 Spektrala transformer Tentamen

Introduktion till Matlab

Spektrala Transformer

Mer om funktioner och grafik i Matlab

Spektralanalys - konsten att hitta frekvensinnehållet i en signal

Inledning. Initiering av miljön. Att köra MatLab. Labrapporten

Projekt 3: Diskret fouriertransform

Introduktion till Matlab

Laboration i Fourieranalys, TMA132 Signalanalys med snabb Fouriertransform

2 Laborationsutrustning

Introduktion till Matlab

Digital Signalbehandling i Audio/Video

Signalanalys med snabb Fouriertransform

TSKS06 Linjära system för kommunikation Lab2 : Aktivt filter

DIGITALA FILTER. Tillämpad Fysik Och Elektronik 1. Frekvensfunktioner FREKVENSSVAR FÖR ETT TIDSDISKRET SYSTEM. x(n)= Asin(Ωn)

Teori... SME118 - Mätteknik & Signalbehandling SME118. Johan Carlson 2. Teori... Dagens meny

Resttentamen i Signaler och System Måndagen den 11.januari 2010, kl 14-19

Matriser och Inbyggda funktioner i Matlab

Lab Tema 2 Ingenjörens verktyg

Datorövning 1 Fördelningar

Spektrala Transformer

TANA17 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab

Instruktion för laboration 1

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

Matriser och Inbyggda funktioner i Matlab

Föreläsning 6: Spektralskattning: icke parametriska metoder. Leif Sörnmo 4 oktober 2009

Datorövning: Fouriertransform med Python

Laboration 1. Grafisk teknik (TNM059) Introduktion till Matlab. R. Lenz och S. Gooran (VT2007)

Vad gör vi när vi bara har en mätserie och ingen elegant matematisk funktion? Spektrum av en samplad signal. Trunkering i tiden

Lab 1, Funktioner, funktionsfiler och grafer.

Spektrala Transformer

Flerdimensionell signalbehandling SMS022

Övningar med Digitala Filter med exempel på konstruktion och analys i MatLab

Fouriermetoder MVE295 - bonusuppgifter

Introduktion till Matlab

Laboration i tidsdiskreta system

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

Funktioner och grafritning i Matlab

TANA17 Matematiska beräkningar med Matlab

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

Ulrik Söderström 20 Jan Signaler & Signalanalys

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

Laboration 2 - Modulering I denna laboration skall vi

Ulrik Söderström 19 Jan Signalanalys

Introduktion till Matlab

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

CTH/GU LABORATION 1 MVE /2013 Matematiska vetenskaper. Mer om grafritning

Mer om geometriska transformationer

repetera begreppen sannolikhetsfunktion, frekvensfunktion och fördelningsfunktion

Digitala filter. FIR Finit Impulse Response. Digitala filter. Digitala filter. Digitala filter

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

Datorövning 1: Fördelningar

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

Spektrala Transformer

Laboration i Fourieranalys för F2, TM2, Kf2 2011/12 Signalanalys med snabb Fouriertransform (FFT)

TAIU07 Matematiska beräkningar med Matlab

Signal- och bildbehandling TSEA70

Introduktion till Matlab

MATLAB övningar, del1 Inledande Matematik

2F1120 Spektrala transformer för Media Tentamen

Attila Szabo Niclas Larson Gunilla Viklund Mikael Marklund Daniel Dufåker. GeoGebraexempel

Introduktion till Matlab

DT1130 Spektrala transformer Tentamen

Laboration i Fourieroptik

Parametriserade kurvor

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Att sända information mellan datorer. Information och binärdata

TANA17 Matematiska beräkningar med Matlab

SF1635, Signaler och system I

Laborationstillfälle 1 Lite mer om Matlab och matematik

Tidsdiskreta stokastiska signaler

Mätningar med avancerade metoder

Laboration i Fourieroptik

Lab 2, Funktioner, funktionsfiler och grafer.

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

Funktionsteori Datorlaboration 2

Datorövning 1: Fördelningar

Matlabövning 1 Funktioner och grafer i Matlab

När man vill definiera en matris i MATLAB kan man skriva på flera olika sätt.

Tillämpad digital signalbehandling Laboration 1 Signalbehandling i Matlab och LabVIEW

At=A' % ' transponerar en matris, dvs. kastar om rader och kolonner U' % Radvektorn U ger en kolonnvektor

Elektronik. Dataomvandlare

Department of Physics Umeå University 27 augusti Matlab för Nybörjare. Charlie Pelland

Transkript:

TSKS21 Signaler, Information och Bilder Lab 2: Digitalisering Mikael Olofsson 8 februari 2017 Fyll i detta med bläckpenna Laborant Personnummer Datum Godkänd 1

1 Allmänt Denna laboration syftar till att ge dig vissa insikter i problem och begränsningar i samband med digitalisering av signaler. För den som inte har använt Matlab tidigare, så avser laborationen också att ge en viss vana vid Matlab. 2 Teori Läs igenom kursbokens avsnitt om DFT, fönstring, sampling och kvantisering. Där beskrivs den teori som berör det du ska göra i denna laboration. Läs också igenom Short Matlab Manual av Mikael Olofsson, som du laddar ner från kurswebben, speciellt om du inte har använt Matlab tidigare. Det dokumentet utgör en kortfattad manual för Matlab, och innehåller dessutom lite instruktioner om hur man skriver skript och funktioner i Matlab. 3 Förberedelseuppgifter Läs igenom lab-pm. Det ska man alltid göra inför en laboration, oavsett om någon sagt att man ska göra det eller inte. I avsnitten 4.5 och 4.6 behöver två enkla funktioner skrivas. Gör ett försök att skriva dessa funktioner innan du kommer till labben. En stationär sinussignal med frekvens 4 khz samplas och rekonstrueras sedan idealt. Vilken frekvens får resultatet om samplingsfrekvensen är a. 10kHz, b. 5kHz och c. 3kHz? 4 Labuppgifter 4.1 Inledande övning - skapa och presentera signaler Denna första övning avser dels att ge lite Matlab-vana, dels att introducera några kommandon som är användbara i denna lab, och slutligen att definiera några signaler som du ska använda dig av. Denna övning resulterar i ett flertal grafer. Se till att du kan redovisa dem alla för assistenten då detta avsnitt är avklarat. Det kan vara en bra ide att skriva detta som ett skript, så att du med ett enda kommando kan generera alla dessa grafer. Det är då också lätt att ändra något som visar sig vara felaktigt. Följande Matlab-kommandon används i detta avsnitt: sin, plot, stem, figure, title, xlabel, ylabel, hold on/off, histogram, subplot Det kan vara en bra ide att läsa på om dem i Matlabs hjälp som du når med F1 allt eftersom du använder dem. Matlab har en interaktiv pront som ser ut så här: >> Denanvänds häridettalab-pmförattindikera någotsomkaneller börskrivasinimatlab. 2

Kommentarer i Matlab inleds med ett %, och det använder vi även här för att kommentera angiven Matlab-kod. Exempelvis betydelsen av ett semikolon (;): >> b=3+4 % skapar variabeln b med värdet 7 och skriver ut det. >> a=1+2; % skapar variabeln a med värdet 3, men skriver inte ut det. Vi behöver några signaler att använda som utgångspunkt i denna laboration. Alla dessa signaler ska ha följande parametrar: Amplitud 1 tidsutbredning 2.5 sekunder Samplingsfrekvens 40 khz Skapa nu två sådana signaler enligt följande: Signalen x1 ska ha frekvensen 8000 Hz. Signalen x2 ska ha frekvensen 8017 Hz. Den första av dessa kan du skapa så här: >> T=2.5; % Tidsutbredning >> fs=4e4; % Samplingsfrekvens >> N=T*fs; % Antal sampel >> n=0:n-1; % Vektor med sampelindex >> t=1/fs*n; % Vektor med sampeltidpunkter >> f1=8000; % signalens frekvens >> x1=sin(2*pi*f1*t); % Vektor med alla sampel Låt gärna variabelnamnen ovan fortsatt ha de värden som de ges här. Det förutsätts här och där i lab-pm. Plotta fem perioder av dessa signaler, dels med kommandot plot och dels med kommandot stem. Notera skillnaden mellan dessa två sätt att använda plot: >> plot(x1) >> plot(t,x1) I detta sammanhang kan du ha nytta av kommandot figure som gör en existerande graf aktiv, vilket betyder att nästa kommando som manipulerar en graf opererar på den grafen. Om en graf inte existerar med angivet nummer, så skapar figure ett fönster för det. Upptill i varje figurfönster finns en rad med verktyg. Du kan ha nytta av zoom-verktygen för att titta på någon liten del av en graf. Det går också att göra sifferavläsningar i grafen med markör-verktyget. Se figur 1. Figur 1: Verktygsraden i ett figurfönster med markör-verktyget valt. Genom att först välja det verktyget och sedan klicka på själva kurvan, så placerar du 3

markören där. Därefter kan du förflytta markören i grafen dels genom att ta tag i den med musen och dels genom att använda piltangenterna. Horisontella axeln ska vara graderad med naturlig tid i sekunder. Använd gärna kommandot title för att ge en rubrik till varje graf. Kommandona xlabel och ylabel kan användas för att ange vad som finns på de två axlarna i en graf. Kombinera kommandona plot, hold on, stem och hold off för att skapa en graf av fem perioder av signalerna både som en kontinuerlig signal och som en samplad signal. Det går också att skapa en kontinuerlig graf med markeringar för själva samplen på följande sätt: >> plot(t,x2, b-,t,x2, rx ) Försäkra dig om att du har klart för dig vad varje detalj i uttrycket ovan gör. Matlabs hjälptext för kommandot plot kan vara användbar här. Använd histogram för att skapa ett histogram av de två signalerna med 100 bingar. Hur många sampel består signalerna av?... Hur många perioder (av de tänkta analoga signalerna) består signalerna av? x1:... x2:... Hur många sampel består en period (av de tänkta analoga signalerna) av? x1:... x2:... Går perioden för vardera signal ens jämnt ut på ett antal sampel? x1:... x2:... Vad visar histogrammen? Varför är de så olika? Signatur: Tips: Kommandot subplot kan användas för att placera flera grafer bredvid varandra i samma fönster. 4

4.2 Spektrum - linjär skala och db Följande nya Matlab-kommandon används i detta avsnitt: fft, abs, db, axis Använd kommandot fft för att fouriertranformera de två signalerna. Detta kommando beräknar DFTn av sitt argument med en snabb implementering som brukar kallas FFT (Fast Fourier Transform). Transformlängden är längden hos argumentet. DFTn är generellt komplex, precis som alla andra fouriertransformer. Plotta absolutbeloppet av dessa DFTer (kommandot abs) i linjär skala. Du kan här ha nytta av följande: >> f=fs/n*n; % Vektor med naturliga frekvensvärden Det underlättar ofta om liknande grafer har samma skala. Det kan du åstadkomma med kommandot axis efter att du har skapat en graf. Förklara vad du ser i dessa plottar. Varför är det två toppar? Hur stor del av dessa spektra är relevant att visa? 5

Ofta brukar man presentera spektra i db. Det är ett logaritmiskt mått som gör det möjligt att jämföra värden som skiljer sig åt med flera tiopotenser i en och samma skala. Ettamplitudspektrum X(f)uttrycks idbsom20log 10 ( X(f) ).Matlabharettkommando db som gör den avbildningen. Plotta detta för de två signalerna x1 och x2. Förklara vad du ser i dessa plottar. Det är en tydlig skillnad mellan de två signalernas spektra. Vad kan det bero på? Signatur: Fortsättningsvis ska alla spektra i denna laboration plottas i db-skala på detta vis. 4.3 Fönsterfunktioner Följande nya Matlab-kommandon används i detta avsnitt: floor, ceil, rectwin, hamming, nuttallwin En multiplikation med en fönsterfunktion innebär att en del av signalen är kvar, medan resten av signalen sätts till noll. Detta gör man i praktiken vanligen för att begränsa komplexiteten hos en beräkning. Vi ska här se vad det har för effeker i frekvensled. Följande definierar ett rektangulärfönster av längd M som är paddat med nollor på båda sidor så att det totalt blir lika många sampel som i de två signalerna x1 och x2, dvs N, given att M är definierat och inte är större än N. >> w=[zeros(1,floor((n-m)/2)),rectwin(m),zeros(1,ceil((n-m)/2))]; Kommandot rectwin returnerar ett rektangulärfönster av längd M, som en kolumnvektor. Våra signaler är radvektorer, varför vi vill ha vårt fönster som en radvektor. Den fnutt ( ) som finns i raden ovan transponerar fönstret, så att det blir en radvektor. Plotta amplitudspektrum för detta fönster i db-skala för några val av M. Prova också detta för fönsterfunktionerna hamming och nuttallwin istället för rectwin. 6

Fönstret rectwin har värdet 1 i alla sina sampel. Detta finns massor med olika andra fönsterfunktioner som har olika värden i sina sampel. Detta påverkar hur huvudloben och sidoloberna ser ut. När man använder fönster så multiplicerar man en signal med dem, dvs. fönstret skalar signalens sampel. Vi intresserar oss nu för hovudlobens och sidolobernas förhållande till M. Besvara därför Ê följande för de olika fönstren: Hur bred är huvudloben för följande värden på M? rectwin: 50:... 100:... 200:... hamming: 50:... 100:... 200:... nuttallwin: 50:... 100:... 200:... Hur breda är sidolobernas bredd för följande värden på M? Strunta här i de sidolober som är närmast huvudloben. rectwin: 50:... 100:... 200:... hamming: 50:... 100:... 200:... nuttallwin: 50:... 100:... 200:... Skillnaden mellan huvudlobens och högsta sidolobens höjder (i db), hur stor är den för följande värden på M? Tips: Detta ses enklast om du normerar varje spektrum (i db) genom att subtrahera dess max-värde från hela spektrat. rectwin: 50:... 100:... 200:... hamming: 50:... 100:... 200:... nuttallwin: 50:... 100:... 200:... Sammanfattningsvis, vad är skillnaden mellan de olika fönstrena? Signatur: 7

4.4 Fönstring Följande nya Matlab-kommando används i detta avsnitt: cos Nästa steg är att använda fönstren på en signal, och då ska det vara följande signal. >> x=sin(2*pi*3999*(1+5e-7*cos(2*pi*100*t)).*t)+sin(2*pi*4099*t)... +1e-3*sin(2*pi*4400*t); Här används konstanten pi som förstås är ett närmevärde för π. De tre punkterna talar om för Matlab att uttrycket fortsätter på nästa rad. Man fönstrar signalen x med fönstret w genom att multiplicera dem komponentvis. Tecknet * betyder i Matlab multiplikation av skalärer, multiplikation av en skalär med en vektor/matris eller matrismultiplikation, beroende på operandernas storlekar. Här ska inte något av det användas. En punkt (.) före operatorn talar om för Matlab att den ska operera komponentvis. Alltså ger följande avsett resultat. >> y=x.*w; Kravet för att detta ska fungera är att x och w är lika stora, alltså lika många rader och lika många kolumner. Resultatet y är då lika stor som x och w. Fönstra nu signalen x med fönsterlängd 500, 1000 och 2000. Gör detta med de tre fönster som vi tittat på ovan. Och slutligen plotta amplitudspektrum för dessa nio fall i db-skala. Plotta också som en jämförelse amplitudspektrum för x i db-skala. Hur bra är de olika fallen på att återge ursprungssignalens spektrum? Varför blir det på det viset? Tips: Multiplikation i tidsled motsvarar faltning i frekvensled. 8

Är det någon detalj ur ursprungssignalens spektrum som inte syns i något av de fönstrade fallen? Är det någon detalj som framkommer i något av de fönstrade fallen som inte ens syns i ursprungssignalens spektrum? Tips: Även ursprungssignalen kan ses som fönstrad. Ê Slutligen, i en praktisk tillämpning skulle vi bara använda just de fönstrade samplen och inte alla de som är noll. Och så bestämma FFTn i det fallet. Gör nu det för de nio fallen. Försämrar detta situationen? Signatur: 9

4.5 Sampling För att studera sampling ska du här omsampla en signal. Skriv en funktion som tar två argument, en vektor som för oss är en signal och en nedsamplingsfaktor, och som returnerar signalen nedsamplad med denna faktor. Alltså, om nedsamplingsfaktorn är m, så ska den nedsamplade signalen bestå av vart m-te sampel ur originalsignalen. Funktionen behöver inte ha någon specialhantering av orimliga val av argument. Använd nu er funktion för att plotta amplitudspektrum i db för signalen x1 nedsamplad med nedsamplingsfaktor 2, 3, 4, 5, 6, 7 och 8. Se till så att frekvensskalan blir rätt i alla dessa fall. Vilket samband gäller mellan den ursprungliga samplingsfrekvensen och den efter nedsamplingen? Vilken frekvens har den nedsamplade signalen i de olika fallen? Titta på signalens frekvensspektrum. Se till att frekvensskalan är rätt. Hur kommer det sig? Signatur: 10

4.6 Kvantisering Följande Matlab-kommandon kan vara användbara i detta avsnitt: round, floor, ceil Slutligen ska du studera kvantisering. Skriv en funktion som tar två argument, en vektor som för oss är en signal och ett heltal som anger antal bitar, och som returnerar signalen kvantiserad. Kvantiseringen ska vara symmetrisk och likformig mellan 1 och 1. Det innebär att de två yttersta kvantiseringsnivåerna är ±(1 d/2), där d är kvantiseringssteget. Funktionen behöver inte ha någon specialhantering av orimliga val av argument. Använd nu er funktion för att plotta amplitudspektrum i db för signalen x2 kvantiserad med 2, 4, 6, och 8 bitar. Bestäm också kvantiseringsfelet, alltså skillnaden mellan den kvantiserade signalen och ursprungssignalen. Plotta amplitudspektrum för kvantiseringsfelet och bestäm histogrammet för kvantiseringsfelet. Precis som tidigare ska amplitudspektrat plottas i db-skala. Hur beror den kvantiserade signalens amplitudspektrum på antalet bitar? Man brukar modellera kvantiseringsfelet som likformigt fördelat. Ser det ut att vara en bra modell? Man brukar också modellera kvantiseringsfelet som vitt, vilket motsvarar att dess amplitudspektrum är konstant. Ser det ut att vara en bra modell? Signatur: 11