clear
clear memory
N=3;%количество кластеров ;
nn=1;%номер исследуемого кластера
mn=[34 31 31];%количество РЭС каждого кластера сети
%Kors=[5 5 0.5; 10 6 0.5; 4 14 5]; % Координаты кластеров
Kors=[1 9 5;7 2 0.5; 15 14 10]; % Координаты кластеров
Gab=[5 5 4;5 5 4;5 5 4]; % Габариты кластеров
Koordel(1:N,1:max(mn),1:3)=0; 
i3=[2 2 2];%закон распределения РЭС в пространстве: 1-нормальный; 2-равномерный; 
svob=20-1-1; %число степеней свободы
lam=0.1;%уровень значимости
p=[3; 10; 4];% координаты вновь введенного РЭС
Korr=korran1(mn,N,Gab,i3);
   for k1=1:N
        for k2=1:mn(k1)
            for k3=1:3
                Koordel(k1,k2,k3)=Korr(k1,k2,k3)+Kors(k1,k3);
            end
        end
    end
    razm(N,Koordel,mn); % размещение РЭС
    %Координаты РЭС по оси х для nn-го кластера
    x1=Koordel(nn,1:mn(nn),1);
    %Координаты РЭС по оси у для nn-го кластера
    y1=Koordel(nn,1:mn(nn),2);
    %Координаты РЭС по оси z для nn-го кластера
    z1=Koordel(nn,1:mn(nn),3);
%Проверка на нормальный закон распределения
% Таблица
tabl=[1 0.95 0.9 0.8 0.7 0.5 0.3 0.2 0.1 0.05;
   1 0.004 0.016 0.064 0.148 0.455 1.074 1.642 2.71 3.84;
   2 0.103 0.211 0.446 0.713 1.386 2.41 3.22 4.6 5.99;
   3 0.352 0.584 1.005 1.424 2.37 3.66 4.64 6.25 7.82;
   4 0.711 1.064 1.649 2.2 3.36 4.88 5.99 7.78 9.49;
   5 1.145 1.610 2.34 3 4.35 6.06 7.29 9.24 11.07;
   6 1.635 2.2 3.07 3.83 5.35 7.23 8.56 10.64 12.59;
   7 2.17 2.83 3.82 4.64 6.35 8.38 9.8 12.02 14.07;
   8 2.73 3.49 4.59 5.53 7.34 9.52 11.03 13.36 15.51;
   9 3.32 4.17 5.38 6.39 8.34 10.66 12.24 14.68 16.92;
   10 3.94 4.86 6.18 7.27 9.34 11.78 13.44 15.99 18.31;
   11 4.58 5.58 6.99 8.15 10.34 12.9 14.63 17.28 19.68;
   12 5.23 6.3 7.81 9.03 11.34 14.01 15.81 18.55 21;
   13 5.89 7.04 8.63 9.93 12.34 15.12 16.98 19.81 22.4;
   14 6.57 7.79 9.47 10.82 13.34 16.22 18.15 21.1 23.7;
   15 7.26 8.55 10.31 11.72 14.34 17.32 19.31 22.3 25;
   16 7.96 9.31 11.15 12.62 15.34 18.42 20.5 23.5 26.3;
   17 8.67 10.08 12.00 13.53 16.34 19.51 21.6 24.8 27.6;
   18 9.39 10.86 12.86 14.44 17.34 20.6 22.8 26 28.9;
   19 10.11 11.65 13.72 15.35 18.34 21.7 23.9 27.2 30.1;
   20 10.85 12.44 14.58 16.27 19.34 22.8 25 28.4 31.4];

display('матожидание координат РЭС по оси х для nn-го кластера')
mx1=mean(x1)
display('дисперсия координат РЭС по оси х для nn-го кластера')
dx1=mean((x1-mx1).^2)
display('матожидание координат РЭС по оси y для nn-го кластера')
my1=mean(y1)
display('дисперсия координат РЭС по оси y для nn-го кластера')
dy1=mean((y1-my1).^2)
display('матожидание координат РЭС по оси z для nn-го кластера')
mz1=mean(z1)
display('дисперсия координат РЭС по оси z для nn-го кластера')
dz1=mean((z1-mz1).^2)
%Построение гистограммы координат РЭС nn-го кластера по оси х
   [aax1,bbx1]=hist(x1,20);
   dx=(max(x1)-min(x1))/20;
   px1=aax1/(mn(nn));%
   mx11=bbx1*px1';
   sigmx1=sqrt(dx1);
   px2=exp(-(bbx1-mx11).^2/(2*sigmx1^2))/(sigmx1*sqrt(2*pi))*dx;
   figure (3)
   bar(bbx1,px1)
   hold on, 
   plot(bbx1,px2,'r')
   title('Гистограмма плотности распределения вероятностей');% Подпись графика
xlabel('значение координаты РЭС кластера по оси х');% Подпись оси х графика
ylabel('вероятность');% Подпись оси у графика
   %проверка гипотезы правдоподобия о гауссовой плотности распределения вероятности 
   disp('xu2 по оси х')
   xu2=sum((aax1-mn(nn)*px2).^2./(mn(nn)*px2))
  
li=2;
while tabl(li,1)<svob
   li=li+1;
end
lj=2;
while tabl(li,lj)<xu2 & lj<10,
   lj=lj+1;
end
disp('Вероятность P(xu2 > xua2) по оси х')
ppi=tabl(1,lj)
if lam<=ppi
   disp('Выдвинутая нами гипотеза о нормальном распределении координат по оси х не противоречит опытным данным')
else 
   disp('Выдвинутая нами гипотеза о нормальном распределении координат по оси х противоречит опытным данным и ее надо отбросить')
end

%Построение гистограммы координат РЭС кластера по оси у
   [aay1,bby1]=hist(y1,20);
   dy=(max(y1)-min(y1))/20;
   py1=aay1/(mn(nn));
   my11=bby1*py1';
   sigmy1=sqrt(dy1);
   py2=exp(-(bby1-my11).^2/(2*sigmy1^2))/(sigmy1*sqrt(2*pi))*dy;
   figure (4)
   bar(bby1,py1)
   hold on, 
   plot(bby1,py2,'r')
   title('Гистограмма плотности распределения вероятностей');% Подпись графика
xlabel('значение координаты РЭС кластера по оси y');% Подпись оси х графика
ylabel('вероятность');% Подпись оси у графика
   %проверка гипотезы правдоподобия о гауссовой плотности распределения вероятности 
    disp('xu2 по оси y')
   xu2=sum((aay1-mn(nn)*py2).^2./(mn(nn)*py2))
   
li=2;
while tabl(li,1)<svob
   li=li+1;
end
lj=2;
while tabl(li,lj)<xu2 & lj<10,
   lj=lj+1;
end
disp('Вероятность P(xu2 > xua2) по оси y')
ppi=tabl(1,lj)
if lam<=ppi
   disp('Выдвинутая нами гипотеза о нормальном распределении координат по оси у не противоречит опытным данным')
else 
   disp('Выдвинутая нами гипотеза о нормальном распределении координат по оси у противоречит опытным данным и ее надо отбросить')
end
%Построение гистограммы координат РЭС кластера по оси z
   [aaz1,bbz1]=hist(z1,20);
   dz=(max(z1)-min(z1))/20;
   pz1=aaz1/(mn(nn));
   mz11=bbz1*pz1';
   sigmz1=sqrt(dz1);
   pz2=exp(-(bbz1-mz11).^2/(2*sigmz1^2))/(sigmz1*sqrt(2*pi))*dz;
   figure (5)
   bar(bbz1,pz1)
   hold on, 
   plot(bbz1,pz2,'r')
   title('Гистограмма плотности распределения вероятностей');% Подпись графика
xlabel('значение координаты РЭС кластера по оси z');% Подпись оси х графика
ylabel('вероятность');% Подпись оси у графика
   %проверка гипотезы правдоподобия о гауссовой плотности распределения вероятности 
  disp('xu2 по оси z')
   xu2=sum((aaz1-mn(nn)*pz2).^2./(mn(nn)*pz2))
   
li=2;
while tabl(li,1)<svob
   li=li+1;
end
lj=2;
while tabl(li,lj)<xu2 & lj<10,
   lj=lj+1;
end
disp('Вероятность P(xu2 > xua2) по оси z')
ppi=tabl(1,lj)
if lam<=ppi
   disp('Выдвинутая нами гипотеза о нормальном распределении координат по оси z не противоречит опытным данным')
else 
   disp('Выдвинутая нами гипотеза о нормальном распределении координат по оси z противоречит опытным данным и ее надо отбросить')
end
% расчет расстояний между РЭС
  for k1=1:mn(nn)
        for k2=1:mn(nn)
            x=Koordel(nn,k1,1)-Koordel(nn,k2,1);
            y=Koordel(nn,k1,2)-Koordel(nn,k2,2);
            z=Koordel(nn,k1,3)-Koordel(nn,k2,3);
            r(k1,k2)=sqrt(x^2+y^2+z^2);
        end
  end
 
disp('Расстояния между РЭС кластера')
r
%Пробразуем координаты сети в двумерный массив
l=1;
for k1=1:N
    for k2=1:mn(k1)
        L(l,1)=Koordel(k1,k2,1);
        L(l,2)=Koordel(k1,k2,2);
        L(l,3)=Koordel(k1,k2,3);
        l=l+1;
    end
end
L=L';
%создаем НС Кохонена с 3 кластерами
h=newc([-1 20;-1 20;-1 10],N,.1);
h.trainParam.epochs=100; %3адание количества циклов обучения
h=train(h,L);
w=h.IW{1}
w=sortrows(w)
h.IW{1}=w;
razm1(N,Koordel,mn); % размещение РЭС
figure(6)
hold on;
scatter3(w(:,1),w(:,2),w(:,3),'^r','LineWidth',1);

for k1=1:N
    text(w( k1,1),w( k1,2),w( k1,3),int2str([k1]))
end
figure(7)
hold on;
plot(w(:,1),w(:,2),'^r','LineWidth',3);
%Ввод нового РЭС
figure(6)
scatter3(p(1),p(2),p(3),'hb','LineWidth',3);
figure(7)
plot(p(1),p(2),'hb','LineWidth',3);
y=sim(h,p);
display('Вновь введенное РЭС относится к кластеру'),y
