Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. X = [(o(:,1))',(x(:,1))';
  2. (o(:,2))',(x(:,2))'];
  3. y = [-1.*ones(1,length(o(:,1))), ones(1,length(x(:,1)))]';
  4. theta = rand(5,1); % [m1, m2, q1, p, q2]
  5. m = theta(1:2);
  6. Q = [theta(3), theta(4);
  7. theta(4), theta(5)];
  8. error_log = zeros(1,1);
  9.  
  10. alpha = 0.1;
  11. beta = 0.1;
  12.  
  13. error = 100;
  14. i = 1;
  15. while error > 185
  16. derror_ddelta = zeros(length(X),1);
  17. error_per_squared = zeros(length(X),1);
  18. ddelta_dm1 = zeros(length(X),1);
  19. ddelta_dm2 = zeros(length(X),1);
  20. ddelta_dq1 = zeros(length(X),1);
  21. ddelta_dp = zeros(length(X),1);
  22. ddelta_dq2 = zeros(length(X),1);
  23. for j = 1:length(X)
  24. delta = (X(:,j) - m)' * Q * (X(:,j) - m);
  25. error_per = hyp_tan(beta, delta) - y(j);
  26. error_per_squared(j) = error_per ^ 2;
  27. r_dot = hyp_tan_dot(beta, delta);
  28. derror_ddelta(j) = 2 * error_per * r_dot;
  29.  
  30. ddelta_dm1(j) = -2 * (Q(1,1) * (X(1,j) - m(1)) + Q(1,2) * (X(2,j) - m(2)));
  31. ddelta_dm2(j) = -2 * (Q(2,2) * (X(2,j) - m(2)) + Q(1,2) * (X(1,j) - m(1)));
  32. ddelta_dq1(j) = (X(1,j) - m(1))^2;
  33. ddelta_dp(j) = 2 * (X(1,j) - m(1)) * (X(2) - m(2));
  34. ddelta_dq2(j) = (X(2,j) - m(2))^2;
  35. end
  36. error = 0.5 * sum(error_per_squared);
  37. theta = theta - alpha .* sum(derror_ddelta) .* [sum(ddelta_dm1);
  38. sum(ddelta_dm2);
  39. sum(ddelta_dq1);
  40. sum(ddelta_dp);
  41. sum(ddelta_dq2)];
  42. error_log(i) = error;
  43. i = i+1;
  44. end
  45.  
  46. m = theta(1:2);
  47. Q = [theta(3), theta(4);
  48. theta(4), theta(5)];
  49.  
  50. % ans_x2 = zeros(1, length(X(1,:)));
  51. % for k = 1:length(X(1,:))
  52. % syms x2
  53. % x1 = X(1,k);
  54. % eqn = Q(1,1)*(x1 - m(1))^2 + 2*Q(1,2)*(x1 - m(1))*(x2 - m(2)) + Q(2,2)*(x2 - m(2))^2;
  55. % ans_x2(1,1) = solve(eqn, x2);
  56. % end
  57.  
  58. close all
  59. figure()
  60. % scatter(o(:,1),o(:,2))
  61. % hold
  62. % scatter(x(:,1),x(:,2),'x')
  63. % hold
  64. x_plot = X(1,:);
  65. % y_plot = ans_x2;
  66. % line(x_plot, y_plot)
  67. % syms x1
  68. % syms y
  69. eqn = Q(1,1)*(x_plot - m(1))^2 + 2*Q(1,2)*(x_plot - m(1))*(y_plot - m(2)) + Q(2,2)*(y_plot - m(2))^2;
  70. % hold
  71. f = @(x_plot,y_plot) eqn;
  72. fimplicit(f,[-10 10 -10 10])
  73.  
  74.  
  75. figure()
  76. plot(linspace(0,length(error_log),length(error_log)), error_log)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement