I9G2S1 Węgrecki Wojciech Lab3

background image

SPRAWOZDANIE Z ĆWICZENIA

LABORATORYJNEGO NR 3

Wykonał: Wojciech Węgrecki

Grupa: I9G2S1

background image

Treść zadania:

3.1
Wykonaj operację na widmie sygnału dźwiękowego polegającą na
usunięciu (wyzerowaniu) z niego harmonicznych odpowiadających
przedziałowi częstotliwości <fc,fs-fc> (filtr dolnoprzepustowy). Następnie
wykonaj transformatę odwrotną, odsłuchaj dźwięk, porównaj z
oryginałem również wyświetlając przebieg czasowy oryginału i sygnału
przetworzonego.
3.2
Powyższe czynności wykonaj usuwając z widma elementy <0,fc>v<fs-
fc,fs> (filtr górnoprzepustowy). Porównaj wyniki obydwu operacji.
3.3
Korzystając z DFT zwiększ częstotliwość próbkowania sygnału. W tym
celu dokonaj odsunięcia drugiej połowy widma tak, aby ostatni prążek
znalazł się na pozycji nowej częstotliwości próbkowania. Powstałą lukę
wypełnij zerami. Wykonaj transformatę odwrotną. Zweryfikuj otrzymane
wyniki (np. poprzez wyświetlenie sygnałów sprzed i po operacji różnymi
kolorami symboli na jednym wykresie.
3.4
Korzystając z DFT zmniejsz częstotliwość próbkowania sygnału
postępując analogicznie jak wyżej.


Wykonanie zadania:

Aby przejść do wykonywania zasadniczej treści zadania w MATLABie należało
najpierw wczytać dźwięk, później wykonać dyskretną transformatę Fouriera
(DFT) a następnie zdefiniować wartości, które podczas rysowania wykresów
będą służyły jako oś x – czas i częstotliwość oraz przyjąć wartość f

c

(w moim

przypadku 5000 Hz). Dodatkowo wyznaczyłem długość dźwięku za pomocą
funkcji length. Wszystkie te operacje zostały wykonane za pomocą
następującego kodu:

[dzwiek,fs,nbit]=wavread(

'dzwiek.wav'

);

%wczytanie dźwięku

dzwiek=dzwiek(:,1);

widmo=fft(dzwiek);

%transformata fouriera dzwieku

L=length(dzwiek);

%dlugosc dzwieku

f=0:fs/L:(L-1)*fs/L;

%częstotliwość dźwięku (wykorzystywana do

skalowania osi x)

czas=0:1/fs:(L-1)/fs;

%obliczenie czasu trwania sygnalu

(wykorzystywany do skalowania osi x)

fc=5000;

% ustalona wartosc po ktorej zerujemy

background image

3.1

W tym zadaniu należało stworzyć filtr dolnoprzepustowy, tzn. wyzerować
harmoniczne odpowiadające przedziałowi <f

c

,f

s

-f

c

>. Następnie należało

wykonać transformatę odwrotną, odsłuchać dźwięk i porównać z
oryginałem wyświetlając przebieg czasowy oryginału i sygnału
przetworzonego. Dodatkowo wyświetliłem widmo sygnału przed i po
przefiltrowaniu (rys. 1).

Wszystko to osiągnąłem za pomocą kodu:


%filtr dolnoprzepustowy

widmo_dolno=widmo;

% zmienna pomocnicza

for

i=fc:1:(length(widmo_dolno)-fc)

widmo_dolno(i)=0;

% wyzerowanie wartosci

end

;

potrans=ifft(widmo_dolno);

%wykonanie transformaty odwrotnej

wavplay(real(potrans),fs);

%odtworzenie dźwięku

figure(2)

%rysowanie czterech wykresów

subplot(4,1,1) ;
plot(czas,dzwiek);
grid

on

title(

'Oryginalny sygnał'

);

subplot(4,1,2);
plot(czas,potrans)
title(

'Sygnał po przefiltrowaniu'

)

grid

on

subplot(4,1,3)
stem(f, abs(widmo))
grid

on

title(

'Widmo oryginał'

);

subplot(4,1,4);
stem(f,abs(widmo_dolno))
title(

'Filtr Dolnoprzepustowy'

);

grid

on

wavwrite(real(potrans),

'filtr_dolny'

);

% zapisanie pliku po

transformacie i filtrze dolnoprzepustowym

background image

rys.1 Porównanie oryginalnego sygnału, sygnału po przepuszczeniu przez
filtr dolnoprzepustowy, widma oryginalnego sygnału i widma po filtracji

3.2

W tym zadaniu należało stworzyć filtr górnoprzepustowy, tzn. wyzerować
harmoniczne odpowiadające przedziałowi <0,f

c

>

∪<f

s

-f

c

,f

s

> Następnie

należało wykonać transformatę odwrotną, odsłuchać dźwięk i porównać z
oryginałem wyświetlając przebieg czasowy oryginału i sygnału
przetworzonego. Dodatkowo wyświetliłem widmo sygnału przed i po
przefiltrowaniu (rys. 2).

Wszystko to osiągnąłem za pomocą kodu:

% filtr górnoprzepustowy

widmo_gorno=widmo;

%zmienna pomocnicza

for

i=1:1:fc

% wyzerowanie wartosci od 0 do fc

widmo_gorno(i)=0;

end

;

for

i=length(widmo_gorno)-fc:1:length(widmo_gorno)

% zerowanie

wartosci od fs - fc do fs

widmo_gorno(i)=0;

end

;


potrans2=ifft(widmo_gorno);

%transformata odwrotna

wavplay(real(potrans2),fs);

%odtworzenie dźwięku

background image


figure(1)

%wyswietlenie czterech wykresow

subplot(4,1,1) ;

plot(czas,dzwiek);

%oryginalny sygnał

title(

'oryginalny sygnal'

);

grid

on

subplot(4,1,2)

plot(czas,potrans2);

% sygnał po przefiltrowaniu

grid

on

title(

'Sygnał po przefiltrowaniu'

)

subplot(4,1,3) ;

stem(f,abs(widmo));

% widmo oryginal

grid

on

title(

'Widmo oryginał'

);

subplot(4,1,4);

stem(f,abs(widmo_gorno))

title(

'Filtr Górnoprzepustowy'

);

%widmo po przefiltrowaniu

grid

on

wavwrite(real(potrans2),

'filtr_gorny'

);

%zapisanie pliku po

transformacie odwrotnej i filtrze górnoprzepustowym

rys.2 Porównanie oryginalnego sygnału, sygnału po przepuszczeniu przez
filtr górnoprzepustowy, widma oryginalnego sygnału i widma po filtracji

Porównując dźwięki po obu filtracjach to dźwięk po filtracji górnoprzepustowej
jest cichszy i mniej wyraźny. Można zrozumieć treść obu nagrań, ale jakość tego
nie jest najlepsza. Dodatkowo sprawiają wrażenie jakby były w zwolnionym
tempie. Głos w nagraniu po filtracji dolnoprzepustowej jest niższy i głośniejszy.

background image

3.3

Zadanie polegało na tym, aby korzystając z DFT zwiększyć
częstotliwość próbkowania sygnału. W tym celu należało dokonać
odsunięcia drugiej połowy widma tak, aby ostatni prążek znalazł się na
pozycji nowej częstotliwości próbkowania. Powstałą lukę wypełniłem
zerami. Następnie wykonałem transformatę odwrotną i
zweryfikowałem otrzymane wyniki poprzez wyświetlenie sygnałów
sprzed i po operacji różnymi kolorami na jednym wykresie(rys. 3).

Kod tego zadania:

widmo=fft(s);

%widmo oryginalnego sygnalu

widmo_zw=widmo;

%widmo pomocnicze do wyciecia

L=length(widmo);

% dlugosci widma oryginalnego

czas_u=L/fs;

% czas utowru

czas=0:1/fs:(L-1)/fs;

%##################################################

% zwiększanie czestotliwosci

for

i=1:1:floor(0.5*L)

% przepisanie nowego widma do polowy

widmo_zw(i)=widmo(i);

end

;

for

i=floor(0.5*L):1:floor(L)

% od polowy wypelnienei zerami

widmo_zw(i)=0;

end

;

j=floor(L);

for

i=floor(0.5*L):1:L

% przepisanie reszty widma

widmo_zw(j)=widmo(i);

j=j+1;

end

;

L2=length(widmo_zw);

% dlugosc utworu po zwiekszeniu

czestotliwosci

f2=floor(L2/czas_u);

%obliczenie czestotliwosci utworu po

zwiekszeniu

krok1=0:fs/L:(L-1)*fs/L;

% krok rysowania pierwszego widma

krok2=0:f2/L2:(L2-1)*f2/L2;

% krok rysowania drugiego widma

czas2=0:1/f2:(L2-1)/f2;

% krok rysowania drugiego sygnału

czas_utworu2=L2*(1/f2);

% czas utworu po zmianie

częstotliwości

figure(2)

% narysowanie oryginalnego sygnalu z nalozonym na

nie sygnalem po zmianie czestotliwosci

plot(czas,s);

grid

on

;

background image

hold

on

;

plot(czas2,ifft(widmo_zw),

'r'

);

title(

'sygnał oryginalny(kolor niebieski), sygnał po

zwiekszeniu(kolor czerwony)'

);


rys. 3 Sygnał przed i po operacji zwiększenia częstotliwości próbkowania.
Sygnał oryginalny jest narysowany kolorem niebieskim, a po zmianie
kolorem czerwonym

3.4

Zadanie polegało na tym, aby korzystając z DFT zmniejszyć
częstotliwość próbkowania sygnału. W tym celu usunąłem co drugi
prążek widma. Następnie wykonałem transformatę odwrotną i
zweryfikowałem otrzymane wyniki poprzez wyświetlenie sygnałów
sprzed i po operacji różnymi kolorami na jednym wykresie (rys. 4).
Dodatkowo porównałem trzy widma sygnałów – widmo oryginalne,
widmo po zwiększeniu częstotliwości (zadanie 3.3) oraz widmo po
zmniejszeniu częstotliwości (rys.5).

background image

Kod skryptu realizujący w/w zadanie:

%##################################################

% zmniejszanie czestotliwosci

widmo_zm=0;

j=1;

for

i=(1:2:L)

%przepisanie co drugiej wartości

widmo_zm(j)=widmo(i);

j=j+1;

end

;

L3=length(widmo_zm);

% dlugosc utworu po zmniejszeniu

czestotliwosci

f3=floor(L3/czas_u);

%obliczenie czestotliwosci utworu po

zmniejszeniu

krok3=0:f3/L3:(L3-1)*f3/L3;

% krok rysowania trzeciego widma

czas3=0:1/f3:(L3-1)/f3;

% krok rysowania trzeciego sygnału

figure(1)

subplot(3,1,1)

stem(krok1,abs(widmo));

% rysowanie widma oryginalnego

grid

on

title(

'widmo oryginalne'

);

subplot(3,1,2)

stem(krok2,abs(widmo_zw));

% rysowanie widma po zwiększeniu

grid

on

title(

'widmo po zwiekszeniu czestotliwosci'

);

subplot(3,1,3)

stem(krok3,abs(widmo_zm));

% rysowanie widma po zmniejszeniu

grid

on

title(

'widmo po zmniejszeniu czestotliwosci'

);


figure(3)

% narysowanie oryginalnego sygnalu z nalozonym na

nie sygnalem po zmianie czestotliwosci

plot(czas,s);

grid

on

;

hold

on

;

plot(czas3,ifft(widmo_zm),

'r'

);

title(

'sygnał oryginalny(kolor niebieski), sygnał po

zmniejszeniu(kolor czerwony)'

);

background image

rys. 4 Sygnał przed i po operacji zmniejszenia częstotliwości
próbkowania. Sygnał oryginalny jest narysowany kolorem
niebieskim, a po zmianie kolorem czerwonym



background image

rys. 5 Porównanie trzech widm sygnałów – widma oryginalnego, widma
po zwiększeniu częstotliwości i widma po zmniejszeniu częstotliwości


background image

WNIOSKI

Do wykonania operacji usuwania harmonicznych, jako przedziału
częstotliwości fc użyłem wartości 5000Hz. Po zamianie nowopowstałego
widma na sygnał dźwiękowy okazało się, że w nowym nagraniu nie
występują wysokie tony dźwięków co sprawia wrażenie obniżenia głosu i
jego spowolnienia. Jednak mimo to dźwięk jesteśmy w stanie rozpoznać.
Zniekształcenie zależy od częstotliwości fc. Im ona jest niższa tym
dźwięk jest bardziej zniekształcony.

Usuniecie z widma zakresu niskich częstotliwości poskutkowało
wyzerowaniu skrajnych części widma, co w odsłuchiwanym dźwięku
przełożyło się na znaczne obniżenie jakości nagrania oraz na wyciszenie
dźwięku. W tym wypadku także jesteśmy w stanie rozróżnić
wypowiadane słowa, jednak im wyższa wartość fc tym staje się to coraz
trudniejsze.

Porównując efekt działania obu filtrów, zdecydowanie można powiedzieć,
że oba w znacznym stopniu modyfikują sygnał dźwiękowy. Oba filtry
mają zupełnie przeciwne działanie i sprawdzanie ich działania na jednej
wartości fc staje się niemożliwe. Gdy zmniejszamy wartość fc pogarsza
się dźwięk po filtracji dolnoprzepustowej, jednak po filtracji
górnoprzepustowej jest on w dosyć dobrej jakości, a gdy zwiększamy fc
efekt jest przeciwny.

Wykonując kolejne zadanie, polegające na zwiększeniu częstotliwości
próbkowania zauważyłem, że jakoś danego dźwięku poprawiła się.
Dźwięk się wyostrzył i zmniejszyła się ilość zniekształceń i szumów.
Efekt ten osiągnęliśmy dzięki zwiększonej ilości próbek.

Zmniejszając częstotliwość próbkowania osiągnęliśmy całkowicie
przeciwny efekt do poprzedniego. Dźwięk jest w bardzo słabej jakości,
niezrozumiałej dla ucha. Dzieje się tak, ponieważ usunęliśmy dużą ilość
próbek.

Operując na widmie amplitudowym możemy w łatwy sposób poprawiać
lub pogarszać jakość przetwarzanego dźwięku.


Wyszukiwarka

Podobne podstrony:
I9G2S1 Wegrecki Wojciech lab3
I9G2S1 Węgrecki Wojciech sprawozdanie, WAT, SEMESTR V, systemy dialogowe, SDial, SD cwiczenia 5
I9G2S1 Węgrecki Wojciech sprawozdanie lab5
I9G2S1 Węgrecki Wojciech Lab4
I9G2S1 Wegrecki sprawozdanie, WAT, SEMESTR V, podstawy symulacji
I9G2S1 Joanna Rutkowska lab3
I9G2S1 Joanna Rutkowska lab3
I9G2S1 Skrzypczynski Węgrecki lab2
I9G2S1 Skrzypczynski Wegrecki l Nieznany
I9G2S1 Skrzypczynski Węgrecki lab2
I9G2S1 Skrzypczynski Węgrecki lab1, WAT, SEMESTR V, podstawy bezpieczenstwa informacji
4 ŚMIERĆ ŚWIĘTEGO WOJCIECHA
lab3
lab3 kalorymetria
Instrukcja Lab3
lab3 6

więcej podobnych podstron