%Kewin Ga³uszka czwTP 13.15
%zadanie 11

clear all;
close all;


%% zadanie 1 - wczytanie sygna³u i decymacja

[xw, fpw] = audioread('mbi04dziur.wav');

xv = decimate(xw, 3);
fpv = fpw/3;

tv = 0 : 1/fpv : (length(xv)-1)/fpv;

figure(1);
subplot(4,2,1);
plot (tv, xv);

xlabel('czas[s]');
ylabel('amplituda');
title('sygnal audio po decymacji');

%% zadanie 2 - widmo amplitudowe sygnalu
fpvN=2^nextpow2(length(xv));
fpvN21 = fpvN/2;

tr_v = fft(xv, fpvN);
atr_v = abs(tr_v);

tr_t = linspace(0, fpv, fpvN);

subplot(4,2,2);
plot(tr_t(1:fpvN21),atr_v(1:fpvN21));
xlabel('czestotliwosc[Hz]')
ylabel('amplituda')
title('widmo amplitudowe sygnalu po decymacji')


%% zadanie 3 - filtr dolnoprzepustowy
M=201;
fgr = 800;
fgrN=fgr/(fpv/2);

h=fir1(M-1, fgrN, 'low');

fphN = 2^ nextpow2(M);
fphN21 = fphN/2 +1;

tr_h = fft(h, fphN);
atr_h = abs(tr_h);

tr_ht = linspace(0,fpv, fphN);

subplot(4,2,3);
plot(tr_ht(1:fphN21),atr_h(1:fphN21));
xlabel('czestotliwosc');
ylabel('transmitancja');
title('wykres modulu funkcji transmitancji')


%% zadanie 4 - filtracja sygna³u i jego widmo po filtracji

f_v = filter(h,1,xv);

trf_v = fft(f_v, fpvN);
atrf_v = abs(trf_v);

% os czestotliwosci jak w zadaniu 2

subplot (4,2,4);
plot(tr_t(1:fpvN21), atrf_v(1:fpvN21));
xlabel('czestotliwosc');
ylabel('amplituda');
title ('widmo amplitudowe sygnalu po filtracji');

%% zadanie 5 - generowanie sygna³u

fp = 150;

t_1 = 0 : 1/fp : 2-(1/fp);
t_2 = 2 : 1/fp : 4-(1/fp);
t_3 = 4 : 1/fp : 8-(1/fp);
t_4 = 8 : 1/fp : 10;

s_1 = sin(2*t_1*2*pi + 0);
s_2 = sin(6*t_2*2*pi +pi/4); % 45 stopni = pi/4
s_3 = 1/3*randn(1, length(t_3)); % 1/3 wynika z w³asno¶ci rozk³±du normalnego i krzywej Gaussa
s_4 = sin(2*t_4*2*pi + pi); % 180 stopni = pi

t = [t_1, t_2, t_3, t_4];
s = [s_1, s_2, s_3, s_4];

subplot(4,1,3)
plot (t,s);
xlabel('czas[s]');
ylabel('amplituda');
title('wykres sygnalu');

%% zadanie 6 - sygnal prostok±tny i jego autokorelacja
fp2 = 200;
t_tau_max =2
tau_max = fp2 *t_tau_max;
t2 = 0 :1/fp2 : 5;
pro= 1 + square(11*t2, 33);

%figure(2);
%subplot(4,2,7);
%plot (t2,pro);
kor = xcorr (pro, pro, tau_max);
tkor = -tau_max/fp2 : 1/fp2 : tau_max/fp2;
subplot(4,2,7);
plot (tkor, kor);
xlabel('przesuniecie[s]');
title('autokorelacja');


%% zadanie 7 - korelacja

%aby przeprowadziæ korelacjê, czestotliwosc probkowania musi byc
%identyczna.

% w zwiazku z powyzszym, dokonam zmniejszenia czestotliwosci probkowania
% sygna³u drugiego do 150Hz, tak jak jest probkowany sygnal z p. 5

t2_fzm = 0: 1/fp : 5
pro_fzm = 1 + square(11*t2_fzm,33)

t_tau_max2 = 3;
tau_max2 = fp * t_tau_max2;

kor2 = xcorr (s, pro_fzm, tau_max2);
tkor2 = -tau_max2/fp : 1/fp : tau_max2/fp;

subplot (4,2,8);
plot (tkor2, kor2);
xlabel('przesuniecie');
title('korelacja dwoch sygnalow');
