Digital Signalbehandling i Audio/Video

Relevanta dokument
Psykoakustik. Ljudtrycksnivå. Hörselns omfång. Hörnivå(loudness) Människans hörsel är ganska väl studerad och det finns bra modeller för den.

4/27/12. Fönstring i MDCT. Föreläsning 10: Ljudkodning ( Audio Coding ) 1. Inledning PCM, standardmetoder, MDCT, psykoakustik, ljudtryck

Föreläsning 10: Ljudkodning ( Audio Coding )

Spektrala Transformer

Flerdimensionella signaler och system

TSKS21 Signaler, Information och Bilder Lab 2: Digitalisering

Spektrala Transformer

Psykoakustik. Ljudtrycksnivå. Hörselns omfång. Hörnivå (loudness) Människans hörsel är ganska väl studerad och det finns bra modeller för den.

Människans hörsel är ganska väl studerad och det finns bra modeller för den.

Grundläggande ljud- och musikteori

Analys/syntes-kodning

Ämnesområde Hörselvetenskap A Kurs Signalteori, 7,5 hp Kurskod: HÖ1007 Tentamenstillfälle

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

Signaler och system, IT3

Elektronik. Viktor Öwall, Digital ASIC Group, Dept. of Electroscience, Lund University, Sweden-

Digital Signalbehandling i Audio/Video

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

Elektronik Dataomvandlare

Kapitel 2 o 3. Att skicka signaler på en länk. (Maria Kihl)

Optimal Signalbehandling Datorövning 1 och 2

TSBB16 Datorövning A Samplade signaler Faltning

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

Signalbehandling Röstigenkänning

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

Kapitel 2 o 3 Information och bitar Att skicka signaler på en länk. Jens A Andersson

Elektronik. Dataomvandlare

Signalanalys med snabb Fouriertransform

Mer om funktioner och grafik i Matlab

Mätningar med avancerade metoder

Tentamen i Signaler och kommunikation, ETT080

Laboration i Fourieranalys, TMA132 Signalanalys med snabb Fouriertransform

Digital signalbehandling Digitalt Ljud

2 Laborationsutrustning

Projekt 1 (P1) Problembeskrivning och uppdragsspecifikation

Laboration i tidsdiskreta system

Grundläggande signalbehandling

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

Elektro och Informationsteknik LTH Laboration 4 Tidsplan, frekvensplan och impedanser

AD-/DA-omvandlare. Digitala signaler, Sampling och Sample-Hold

DT1130 Spektrala transformer Tentamen

Grundläggande signalbehandling

Datorövning 1 Fördelningar

Geometriska transformationer

Elektronik Dataomvandlare

TNM011 Grafisk teknik Laboration 3 - Färg

Grafritning och Matriser

Tillämpning av komplext kommunikationssystem i MATLAB

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

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

Laboration 1: Aktiva Filter ( tid: ca 4 tim)

Elektronik Elektronik 2019

Instruktion för laboration 1

Laboration 3 Sampling, samplingsteoremet och frekvensanalys

Lab 1 Analog modulation

MR-laboration: design av pulssekvenser

Funktioner och grafritning i Matlab

Minsta-kvadratmetoden

Fouriermetoder MVE295 - bonusuppgifter

Flerdimensionell signalbehandling SMS022

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

Elektronik Elektronik 2017

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

Bildbehandling, del 1

Tentamen ssy080 Transformer, Signaler och System, D3

Laboration: Grunderna i MATLAB

Exercises Matlab/simulink V

Örat. Johnson, Kap 3. Basic audition

Analoga och Digitala Signaler. Analogt och Digitalt. Analogt. Digitalt. Analogt få komponenter låg effektförbrukning

Syftet med den här laborationen är att du skall bli mer förtrogen med följande viktiga områden inom matematisk statistik

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

Bilaga A, Akustiska begrepp

Lab 4: Digital transmission Redigerad av Niclas Wadströmer. Mål. Uppstart. Genomförande. TSEI67 Telekommunikation

Föreläsning: Digitalt Ljud. signalbehandling. Elektronik - digital signalbehandling. Signal och spektrum. PC-ljud. Ton från telefonen.

Läsinstruktioner. Materiel

Laboration 2 - Modulering I denna laboration skall vi

Laboration 3: Stora talens lag, centrala gränsvärdessatsen och enkla punktskattningar

Parametriserade kurvor

Homework Three. Farid Bonawiede Samer Haddad Michael Litton Alexandre Messo. 28 november Time series analysis

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

TNM059 Grafisk teknik Laboration 4 - Färg

Ulrik Söderström 20 Jan Signaler & Signalanalys

Ulrik Söderström 19 Jan Signalanalys

Programmeringsuppgift Game of Life

Vad är spektralanalys? Spektralanalys. Frekvensinnehåll. Enkelt exempel

DT1130 Spektrala transformer Tentamen

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

Laboration i Fourieroptik

Konvertering. (Conversion chapter 3, Watkinson) Sebastian Olsson Anders Stenberg Mattias Stridsman Antonios Vakaloudis Henrik Wrangel

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

Audio & Videoteknik 2D2021, 2D1518

Språkljudens akustik. Akustik, akustiska elementa och talanalys

Funktionsteori Datorlaboration 2

Projekt Spektralanalys med hjälp av den diskreta Fouriertransformen. Marcus Björk Doktorand i Signalbehandling, Systemteknik (IT)

Digital kommunikation. Maria Kihl

DT1120 Spektrala transformer för Media Tentamen

Ljudlära. Ljud är Periodicitet. Introduktion. Ljudlära viktigt ur två aspekter:

Tables, calculator, the textbook by Mitra. Solutions manual or lecture notes are not allowed.

Laboration 4: Stora talens lag, Centrala gränsvärdessatsen och enkla punktskattningar

Projekt Spektralanalys med hjälp av den diskreta Fouriertransformen

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Tid: 21:a April klockan

Transkript:

Digital Signalbehandling i Audio/Video Institutionen för Elektrovetenskap Laboration 1 (del 1) Martin Stridh Lund 2005

2

Kapitel 1 Musikkompression Denna laboration handlar om kompression av ljud och musik enligt den internationella MPEG-1/audio standarden. Till skillnad från kompression av tal och många andra typer av kompression där signalen som ska kompimeras först modelleras, så beror MPEG-1/audio standarden ej av typen av ljud som ska komprimeras. Den utnyttjar istället begränsningar i ljuduppfattningsförmågan hos människor och kan därför komprimera vilka ljud som helst. Idn är att spendera få bitar på det som inte hörs och många bitar på det som hörs tydligast istället för lika många bitar överallt som blir fallet om man inte vägar in örats egenskaper. Beroende på önskad kompressionsgrad används tre olika s.k. kompressionslager för att åstadkomma lämpliga bithastigheter: Lager I: >128 kbits/s/kanal minst komplex Lager II: ca 128 kbits/s mellan komplex Lager III: ca 64 kbits/s mest komplex, bäst kvalitet De olika kompressionslagren bygger på samma huvudstrategier med den skillnaden att högre nummer använder mer anvancerad varianter av dessa strategier och åstadkommer därmed högre kompressionsgrad till samma kvalitet. Kostnaden är beräkningskomplexiteten. Den mest avancerade och mest välkända av de ovan nämnda kompressionsstrategierna för ljud/musik är MPEG-1 Lager III som är mera känd som under namnet mp3. I den här laborationen ska vi titta närmare på och förstå hur den enklaste varianten MPEG-1 Lager I fungerar. I mycket stor utsträckning ingår de moment som beskrivs även i Lager III (mp3). 1.1 Förberedelse Läs noggrannt igenom Avsnitt 1.2. 1.2 Musikkompression En kodare för någon av MPEG-1/audio-standarderna består huvudsakligen av fyra delar (se Fig 1.1): filterbank, psykoakustiskt model, bitallokering och filformatering. För varje nytt block om 384 sampel (med 352 sampels överlappning dvs 32 nya) delar filterbanken upp detta block i 12 sampel för vart och ett av 32 subband (dvs fortfarande totalt 384 sampel). Syftet med denna uppdelning är att kunna spendera olika antal bitar vid kvantiseringen av de olika subbanden. Det subband som hörs bäst tilldelas flest bitar och får därmed minst kvantiseringsfel och det subband som hörs minst tilldelas minst antal bitar och får störst kvantiseringsfel. Tanken är alltså att kvantiseringsfelen läggs där det ändå inte hörs. För 3

4 KAPITEL 1. MUSIKKOMPRESSION Digital audiosignal T.ex. 44.1 khz Filterbank 384 tidssampel mappas till 12 tidssampel vardera för 32subband.. Bitallokering Accepterar stora kvantiseringsfel för subband där det inte hörs enl. SMR. Filformatering Digital bitström 32-224 kbit/s Psykoakustisk analys 1) Beräkna spektrum FFT 512 punkter. 2) Beräkna ljudtryck varje subbandsintervall. 3) Hitta alla lokala maximum i spektrum. 4) Vilka av dessa toppar är toner? 5) Resten är brus. Sammanfatta detta till en brustopp per kritiskt band. 6) Vilka av alla ton- och brustoppar hörs ej - ta bort. 7) Vilka av tontopparna är för täta för att höras - ta bort. 8) Beräkna frekvensmaskeringen som orsakas av varje ton- resp brustopp. 9) Summera all maskering för alla toppar till nivån som motsvarar tyst. Detta ger den globala maskeringen som säger vilken nivå av varje frekvens som inte hörs. 10) Beräkna Signal-to-Mask ratio (SMR) som talar om hur mycket signalen i varje subband kan kvantiseras utan att det hörs dvs så att kvantiseringsfelen ligger under nivån som hörs. Figur 1.1: De fyra huvudsakliga delarna i en kodare för någon av MPEG-1/audiostandarderna. att avgöra vad som hörs och inte hörs behövs den andra delen av kodaren: den psykoakustisk modellen. Den psykoakustiska modellen tar hänsyn till huvudsakligen två faktorer: att örats egenskaper t.ex. hörseltröskeln varierar för olika frekvenser vilket gör det naturligt att dela upp frekvens området i logaritmiskt växande intervall som kallas kritiska band, och frekvensmaskering som innebär att en frekvenstopp skymmer lägre toppar i sin närmaste omgivning. Maskeringen illustreras i Fig. 1.2 och innebär att frekvenser som ligger inom en maskering av andra frekvenser med högre amplitud inte hörs. Den psykoakustiska model- Figur 1.2: Illustration av frekvensmaskering. ler bygger sina resultat på en 512 punkters FFT av det givna 384 sampel långa blocket. Först identifieras alla lokala maxima i spektrum. Därefter avgörs vilka av dessa som är klara toppar dvs är påtagligt större än hela sin närmaste omgivning. De som är det klassas som tontoppar. Övriga toppar ingår därmed i bruset och medelvärdesbildas ihop till en brustopp per kritiskt band där det inte finns någon tontopp. När väl alla ton- och brustoppar är

1.2. MUSIKKOMPRESSION 5 identifierade sorteras de toppar bort som inte hörs antingen för att amplituden ligger under hörseltröskeln eller för att topparna ligger för tätt. För tontoppar gäller att toppar på mindre avstånd än ett halvt kritiskt band (vars storlek varierar över frekvensaxeln) inte kan separeras av örat och därmed tas den ena bort. När bara de toppar som är viktiga för det som hörs är kvar beräknas maskeringsfunktionen för var och en av dessa toppar. Summeras alla dessa enskilda maskeringsfunktioner till en global maskeringsfunktion fås en kurva som säger hur höga amplituder av varje frekvens som inte hörs. Beräknas sedan kvoten mellan signalstyrkan i varje subband och den minsta maskeringsnivån i varje subband fås Signalto-Mask Ratio (SMR). Om sedan för varje subband kvantiseringen (dvs antal bitar) väljs så att signal-till-kvantiseringsbrus-förhållandet matchar SMR så hörs inte kvantiseringen dvs man kvantiserar hårt för subband där det är hög maskerings nivå och vice versa utan att nämnvärt påverka hörupplevelsen. 1.2.1 Tillgängliga funktioner Funktioner för att beräkna signalstyrka i varje subband function scf=berakna_skalfaktor(s,table_scf); Mappar maxenergin i varje subband (kolonner i S) till en tabell Table scf. Det värde i tabellen som är närmast större än maxenergin för varje subband sparas i scf. function Lsb=Berakna_ljudtryck(X,scf); Beräknar ljudtrycket/signalstyrkan Lsb i varje subband baserat på spektrum X och skalfaktorerna i scf. Funktioner för att beräkna maskeringsnivån i varje subband Funktioner för att hitta ton- och bruskomponenter function local_max_list=hitta_lokala_max(x); Letar upp alla punkter i spektrum X som är större än båda sina närmaste grannar. local max list(:, 1) innehåller positioner till dessa toppar och local max list(:, 2) innehåller deras amplituder. function [Flags, Tonal_list] = Hitta_tonande_komp(X, Flags, local_max_list); Letar upp de av topparna i local max list som är riktiga tontoppar dvs klart avviker från de omgivande punkterna i spektrum. Precis som tidigare innehåller första kolonnen i Tonal list index till topparna och andra kolonnen deras värden. Vektorn Flags är lika lång som spektrat upp till halva samplingsfrekvensen och innehåller för varje punkt information om det finns någon topp på detta index, 1 - tonande, 2 - icke-tonande, 3 - betydelselös eller 0 - ej undersökt. function [Flags, Non_tonal_list] = Hitta_icke_tonande_komp(X, Flags, TH, Map, CB) Alla resterande toppar i spektrum X sammanfattas med denna funktion till en topp i mitten på varje kritiskt band. Map och CB skickas med för att mappa mellan gränserna för de kritiska banden och frekvenspunkterna i spektrum. TH innehåller hörseltrösklar för de olika frekvenserna och kritiska banden. Funktioner för decimering av ton- och brustoppar function [DTonal_list, DFlags]= Ta_bort_tonande_under_TH(Tonal_list,DFlags, TH, Map); Tar bort tonande toppar under hörseltröskeln som är given i TH. En ny ton lista DTonal list skapas och en ny flagguppsättning DFlags byggs upp.

6 KAPITEL 1. MUSIKKOMPRESSION function [DNon_tonal_list, DFlags]= Ta_bort_icke_tonande_under_TH(Non_tonal_list,Flags, TH, Map); Tar bort brustoppar under hörseltröskeln som är given i TH. En ny ton lista DNon tonal list skapas och en ny flagguppsättning DFlags byggs upp. function [DTonal_list, DFlags]= Ta_bort_for_tata_tonande(DTonal_list,DFlags, TH, Map); Toner som ligger närmare än ett halvt kritiskt band hörs ej och därmed för täta toppar plockas bort. DTonal list modifieras. Hörseltröskeln TH och mappningen Map mellan frekvenspunkter och kritiska band behövs här. Funktioner för att beräkna den globala maskeringsnivån function LTt=Berakna_tonande_masker(X, DTonal_list, TH, Map); Beräknar maskningsfunktion för varje tonande topp som funktion av de frekvenser som finns angivna i hörseltröskeln. Varje rad i LTt är maskeringsfunktionen kring en topp. function LTn=Berakna_icke_tonande_masker(X, DNon_tonal_list, TH, Map); Beräknar maskningsfunktion för varje brustopp som funktion av de frekvenser som finns angivna i hörseltröskeln. Varje rad i LTn är maskeringsfunktionen kring en brustopp. function LTg=Berakna_global_mask(LTq,LTt,LTn); Den totala maskeringsnivån angivet för alla frekvenser i hörseltröskeln TH är summan av tysthetsnivån LTq och maskeringen som orsakas av ton- och brustopparna, LTt och LTn. function LTmin=Berakna_min_mask_per_subband(LTg,Map); LTg är angivet för alla frekvenser som hörseltröskeln är angiven för. Minsta maskeringsnivån för varje subband ges av denna funktionen. Datafiler Filen mp1tabeller innehåller följande tabeller och matriser % TH som innehåller frekvenser, kritiska band och absoluta trösklar % LTq som innehåller trösklar vid tystnad % Map som innehåller mappningen mellan frekvenser och motsvarande % index i TH och LTq % C som innehåller fönsterfunktionen som används innan filterbanken % CB som innehåller index till gränserna mellan de kristiska banden % Table_scf som innehåller skalningsfaktortabellen % M som innehåller filterbanken med 32 st 64-tappars filter

1.3. LABORATIONSUPPGIFTER 7 1.3 Laborationsuppgifter Uppgift 1: Skapa en testsignal bestående av 4 täta toner på 1500, 1700, 1800, 2000 Hz och fyra glesare toner på 10000, 11000, 12000, 13000 Hz enligt nedan. Summera dem och lägg på normalfördelat, vitt brus med variansen 1. Normera sedan signalen så att signalens maxamplitud blir 1. Se också till att signalvektorn blir en kolonn. Skriv in nedanstående program (i en m-fil) för att göra detta. f = [1500 1700 1800 2000 10000 11000 12000 13000]; a = [ 1 2 1.5 2 1.5 3 1]; t = 0:1/44100:1; x = randn(size(t)); for i = 1:length(f), x = x + a(i) * sin(2 * pi * f(i) * t); end x = x / max(abs(x)); x=x(:); Lyssna på signalen med kommandot sound sound(x,44100); Uppgift 2: in denna fil. load mp1tabeller I filen mp1tabeller finns standardens tabeller och filterbanksmatrisen. Läs Uppgift 3: Vi bestämmer oss för att analysera den tredje 384 framen. Startsampel för den tredje framen blir 2*384+1. Skriv in. framestart = 2*384+1; De 384 nya samplen (2*384+1 till 3*384) tas in i 12 omgångar med 32 åt gången. Analysfönstrets längd är 512 så detta innebär att mer än hela förra framen till en början också viktas in. Följande program läser in 32 nya sampel plus 480 gamla (totalt 512) 12 gånger multiplicerar med den i standarden angivna fönsterfunktionen C, nersamplar en faktor 8 och filtrerar med filterbankens 32 st 64 sampel långa filter. Resultatet blir 1 utsignal för varje av de 12 tidpunkterna och varje av de 32 subbanden. 12x32 matrisen S innehåller denna data. Skriv in nedanstående i samma m-fil som tidigare. S=[]; for i=0:11 X = x(framestart-480+(i-1)*32:framestart+32*i-1); Z = X.* C; Y = Z(1:64)+Z(65:128)+Z(129:192)+Z(193:256)+Z(257:320)......+Z(321:384)+Z(385:448)+Z(449:512); S = [S;(M*Y) ]; end; Filterbanken genererar alltså 12 sampel för vart och ett av de 32 subbanden dvs fortfarande 384 sampel Uppgift 4: För varje subband och frame bestäms en skalfaktor som säger hur stor signalenergi det finns i varje band. Välj värdet närmast över maxvärdet i varje subband (kolonn) i S enligt tabellen Table scf. Syftet med detta är att veta maxvärdet vid kvantiseringen. Beräkna skalfaktorerna. Vilka subband har störst värden? scf=berakna_skalfaktor(s,table_scf);

8 KAPITEL 1. MUSIKKOMPRESSION Uppgift 5: Nästa steg är att göra psykoakustisk analys. Beräkna därför 512 punkters FFT-spektrum för den 384 långa framen genom att använda 64 sampel på varje sida om den 384 sampel långa framen. Psychoacoustisk analys ska sedan göras på detta spektrum. FFT-analysen kan göras enligt nedan. Lägg märke till att db-skala används och att inga värden får vara svagare än -200 db och maxvärdet i spektrum måste enligt standarden ligga på 96 db. Plotta spektrum X. Beskriv vad du ser. s = x(framestart-64:framestart + 512-64 - 1); h = sqrt(8/3) * hanning(512); X = abs(fft(s.* h))/ 512; X = max(20 * log10(x), -200); % Ingen nivå under -200 db Delta = 96 - max(x); X = X + Delta; % Maxnivån vid 96 db Uppgift 6: Beräkna den genomsnittliga ljudtrycksnivån i varje subband. Funktionen Berakna ljudtryck gör detta utifrån spektrum X och skalfaktorerna. Uppgift 7: Leta upp alla lokala maxima dvs alla punkter som är större än båda sina närmaste grannar och som inte ligger i kanten (Använd Hitta lokala max. Plotta sedan resultatet. Nedan ges exempel på hur. plot(1:length(x), X, local_max_list(:, 1), local_max_list(:, 2), ko ); xlabel( Frequency index ); ylabel( db ); title( Local maxima. ); axis([0 256 0 100]); Uppgift 8: Varje frekvenssampel upp till halva samplingsfrekvensen skall nu markeras med en flagga om den är 1 - tonande, 2 - icke-tonande, 3 - betydelselös eller 0 - ej undersökt. Skapa flagvektorn Flags. Flags = zeros(256, 1); Uppgift 9: Undersök nu vilka av alla de lokala maxima som hittades som är toner med hjälp av funktionen Hitta tonande komp. Plotta sedan resultatet. Nedan ges exempel på hur. plot(1:length(x), X, Tonal_list(:, 1), Tonal_list(:, 2), ro ); xlabel( Frequency index ); ylabel( db ); title( Tonal components ); axis([0 256 0 100]); Uppgift 10: Beräkna sedan brustopparna för de olika kritiska banden baserat på de återstående topparna (Använd Hitta icke tonande komp). Plotta sedan resultatet. Nedan ges exempel på hur. plot(1:length(x), X, Tonal_list(:, 1), Tonal_list(:, 2), ro,......non_tonal_list(:, 1), Non_tonal_list(:, 2), go ); xlabel( Frequency index ); ylabel( db ); title( Tonal and non-tonal components ); axis([0 256 0 100]);

1.3. LABORATIONSUPPGIFTER 9 Uppgift 11: Ta nu bort brustoppar som ligger under hörseltröskeln (Använd Ta bort icke tonande under TH). Plotta sedan resultatet tillsammans med hörseltröskeln. Nedan ges exempel på hur. plot(1:length(x), X, Non_tonal_list(:, 1), Non_tonal_list(:, 2), go,......dnon_tonal_list(:, 1), DNon_tonal_list(:, 2), yo, TH(:, 1), TH(:, 3)); xlabel( Frequency index ); ylabel( db ); title( Non-tonal components v. absolute threshold. ); axis([0 256-20 100]); Uppgift 12: Ta nu bort tontoppar som ligger under hörseltröskeln (Använd Ta bort tonande under TH). Plotta sedan resultatet tillsammans med hörseltröskeln. Nedan ges exempel på hur. plot(1:length(x), X, Tonal_list(:, 1), Tonal_list(:, 2), ro,......dtonal_list(:, 1),DTonal_list(:, 2), mo, TH(:, 1), TH(:,3)); axis([0 256 0 100]); xlabel( Frequency index ); ylabel( db ); title( Tonal components v. absolute threshold. ); axis([0 256-20 100]); Uppgift 13: Ta slutligen bort för täta tontoppar (Använd Ta bort for tata tonande). Plotta sedan resultatet tillsammans med hörseltröskeln. Nedan ges exempel på hur. plot(1:length(x), X, DTonal_list(:, 1), DTonal_list(:, 2), ro,......dnon_tonal_list(:, 1), DNon_tonal_list(:, 2), go, TH(:, 1), TH(:, 3)); axis([0 256 0 100]); xlabel( Frequency index ); ylabel( db ); title( Tonal components too closed to each other eliminated. ); axis([0 256-20 100]); Hur många ton- respektive brustoppar återstår? Uppgift 14: Beräkna maskeringsfunktionerna för tontopparna (Använd Berakna tonande masker). Plotta sedan resultatet. Nedan ges exempel på hur du kan rita maskerna i samma plot. hold on; for j = 1:length(DTonal_list(:, 1)) plot(th(:, 1), LTt(j, :), r: ); end Uppgift 15: Beräkna maskeringsfunktionerna för brustopparna (Använd Berakna icke tonande masker). Plotta sedan resultatet i samma figur. Nedan ges exempel på hur. for j = 1:length(DNon_tonal_list(:, 1)) plot(th(:, 1), LTn(j, :), g: ); end hold off; pause;

10 KAPITEL 1. MUSIKKOMPRESSION Uppgift 16: Beräkna den globala maskeringsfunktionen (Använd Berakna global mask). hold on; plot(th(:, 1), LTg, k-- ); hold off; title( Masking components and masking thresholds. ); Uppgift 17: Beräkna den lägsta maskeringsnivån i varje subband (Använd Berakna min mask per subband). Plotta sedan resultatet. Nedan ges exempel på hur. plot(ltmin); title( Minimum masking threshold ); xlabel( Subband number ); ylabel( db ); Uppgift 18: Beräkna nu SMR (differensen mellan signalljudnivån och maskeringsnivån). Plotta sedan resultatet. Nedan ges exempel på hur. plot(smr);title( Signal-to-Mask Ratio ); xlabel( Subband number ); ylabel( db ); Uppgift 19: Om du bara hade ett begränsat antal bitar att tillgå, på vilket subband skulle du då spendera flest bitar?