clear;clc
format long g

%% VYPNUTY NAKLON, SVISLE - 4001 (1. DEN)
% mereni (Y X Z)
mereni_4001 = [744902.260 1040952.688 219.616
               744902.261 1040952.698 219.620
               744902.266 1040952.684 219.610
               744902.250 1040952.699 219.621
               744902.247 1040952.685 219.617
               744902.260 1040952.685 219.615
               744902.261 1040952.678 219.624
               744902.264 1040952.673 219.623
               744902.258 1040952.685 219.620
               744902.266 1040952.681 219.615];

% presnost mereni (m)
s_d = 0.025;

% konstanty
c = 2;
u_p = 2;
vaha = 1;

% aritmeticky prumer
pocet = length(mereni_4001);
prumer_Y_4001 = sum(mereni_4001(:,1)) / pocet;

while abs(prumer_Y_4001 - vaha) > 0.00001;
    for i = 1:pocet
       z_Y_4001(i) = mereni_4001(i,1) * vaha;
    end
    
    vazeny_prumer_Y_4001 = sum(z_Y_4001) / (pocet * vaha);
    opravy_Y_4001 = abs(vazeny_prumer_Y_4001 - mereni_4001(:,1));
    opravy_norm_Y_4001 = opravy_Y_4001 / s_d;
    
    for i = 1:pocet;
        if opravy_norm_Y_4001(i) <= c
            vaha(i) = 1;
        else vaha(i) = c / opravy_norm_Y_4001(i);
        end
    end
    
    vaha = vaha';
    p = prumer_Y_4001;
    prumer_Y_4001 = vaha;
    vaha = p;
end

% maximalni oprava
max_Y_4001 = u_p * s_d;

for i = 1:pocet
      if opravy_Y_4001(i) >= max_Y_4001
          kontrola(i,2) = 0;
          kontrola(i,1) = i;
      else kontrola(i,2) = 1;
          kontrola(i,1) = i;
      end
end

vaha;
mereni_2 = mereni_4001(:,1);

mereni_spravne_Y_4001 = mereni_4001(:,1);

pocet_2_Y_4001 = length(mereni_spravne_Y_4001);

vaha_2 = vaha;
    
for i = 1:pocet_2_Y_4001
        z_2_Y_4001(i) = mereni_spravne_Y_4001(i) * vaha_2(i);
end

z_2_Y_4001 = z_2_Y_4001';
vazeny_prumer_2_Y_4001 = sum(z_2_Y_4001) / sum(vaha_2);

for i = 1:pocet_2_Y_4001
    opravy_2_Y_4001(i,1) = vazeny_prumer_2_Y_4001 - mereni_spravne_Y_4001(i);
end

ctverce_oprav_Y_4001 = opravy_2_Y_4001.^2;
suma_ctvercu_Y_4001 = sum(ctverce_oprav_Y_4001);

smer_odch_Y_4001 = sqrt((suma_ctvercu_Y_4001) / (pocet_2_Y_4001 - 1));

vyloucene_hodnoty_Y_4001 = pocet - pocet_2_Y_4001;

cislo = [1:10];
cislo = cislo';
disp('èíslo bodu, souøadnice Y, váha, oprava od prùmìru')
tabulka = [cislo mereni_4001(:,1) vaha opravy_Y_4001]

disp('VÝSLEDKY:')
disp('vážený prùmìr, smìrodatná odchylka, poèet vylouèených hodnot')
tabulka = [vazeny_prumer_2_Y_4001 smer_odch_Y_4001 vyloucene_hodnoty_Y_4001]
