Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %------PROJEKT ZALICZENIOWY-----%
- % 1.Wygenerowac Sygnal.
- % 2.Poddac go kwantowaniu, postarac sie wykorzystac jak najmniej bitow przetwornika przy jak najmniejszym szumie.
- % 3.Powyzszy sygnal przepuscic przez filtr.
- % 4.Stworzyc wykresy przed filtracja/kwantowaniem i po...
- clear all;
- close all;
- clf;
- pkg load signal;
- %Sygnal wejsciowy
- [s,fp]=auload('bird7.wav'); % s-wektor / fp- wartosc czestotliwosci probkowania
- t= 1:length(s);
- amp=10.0;
- s(1:length(s))=amp*s(1:length(s));
- Nf=2^12;
- Nf2=Nf/2+1;
- sig_fft=fft(s,Nf); %Transforamta Fouriera
- mod=abs(sig_fft);
- faza=angle(sig_fft);
- f=linspace(0, fp/2, Nf2);
- %kwantowanie
- b=4; %ilosc bitow
- a = 2^b - 1;
- sq = round(s(1:rows(s))*a)/a;
- szum = s(1:rows(s)) - sq;
- sqq=round(s*a)/a;
- ausave(['bird7kwantowany.wav'], sqq, fp);
- %Stosunek sygalu do szumu (SNR)
- SNR=20*log10(std(s(1:length(sqq)))/std(szum));
- %Subploty sygnalu
- subplot(221);
- plot(t,sq,'-b',t,szum,'-r');
- title(sprintf("Ilosc bitow: %d / SNR: %d" ,b,SNR));
- xlabel('Czas [s]');
- ylabel('Amplituda [A]');
- hold on;
- subplot(222);
- plot(f,mod(1:Nf2));
- title('Modul sygnalu');
- xlabel('Czestotliwosc [Hz]');
- ylabel('Modul');
- hold on;
- subplot(223);
- plot(f,faza(1:Nf2));
- title('Faza sygnalu');
- xlabel('Czestotliwosc [Hz]');
- ylabel('Kat');
- hold on;
- %------------------------------------------------------------------------------%
- %Filtr GORNOPRZEPUSTOWY
- M = 128; %ilosc wspolczynnikow filtra
- f1 = .123;
- f2 = .452;
- h = fir1(M-1,[f1 f2],'high');
- th = 0:1/fp:(M-1)/fp;
- #transmitancja
- h_fft = fft(h,Nf);
- h_mod = abs(h_fft);
- h_faza = angle(h_fft);
- %------------------------------------------------------------------------------%
- #filtracja i stosunek sygnalu do szumu(SNR) po filtracji
- s_f = filter(h,1,sqq);
- h_SNR = 20*log10(std(s_f(1:length(s_f)))/std(szum)); #SNR po filtrze
- s_fmod = abs(fft(s_f,Nf));
- s_ffaza = angle(fft(s_f,Nf));
- ausave(['bird7filtrowany.wav'], s_f, fp);
- %Subploty sygnalu po filtracji
- subplot(224);
- plot(t,s,'-b',s_f,'-g');
- title(sprintf("Sygnaly przefiltrowany/SNR po filtracji: %d", h_SNR));
- subplot(225);
- plot(f,s_fmod(1:Nf2));
- title('Modul sygnalu po filtracji');
- subplot(226);
- plot(f,s_ffaza(1:Nf2));
- title('Faza sygnalu po filtracji');
- %figure
- %freqz(h);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement