% Skript pre spustenie filtracie a odhadu SNR na realnych signaloch: 1. az 3. meranie
% Spustenim skriptu prebehne filtracia wienerovskym vlnkovym fltrom, zaroven aj vlnkovym filtrom a odhad SNR s vyuzitim funkcie
% WienerovskyFilterSOdhadomSNR na vsetkych 5 zariadeniach z 3 merani,
% tato funkcia v sebe zahrnuje wienerovsky aj vlnkovy filter (podrobny popis funkcii je popisany priamo v subore funkcie .m)
% pre vykreslenie je potrebne nastavit premennu vykreslenie na hodnotu 1
% Autor: Martina Babicova
vykreslenie = 0;

% 1.meranie
[signalPoFiltraciiVlnkaC1,signalPoFiltraciiWienerC1, vyvojSNRVlnkaC1, vyvojSNRWienerC1, hodnotySNRC1] = WienerovskyFilterSOdhadomSNR(C1, 5, 5, 500, 4);
[signalPoFiltraciiVlnkaF1,signalPoFiltraciiWienerF1, vyvojSNRVlnkaF1, vyvojSNRWienerF1, hodnotySNRF1] = WienerovskyFilterSOdhadomSNR(F1, 6, 6, 1000, 5);
[signalPoFiltraciiVlnkaB1,signalPoFiltraciiWienerB1, vyvojSNRVlnkaB1, vyvojSNRWienerB1, hodnotySNRB1] = WienerovskyFilterSOdhadomSNR(B1, 8, 8, 3000, 6);

%2.meranie
[signalPoFiltraciiVlnkaC2,signalPoFiltraciiWienerC2, vyvojSNRVlnkaC2, vyvojSNRWienerC2, hodnotySNRC2] = WienerovskyFilterSOdhadomSNR(C2, 5, 5, 500, 4);
[signalPoFiltraciiVlnkaF2,signalPoFiltraciiWienerF2, vyvojSNRVlnkaF2, vyvojSNRWienerF2, hodnotySNRF2] = WienerovskyFilterSOdhadomSNR(F2, 6, 6, 1000, 5);
[signalPoFiltraciiVlnkaB2,signalPoFiltraciiWienerB2, vyvojSNRVlnkaB2, vyvojSNRWienerB2, hodnotySNRB2] = WienerovskyFilterSOdhadomSNR(B2, 8, 8, 3000, 6);

%3.meranie
[signalPoFiltraciiVlnkaH,signalPoFiltraciiWienerH, vyvojSNRVlnkaH, vyvojSNRWienerH, hodnotySNRH] = WienerovskyFilterSOdhadomSNR(H, 5, 5, 500, 4);
[signalPoFiltraciiVlnkaF3,signalPoFiltraciiWienerF3, vyvojSNRVlnkaF3, vyvojSNRWienerF3, hodnotySNRF3] = WienerovskyFilterSOdhadomSNR(F3, 5, 5, 500, 4);

if vykreslenie ==1
    % Filtracia s vyuzitim EMD - pre ucely vykreslenia porovnania vstupu a vystupu Wienerovskeho vlnkoveho filtru
    [EMDC1] = EMDFiltracia(C1);
    [EMDF1] = EMDFiltracia(F1);
    [EMDB1] = EMDFiltracia(B1);
    [EMDC2] = EMDFiltracia(C2);
    [EMDF2] = EMDFiltracia(F2);
    [EMDB2] = EMDFiltracia(B2);
    [EMDH] = EMDFiltracia(H);
    [EMDF3] = EMDFiltracia(F3);
    % Vykreslenie pre porovnanie signalu po filtracii s vyuzitim EMD a filtracii Wienerovskym vlnkovym filtrom
    figure();
    plot((1:length(C1))/500,EMDC1*1000); hold on; plot((1:length(C1))/500, signalPoFiltraciiWienerC1*1000);
    xlabel('t[s]', 'FontSize', 16);
    ylabel('U[\muV]','FontSize', 16);
    title('Zariadenie CorScience', 'FontSize', 16)
    legend({'Signál po filtrácii s využitím EMD', 'Signál po filtrácii Wienerovským filtrom'}, 'FontSize', 14); set(gca, 'FontSize', 12);

    figure();
    plot((1:length(F1))/1000,EMDF1); hold on; plot((1:length(F1))/1000, signalPoFiltraciiWienerF1);
    xlabel('t[s]', 'FontSize', 16);
    ylabel('U[\muV]','FontSize', 16);
    title('Zariadenie Faros 360°', 'FontSize', 16)
    legend({'Signál po filtrácii s využitím EMD', 'Signál po filtrácii Wienerovským filtrom'}, 'FontSize', 14); set(gca, 'FontSize', 12);

    figure();
    plot((1:length(B1))/3000,EMDB1*10000); hold on; plot((1:length(B1))/3000, signalPoFiltraciiWienerB1*10000);
    xlabel('t[s]', 'FontSize', 16);
    ylabel('U[\muV]','FontSize', 16);
    title('Zariadenie BiosignalPlux', 'FontSize', 16)
    legend({'Signál po filtrácii s využitím EMD', 'Signál po filtrácii Wienerovským filtrom'}, 'FontSize', 14); set(gca, 'FontSize', 12);
end

% Vypocet statistickych parametrov pre hodnoty SNR pomocou funkcie StatistickeVypocty

[minimumC1, maximumC1, priemerC1, medianC1, SodchylkaC1] = StatistickeVypocty(hodnotySNRC1);
[minimumF1, maximumF1, priemerF1, medianF1, SodchylkaF1] = StatistickeVypocty(hodnotySNRF1);
[minimumB1, maximumB1, priemerB1, medianB1, SodchylkaB1] = StatistickeVypocty(hodnotySNRB1);


[minimumC2, maximumC2, priemerC2, medianC2, SodchylkaC2] = StatistickeVypocty(hodnotySNRC2);
[minimumF2, maximumF2, priemerF2, medianF2, SodchylkaF2] = StatistickeVypocty(hodnotySNRF2);
[minimumB2, maximumB2, priemerB2, medianB2, SodchylkaB2] = StatistickeVypocty(hodnotySNRB2);


[minimumH, maximumH, priemerH, medianH, SodchylkaH] = StatistickeVypocty(hodnotySNRH);
[minimumF3, maximumF3, priemerF3, medianF3, SodchylkaF3] = StatistickeVypocty(hodnotySNRF3);

