Advertisement
aidanozo

Untitled

Dec 9th, 2024
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 2.00 KB | None | 0 0
  1. function [] = mcmmp_oe2(A, B, N, nr)
  2.  
  3. lambda = 1;
  4.  
  5. if(nargin < 4)
  6.     nr = 100;
  7. end
  8.  
  9. u = sign(randn(N, nr));
  10. e = randn(N, nr) * lambda^2;
  11. yi = filter (B,A, u);
  12. v = e;
  13. y = yi + v;
  14. y2 = e - y;
  15.  
  16. teta = zeros(4, nr);
  17.  
  18. for i=1:nr
  19.  
  20.     [ry2, k] = xcov(y2(:, i),'biased');
  21.     ry2 = ry2(k>=0);
  22.  
  23.     [ru, k] = xcov(u(:, i),'biased');
  24.     ru = ru(k>=0);
  25.  
  26.     [ryu, k] = xcov(y(:, i), u(:,i), 'biased');
  27.     ryu = ryu(k>=1);
  28.  
  29.     [ry2u, k] = xcov(y2(:, i), u(:,i), 'biased');
  30.     ry2u = ry2u(k>=0);
  31.  
  32.     [ruy2, k] = xcov(u(:, i), y2(:,i), 'biased');
  33.     ruy2 = ruy2(k>=0);
  34.  
  35.     [ryy2, k] = xcov(y(:, i), y2(:,i), 'biased');
  36.     ryy2 = ryy2(k>=-1);
  37.    
  38.     R = [ry2(1) ry2(2) ry2u(1) ry2u(2);
  39.         ry2(2) ry2(1) ruy2(2) ry2u(1);
  40.         ruy2(1) ruy2(2) ru(1) ru(2);
  41.         ry2u(2) ruy2(1) ru(2) ru(1)];
  42.  
  43.     r = [ryy2(3);
  44.          ryy2(4);
  45.          ryu(1);
  46.          ryu(2)];
  47.  
  48.     t = R \ r;
  49.     teta(:, i) = t;
  50.    
  51.     eroare = y(:,i) - [[0; y2(1:(N-1),i)] [0; 0; y2(1:(N-2),i)] [0; u(1:(N-1),i)] [0; 0; u(1:(N-2), i)]]*t;
  52.     deviatiastandard(i, 1) = norm(eroare)/sqrt(N-size(teta,1));
  53.     dispersia(i,1) = deviatiastandard(i)^2;
  54. end
  55.  
  56. a1_m = mean(teta(1,:));
  57. a2_m = mean(teta(2,:));
  58. b1_m = mean(teta(3,:));
  59. b2_m = mean(teta(4,:));
  60.  
  61. figure
  62. plot(dispersia)
  63. hold on
  64. plot(zeros(nr, 1) + lambda^2);
  65. hold off
  66. title('Model OE[2, 2]');
  67. xlabel('Numarul realizarii');
  68. ylabel('Varianta');
  69. legend('zgomot estimat', 'zgomot real');
  70.  
  71. x_limits = xlim;
  72. y_limits = ylim;
  73.  
  74. x_text = mean(x_limits);
  75. y_text1 = y_limits(2) - 0.05 * (y_limits(2) - y_limits(1));
  76. y_text2 = y_limits(2) - 0.1 * (y_limits(2) - y_limits(1));
  77.  
  78. text(x_text, y_text1, ['Parametri adevarati: ', sprintf('%9.4f',[A(2) A(3) B(2) B(3)])], ...
  79.     'HorizontalAlignment', 'center', 'VerticalAlignment', 'top', 'FontWeight', 'bold');
  80. text(x_text, y_text2, ['Parametri estimati: ', sprintf('%9.4f',[a1_m a2_m b1_m b2_m])], ...
  81.     'HorizontalAlignment', 'center', 'VerticalAlignment', 'top', 'FontWeight', 'bold');
  82.  
  83. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement