Guest User

Untitled

a guest
May 23rd, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. %% FST SIMULATION, BY BRAD
  2.  
  3.  
  4. clear; clc; close all;
  5.  
  6.  
  7. % LETS MAKE A BUCKET
  8. [x,y,z] = cylinder(5);
  9. CYL.X = x;
  10. CYL.Y = y;
  11. CYL.Z = z .* 10;
  12.  
  13.  
  14. % AND A RAT
  15. [x,y,z] = sphere;
  16. RAT.X = x .* 2;
  17. RAT.Y = y .* 2;
  18. RAT.Z = z .* 3 + 7;
  19.  
  20.  
  21. % PUT THE RAT IN THE BUCKET
  22. figure('Units','normalized','OuterPosition',[.1 .05 .6 .8],'Color','w');
  23. axes('Position',[.1 .1 .8 .8],'Color','none');
  24.  
  25. ph1 = surf(CYL.X,CYL.Y,CYL.Z);
  26. ph1.FaceAlpha = .4;
  27. axis equal; hold on
  28.  
  29. surf(RAT.X,RAT.Y,RAT.Z)
  30. view([40 20])
  31.  
  32.  
  33.  
  34. %% MOTION IN THE OCEAN
  35.  
  36. clc; clearvars -except CYL RAT
  37.  
  38. % CREATE MOTION BY SAMPLING FROM A RANDOM NORMAL DIST
  39.  
  40. mu = 0;
  41. sd = 1;
  42.  
  43. M = randn(1000,1) .* sd + mu;
  44.  
  45.  
  46. close all
  47. fh1 = figure('Units','normalized','OuterPosition',[.01 .06 .9 .9],'Color','w');
  48. ax1 = axes('Position',[.05 .55 .88 .43],'Color','none');
  49. ax2 = axes('Position',[.05 .05 .40 .43],'Color','none');
  50. ax3 = axes('Position',[.55 .05 .40 .43],'Color','none');
  51.  
  52.  
  53. % Plot simulated FST motion
  54. axes(ax1); plot(M);
  55.  
  56.  
  57. % Plot histogram
  58. axes(ax2); histogram(M);
  59.  
  60.  
  61. % Plot eCDF
  62. [F,x] = ecdf(M);
  63. axes(ax3); plot(x,F)
  64. xlabel('x'); ylabel('F(x)')
  65.  
  66.  
  67.  
  68.  
  69.  
  70. %% A RAT IN A BUCKET, FORCED TO SWIM
  71.  
  72. clc; %close all;
  73. clearvars -except CYL RAT M
  74.  
  75.  
  76.  
  77. % PUT THE RAT IN THE BUCKET
  78. fh1 = figure('Units','normalized','OuterPosition',[.1 .05 .6 .8],'Color','w');
  79. ax1 = axes('Position',[.1 .1 .8 .8],'Color','none');
  80.  
  81. ph1 = surf(CYL.X,CYL.Y,CYL.Z);
  82. ph1.FaceAlpha = .4;
  83. axis equal; hold on
  84.  
  85. S = surf(RAT.X,RAT.Y,RAT.Z);
  86. view([40 20]); hold on;
  87. AX.X = ax1.XLim;
  88. AX.Y = ax1.YLim;
  89. AX.Z = ax1.ZLim;
  90.  
  91.  
  92.  
  93. MO.X = M(randperm(length(M)));
  94. MO.Y = M(randperm(length(M)));
  95. MO.Z = M(randperm(length(M)));
  96.  
  97.  
  98. XD = RAT.X;
  99. YD = RAT.Y;
  100. ZD = RAT.Z;
  101.  
  102. cx = cumsum(MO.X).*.1;
  103. cy = cumsum(MO.Y).*.1;
  104. cz = cumsum(MO.Z).*.1;
  105.  
  106.  
  107. for i = 1:100
  108.  
  109. S.XData = XD+cx(i);
  110. S.YData = YD+cy(i);
  111. S.ZData = ZD+cz(i);
  112.  
  113. ax1.XLim = AX.X;
  114. ax1.YLim = AX.Y;
  115. ax1.ZLim = AX.Z;
  116. view([40 20]);
  117. pause(.05)
  118.  
  119. % BOUTS OF GIVING-UP
  120. if mod(i,20)==0
  121. for j = 1:80
  122. S.ZData = S.ZData - j*.0005;
  123. pause(.02)
  124. end
  125. for k = 1:40
  126. S.ZData = S.ZData + j*.0005;
  127. pause(.01)
  128. end
  129. end
  130. end
  131.  
  132. disp('DONE')
Add Comment
Please, Sign In to add comment