    clc; clear; %limpa as variaveis de ambiente
%% PARTE 1: Gera um sinal analógico (entrada_analogica) e sua versão discretizada (entrada_discretizada)
    Fs = 20000;             % taxa de amostragem: 20mil amostras/seg
    t = 0:(1/Fs):0.05;      % amostragem de 0,02seg
    f1=100;      f2=2000;     f3=3000;     f4=4000;
    entrada_analogica = sin(2*pi*f1*t) + sin(2*pi*f2*t) + sin(2*pi*f3*t) + sin(2*pi*f4*t);
    N = max(t)/(1/Fs);
    n = 0:N;    % quantidade de amostras da entrada para filtrar
    entrada_discretizada = sin(2*pi*f1.*n/Fs) + sin(2*pi*f2.*n/Fs) + sin(2*pi*f3.*n/Fs) + sin(2*pi*f4.*n/Fs);
    subplot(4,1,1); stem(t,entrada_discretizada); hold on; plot(t,entrada_analogica,'r'); title('Entrada analogica e digital');

%% PARTE 2: implementação do sistema que convolui entrada com h
    h = [0.0024    0.0095    0.0206    0.0345    0.0500    0.0655    0.0794    0.0905    0.0976    0.1000    0.0976    0.0905    0.0794    0.0655    0.0500    0.0345    0.0206    0.0095    0.0024];
    n_h = 0:length(h)-1;
    saida_sistema = conv(entrada_discretizada, h);
    subplot(4,1,2); stem(n_h,h); xlabel('n'); title('Coef. do sistema');
    subplot(4,1,3); 
    figure; plot(entrada_analogica,'r'); hold on; plot(saida_sistema,'k'); title('Saida do sistema'); legend('Ent','Saí');
    
%% PARTE 3: calcula o espectro da (i) entrada, (ii) do sistema e (iii) da saida
    %calcula espectro da entrada
    fft_sinal_entrada = fft(entrada_discretizada)/N;
    f_entrada = n.*(Fs/N);
    %calcula espectro saida
    N3 = size(saida_sistema,2);
    fft_sinal_saida =   fft(saida_sistema)/N3;
    n3 = 0:size(fft_sinal_saida,2)-1;
    f_saida = n3.*(Fs/N3);
    %calcula espectro filtro
    h = [h 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];
    fft_resp_filtro = fft(h);
    n4 = 0:size(fft_resp_filtro,2)-1;
    N4 = size(n4,2);
    f_h = n4.*(Fs/N4);

% %% Plota
%     subplot(4,1,4); 
%     plot(f_entrada(1:N/2), abs(fft_sinal_entrada(1:N/2))); hold on; 
%     plot(f_saida(1:N3/2), abs(fft_sinal_saida(1:N3/2)),'r');
%     plot(f_h(1:N4/2), abs(fft_resp_filtro(1:N4/2)),'g');
%     legend('ent','saí','resp. impul'); xlabel('Freq (Hz)'); title('Espectros')