PageRenderTime 26ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/MatlabCode/branches/Greg's Branch/Slave/Monitor Calibration/TimeCourse.m

http://horwitzlab.googlecode.com/
MATLAB | 116 lines | 93 code | 14 blank | 9 comment | 7 complexity | c8ec94532057777c1beadee9ae86b075 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0
  1. % Looking at how the intensity of the three monitor phosphors vary across time.
  2. % Setting stuff up
  3. boxSize = 100;
  4. Xoffset = 0;
  5. Yoffset = 0;
  6. NHOURS = 6;
  7. disp('Turn on Photometer and hit <return>');
  8. disp('Then focus on white square and hit <return> again');
  9. input('');
  10. PR650init(1,0);
  11. [width, height]=Screen('DisplaySize', 0);
  12. [window,screenRect] = SCREEN(0,'OpenWindow',[190 190 190],[0 0 width height]);
  13. boxRect = [0 0 boxSize boxSize];
  14. boxRect = CenterRect(boxRect,screenRect);
  15. boxRect = boxRect + [Xoffset -1*Yoffset Xoffset -1*Yoffset];
  16. Screen('FillRect',window,[255 255 255],boxRect);
  17. Screen('Flip',window);
  18. input('');
  19. pause(2);
  20. Rspd = []; Gspd = []; Bspd = []; Whitespd = []; timevect = [];
  21. for i = 1:(NHOURS*12)
  22. Screen('FillRect',window,[255 0 0],boxRect);
  23. Screen('Flip',window);
  24. spd = PR650measspd;
  25. Rspd =[Rspd;spd']
  26. Screen('FillRect',window,[0 255 0],boxRect);
  27. Screen('Flip',window);
  28. spd = PR650measspd;
  29. Gspd =[Gspd;spd'];
  30. Screen('FillRect',window,[0 0 255],boxRect);
  31. Screen('Flip',window);
  32. spd = PR650measspd;
  33. Bspd =[Bspd;spd'];
  34. Screen('FillRect',window,[255 255 255],boxRect);
  35. Screen('Flip',window);
  36. spd = PR650measspd;
  37. Whitespd =[Whitespd;spd'];
  38. Screen('FillRect',window,[190 190 190],boxRect);
  39. Screen('Flip',window);
  40. tmp = clock;
  41. timevect = [timevect; tmp(4) tmp(5)];
  42. pause(5*60);
  43. end
  44. SCREEN('Close', window);
  45. save TimeCourseOut Rspd Gspd Bspd Whitespd timevect
  46. %%% Analysis
  47. avgRspd = mean(Rspd);
  48. avgGspd = mean(Gspd);
  49. avgBspd = mean(Bspd);
  50. avgWspd = mean(Whitespd);
  51. figure; hold on;
  52. plot(avgRspd,'r-');
  53. plot(avgGspd,'g-');
  54. plot(avgBspd,'b-');
  55. plot(avgWspd,'k-');
  56. tmp = diff(timevect(:,1));
  57. daychanges = find(tmp == -23); % Day changes
  58. for i = 1:length(daychanges)
  59. timevect([daychanges(i)+1:end],1) =...
  60. timevect([daychanges(i)+1:end],1) + 24;
  61. end
  62. figure; hold on;
  63. weights = [];
  64. for i = 1:size(Rspd,1)
  65. weights = [weights regress(avgRspd',Rspd(i,:)')];
  66. end
  67. plot(timevect(:,1)+timevect(:,2)*(1/60),weights,'r-');
  68. weights = [];
  69. for i = 1:size(Gspd,1)
  70. weights = [weights regress(avgGspd',Gspd(i,:)')];
  71. end
  72. plot(timevect(:,1)+timevect(:,2)*(1/60),weights,'g-');
  73. weights = [];
  74. for i = 1:size(Bspd,1)
  75. weights = [weights regress(avgBspd',Bspd(i,:)')];
  76. end
  77. plot(timevect(:,1)+timevect(:,2)*(1/60),weights,'b-');
  78. %weights = [];
  79. %for i = 1:size(Whitespd,1)
  80. % weights = [weights regress(avgWspd',Whitespd(i,:)')];
  81. %end
  82. %plot(timevect(:,1)+timevect(:,2)*(1/60),weights,'k-');
  83. ylabel('Weight to get to average');
  84. xlabel('Time (hours)');
  85. %%% Test of linearity for white
  86. pred = avgRspd+avgGspd+avgBspd;
  87. figure; axes; hold on;
  88. plot(pred,'b-');
  89. plot(avgWspd,'k-');
  90. [weights] = regress(avgWspd',[avgRspd' avgGspd' avgBspd']);
  91. gunnames = {'red','green','blue'};
  92. for i = 1:3
  93. if weights(i) < 1
  94. percentchange = 100*(1-weights(i));
  95. disp([char(gunnames(i)),' gun is ',num2str(percentchange,'%0.2g'),'% too dim in white']);
  96. else
  97. percentchange = 100*(weights(i)-1);
  98. disp([char(gunnames(i)),' gun is ',num2str(percentchange,'%0.2g'),'% too bright in white']);
  99. end
  100. end