tsplot.m 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. function tsplot(y,x,mode,lColor,tColor)
  2. if ~exist('x','var'), x = [1:size(y,1)]; end
  3. if ~exist('mode','var'), mode = 'mean+std'; end
  4. if ~exist('lColor','var'), lColor = rand(1,3)/2; end
  5. if ~exist('tColor','var'), tColor = [lColor,1];end
  6. stdy = std(y,1,2)';
  7. semy = stdy/sqrt(size(y,2));
  8. ts = tinv([0.025 0.975],size(y,2)-1);
  9. mode = split(mode,'+');
  10. if length(mode) == 1
  11. meanmode = 'mean';
  12. stdmode = mode{1};
  13. elseif length(mode) == 2
  14. meanmode = mode{1};
  15. stdmode = mode{2};
  16. else
  17. warning('Undefined tsplot mode, set to [mean + std]')
  18. meanmode = 'mean';
  19. stdmode = 'std';
  20. end
  21. switch meanmode
  22. case 'mean'
  23. meany= mean(y,2)';
  24. case 'median'
  25. meany= median(y,2)';
  26. end
  27. hold on
  28. switch stdmode
  29. case 'std'
  30. fill([x,fliplr(x)],[meany+stdy,fliplr(meany-stdy)],tColor(1:3),'EdgeAlpha',0,'FaceAlpha',tColor(end)/2)
  31. case 'sem'
  32. fill([x,fliplr(x)],[meany+semy,fliplr(meany-semy)],tColor(1:3),'EdgeAlpha',0,'FaceAlpha',tColor(end)/2)
  33. case 'ci'
  34. fill([x,fliplr(x)],[meany+ts(1)*semy,fliplr(meany+ts(2)*semy)],tColor(1:3),'EdgeAlpha',0,'FaceAlpha',tColor(end)/2)
  35. end
  36. plot (x,meany,'color',lColor,'linewidth',2)
  37. xlim([min(x),max(x)])
  38. hold off
  39. end