Advertisement
Dimique

Untitled

May 14th, 2020
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.32 KB | None | 0 0
  1. n=2;% размерность случайного вектора
  2. N=1000;%количество наблюдений (объем выборки)
  3. U = lognrnd(0,1,n,N);%генерация Х по закону распределения Релея
  4. cov_u=eye(n,n); %ковариационная матрица
  5. Dx=1;
  6. Dy=1;
  7. cov_ksi=[Dx 0;0 Dy]; %ввод ковариационной матрицы
  8. M_ksi=[0;0] ;
  9.  
  10. A=zeros(n,n);
  11. %проверка размерности cov_ksi и M_ksi
  12. if (size(cov_ksi) ~= n) | (size(M_ksi) ~= n)
  13. error('Размерность матрицы сov_ksi или M_ksi не совпадает с n');
  14. end
  15. for i=1:n
  16. if det(cov_ksi(1:i,1:i)) <= 0
  17. error('Матрица сov_ksi не положительно определенна');
  18. end
  19. end
  20.  
  21. %вычисление элементов матрицы A
  22. for i=1:n
  23. for j=1:i
  24. sum=0;
  25. for k=1:(j-1)
  26. sum=sum+A(i,k)*A(j,k)*cov_u(k,k);
  27. end
  28. if i==j
  29. A(i,j)=sqrt((cov_ksi(i,j)-sum)/cov_u(j,j));
  30. else
  31. A(i,j)=(cov_ksi(i,j)-sum)/(A(j,j)*cov_u(j,j));
  32. end
  33. end
  34. end
  35.  
  36. %построение случайного вектора ksi
  37. for i=1:N
  38. ksi(:,i)=A*U(:,i)+M_ksi;
  39. end
  40. %транспонирование матрицы случайных векторов ksi
  41. ksi_t=ksi';
  42. disp('Матрица преобразований A');
  43. A;
  44. disp('Выборка входных векторов U');
  45. U;
  46. disp('Выходные векторы ksi');
  47. ksi;
  48. disp('Исходн. матрица cov_ksi');
  49. cov_ksi;
  50. disp('Матрица cov_ksi (проверка правильности преобразований)');
  51. A*cov_u*A';
  52. disp('Выборочная ков.матрица');
  53. test_cov_ksi=ksi'/(n-1);
  54.  
  55. %построение гистограмм для входных и выходных векторов
  56. figure(1);
  57. hist(U',20);
  58. xlabel('Интервалы');
  59. ylabel(sprintf('Количество из %g',N));
  60. title('Гистограмма каждой из компоненты вход. двум.СВ(x1,x2)');
  61.  
  62. figure(2);
  63. hist(ksi',50);
  64. xlabel('Интервалы');
  65. ylabel(sprintf('Количество из %g',N));
  66. title('Гистограмма каждой из компоненты выход. двум.СВ(x1,x2)')
  67.  
  68. figure(3);
  69. subplot(2,1,1);
  70. plot(U');
  71. xlabel('Номер эксперемента,n');
  72. ylabel('Пара (x1,x2) n-го экспер');
  73. title('Входной двум.СВ(x1,x2)')
  74. figure(3);
  75. subplot(2,1,2);
  76. plot(ksi');
  77. xlabel('Номер эксперемента,n');
  78. ylabel('Пара (x1,x2) n-го экспер');
  79. title('Выходной двум.СВ(x1,x2)')
  80.  
  81. % %плотность вероятности двумерной величины
  82. m=500;% размер массива
  83. x_ksi=sqrt(Dx);
  84. y_ksi=sqrt(Dy);
  85. r=(mean(ksi(1)*ksi(2))-mean(ksi(1))*mean(ksi(2)))/(x_ksi*y_ksi);%коэфициент корреляции
  86. mx=M_ksi(1);
  87. my=M_ksi(2);
  88. z=zeros(m);
  89. test_z=zeros(m);
  90. for i=1:m
  91. x(i)=i/30-9;
  92. for j=1:m
  93. y(j)=j/30-9;
  94.  
  95. ch=1/(2*pi*x_ksi*y_ksi*sqrt(1-r^2));
  96. power_1=-1/(2*(1-r^2));
  97. power_2=((x(i)-mx)^2)/(x_ksi)^2;
  98. power_3=(2*r*(x(i)-mx)*(y(j)-my))/(x_ksi*y_ksi);
  99. power_4=((y(j)-my)^2)/(y_ksi)^2;
  100. rez_exp=exp(power_1*(power_2-power_3+power_4));
  101. z(i,j)= rez_exp*ch;
  102. end
  103. end
  104.  
  105. x_ksi=test_cov_ksi(1,1);
  106. y_ksi=test_cov_ksi(2,2);
  107. r=(mean(ksi(1)*ksi(2))-mean(ksi(1))*mean(ksi(2)))/(x_ksi*y_ksi);%коэфициент корреляции
  108. mx=M_ksi(1);
  109. my=M_ksi(2);
  110.  
  111. for i=1:m
  112. x(i)=i/30-9;
  113. for j=1:m
  114. y(j)=j/30-9;
  115.  
  116. ch=1/(2*pi*x_ksi*y_ksi*sqrt(1-r^2));
  117. power_1=-1/(2*(1-r^2));
  118. power_2=((x(i)-mx)^2)/(x_ksi)^2;
  119. power_3=(2*r*(x(i)-mx)*(y(j)-my))/(x_ksi*y_ksi);
  120. power_4=((y(j)-my)^2)/(y_ksi)^2;
  121. rez_exp=exp(power_1*(power_2-power_3+power_4));
  122. test_z(i,j)= rez_exp*ch;
  123. end
  124. end
  125.  
  126. figure();
  127. mesh(x,y,z);
  128. xlabel('x1');
  129. ylabel('x2');
  130. title('p(x1,x2)')
  131. title('Плотность (теор) вероятности двум.СВ (x1,x2)');
  132.  
  133. figure();
  134. mesh(x,y,test_z);
  135. xlabel('x1');
  136. ylabel('x2');
  137. title('p(x1,x2)')
  138. title('Плотность (экспр) вероятности двум.СВ (x1,x2)');
  139.  
  140. figure();
  141. [C,h]=contourf(x,y,z);
  142. clabel(C,h);
  143. xlabel('x1');
  144. ylabel('x2');
  145. title('Контурный график (теория)');
  146.  
  147. figure();
  148. [C,h]=contourf(x,y,test_z);
  149. clabel(C,h);
  150. xlabel('x1');
  151. ylabel('x2');
  152. title('Контурный график (эксперимент)');
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement