%% Filtro Casado

clear all; close all

%% Par�metros

% Amplitide do pulso
A = 2;
% Vari�ncia do ru�do branco
var = 10;
% Taxa de transmiss�o
Rb = 1;
% Tempo do bit
Tb = 1/Rb;

%% Gera��o do sinal de entrada do filtro

passo=1/1000;
% Eixo do tempo(Gera��o do Pulso)
tm =0:passo:Tb;  
s_manchester= [-ones(1, length(tm)/2) ones(1, length(tm)/2)]; 
s_NRZ = [ones(1, length(tm))];
s_RZ = [ones(1, length(tm)/2) zeros(1, length(tm)/2) ];
% Coment�rio: s = [ zeros(1,length(tm)/2) "s_RZ" ou "sNRZ", ou "s_manchester" zeros(1,length(tm)/2)];
s = [ zeros(1,length(tm)/2) s_RZ zeros(1,length(tm)/2)];


% Eixo do tempo

t=(length(s)-1).*passo;
tc=0:passo:t;
tc = tc-Tb/2;

% Ru�do branco gaussiano
w_t = sqrt(var)*randn(size(s));

% Sinal de entrada do filtro
x_t = s + w_t;

% Mostrando a energia do sinal
% display(['A energia do pulso � E = ' num2str((A)^2*Tb)])  % manchester e NRZ
display(['A energia do pulso � E = ' num2str(A^2*Tb/2)]) % RZ

% Plotando o pulso de entrada
figure = 0.5
subplot(3,1,1); plot(tc,s)
axis([-0.5*Tb 2.5*Tb -2 2 ])
title('Pulso retangular usado na transmisss�o')
xlabel('t'); ylabel('Sinal codificado Manchester')
subplot(3,1,2); plot(tc,w_t)
axis([-0.5*Tb 2.5*Tb -2 2  ])
title('Ru�do branco gaussiano aditivo')
xlabel('t'); ylabel('w(t)')
subplot(3,1,3); plot(tc,x_t)
title('Sinal de entrada no filtro')
xlabel('t'); ylabel('x(t) = codexm(t) + w(t)')
axis([-0.5*Tb 2.5*Tb -2 2 ])
%% Filtro casado

% Resposta ao impulso do filtro
h_t = fliplr(s);

% Plotando a resposta do filtro casado
figure
subplot(2,1,1); plot(tc,s)
title('Pulso retangular usado na transmiss�o')
xlabel('t'); ylabel('codexm(t)')
axis([-0.5*Tb 2.5*Tb -1 2]);
subplot(2,1,2); plot(tc,h_t)
title('Resposta ao impulso do filtro casado')
xlabel('t'); ylabel('h(t) = s(T-t)')
axis([-0.5*Tb 2.5*Tb -1 2]);
%% Sinal de sa�da do filtro casado

% Sinal de sa�da do filtro casado referente ao pulso retangular
go_t = conv(s,h_t)*passo;
% Pico da sa�da do filtro casado

display(['Pico da sa�da do filtro casado: P = ' num2str(max(go_t))])

% Sinal de sa�da do filtro casado referente ao ru�do
n_t = conv(w_t,h_t)*passo;

% Sinal de sa�da do filtro casado
y_t = go_t + n_t;

% Eixo do tempo do sinal de sa�da do filtro
t2=2*(length(s)-1).*passo;
tc2=0:passo:t2;
tc2 =tc2-1;

% Plotando o sinal de sa�da
figure
subplot(3,1,1); plot(tc2,go_t)
title('Sinal de sa�da do filtro casado referente ao pulso retangular')
xlabel('t'); ylabel('g_{0}(t)')
subplot(3,1,2); plot(tc2,n_t)
title('Sinal de sa�da do filtro casado referente ao ru�do')
xlabel('t'); ylabel('n(t)')
subplot(3,1,3); plot(tc2,y_t)
title('Sinal de sa�da do filtro casado')
xlabel('t'); ylabel('y(t) = g_{0}(t) + n(t)')
