Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.53 KB | None | 0 0
  1. %Файл pr52_rec_gaus_eq. Синтез и анализ алгоритмов распознавания ГСВ с одинаковой
  2. %матрицей ковариации (двумерный вектор признаков)
  3. clear all; close all;
  4.  
  5. %1.Задание исходных данных
  6. n=2; M=2; %%размерность признакового пространства и число классов
  7. K = 1000; %количество статистических испытаний
  8.  
  9. m = [5 -1; -1 4];
  10. pw = [0.5, 0.5];
  11. np=sum(pw); pw=pw/np;
  12.  
  13. C = [6 2; 2 6];
  14. C_ = C^-1;
  15. D = C(1,1);
  16.  
  17. % 1.1. Визуальзация исходной совокупности образов
  18. N = K * M;
  19. NN = zeros(M, 1);
  20. for k = 1 : M - 1
  21. NN(k) = uint16(N * pw(k));
  22. end;
  23. NN(M) = N - sum(NN);
  24. label = {'bo', 'r+', 'k*', 'gx'};
  25.  
  26. IMS = []; %общая совокупность образов
  27. figure; hold on; title('Исходные метки образов');
  28. for i=1:M,%цикл по классам
  29. ims = repmat(m(:,i), [1, NN(i)]) + randncor(n,NN(i),C); %генерация К образов i-го класса
  30. if (n == 2)
  31. plot(ims(1, :), ims(2, :), label{i}, 'MarkerSize', 10, 'LineWidth', 1);
  32. elseif (n == 3)
  33. plot3(ims(1, :), ims(2, :), ims(3, :), label{i}, 'MarkerSize', 10, 'LineWidth', 1);
  34. end;
  35. IMS = [IMS, ims]; %добавление в общую совокупность образов
  36. end;
  37.  
  38. %2.Расчет разделяющих функций и матрицы вероятностей ошибок распознавания
  39. G=zeros(M,n+1); PIJ=zeros(M); l0_=zeros(M);
  40. for i = 1 : M,
  41. G(i,1:n)=(C_*m(:,i))'; G(i,n+1)=-0.5*m(:,i)'*C_*m(:,i);
  42. for j=i+1:M,
  43. l0_(i,j)=log(pw(j)/pw(i));
  44. h=0.5*(m(:,i)-m(:,j))'*C_*(m(:,i)-m(:,j)); sD=sqrt(2*h);
  45. PIJ(i,j)=normcdf(l0_(i,j),h,sD); PIJ(j,i)=1-normcdf(l0_(i,j),-h,sD);
  46. end;
  47. PIJ(i,i)=1-sum(PIJ(i,:));%нижняя граница вероятности правильного распознавания
  48. end;
  49.  
  50. % 2.1. Визуальзация результатов распознавания образов
  51. figure; hold on; title('Результат классификации образов');
  52. for i = 1 : N,%цикл по всем образам совокупности
  53. z = [IMS(:, i); 1]; %значение очердного образа из общей совокупности
  54. u=G*z+log(pw');%вычисление значения разделяющих функций
  55. [ui,iai]=max(u);%определение максимума (iai - индекс класса)
  56. if (n == 2)
  57. plot(IMS(1, i), IMS(2, i), label{iai}, 'MarkerSize', 10, 'LineWidth', 1);
  58. elseif (n == 3)
  59. plot3(IMS(1, i), IMS(2, i), IMS(3, i), label{iai}, 'MarkerSize', 10, 'LineWidth', 1);
  60. end;
  61. end;
  62.  
  63. %3.Тестирование алгоритма методом статистических испытаний
  64. x=ones(n+1,1); Pc_=zeros(M);%экспериментальная матрица вероятностей ошибок
  65. for k=1:K,%цикл по числу испытаний
  66. for i=1:M,%цикл по классам
  67. [x_,px]=randncor(n,1,C);
  68. x(1:n,1)=m(:,i)+x_;%генерация образа i-го класса
  69. u=G*x+log(pw');%вычисление значения разделяющих функций
  70. [ui,iai]=max(u);%определение максимума
  71. Pc_(i,iai)=Pc_(i,iai)+1;%фиксация результата распознавания
  72. end;
  73. end;
  74. Pc_=Pc_/K;
  75. disp('Теоретическая матрица вероятностей ошибок');disp(PIJ);
  76. disp('Экспериментальная матрица вероятностей ошибок');disp(Pc_);
  77. %4.Визуализация областей принятия решений для двумерного случая
  78. if n==2,
  79. xmin1=-4*sqrt(D)+min(m(1,:)); xmax1=4*sqrt(D)+max(m(1,:));
  80. xmin2=-4*sqrt(D)+min(m(2,:)); xmax2=4*sqrt(D)+max(m(2,:));
  81. x1=xmin1:0.05:xmax1; x2=xmin2:0.05:xmax2;
  82. axis([xmin1,xmax1,xmin2,xmax2]);%установка границ поля графика по осям
  83. figure; hold on; grid on;
  84. [X1,X2]=meshgrid(x1,x2); %матрицы значений координат случайного вектора
  85. x12=[X1(:),X2(:)];
  86. for i=1:M,
  87. f2=mvnpdf(x12,m(:,i)',C); %массив значений плотности распределения
  88. f3=reshape(f2,length(x2),length(x1));%матрица значений плотности распределения
  89. [Ch,h]=contour(x1,x2,f3,[0.01,0.5*max(f3(:))],'Color','b','LineWidth',0.75); clabel(Ch,h);
  90. for j=i+1:M,%изображение разделяющих границ
  91. wij=C_*(m(:,i)-m(:,j));
  92. wij0=-0.5*(m(:,i)+m(:,j))'*C_*(m(:,i)-m(:,j));
  93. f4=wij'*x12'+wij0;
  94. f5=reshape(f4,length(x2),length(x1));
  95. [Ch_,h_] = contour(x1,x2,f5,[l0_(i,j)+0.0001],'Color','k','LineWidth',1.25);
  96. end;
  97. end;
  98. set(gca,'FontSize',13);
  99. title('Области локализации классов и разделяющие границы','FontName','Courier');
  100. xlabel('x1','FontName','Courier'); ylabel('x2','FontName','Courier');
  101. strv1=' pw='; strv2=num2str(pw,'% G');
  102. text(xmin1+1,xmax2-1, [strv1,strv2], 'HorizontalAlignment','left','BackgroundColor',...
  103. [.8 .8 .8],'FontSize',12);hold off;
  104. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement