% L5A quantile demo: % Matlab and R style quantile functions from finite data function L5Aquantiledemo(q, y) if nargin<2, y = [1 2 4 8 10]; end n = length(y); y = sort(y); ymin = min(y)-0.5; ymax = max(y)+0.5; qq = linspace(0,1,1000); clf % Matlab style quantile function subplot(2,1,1) myy = quantile(y, qq); mqy = linspace(1/(2*n), 1-1/(2*n), n); plot(mqy, y, 'bo', 'markerface', 'b', 'markersize', 10); hold on plot(qq, myy, 'b-', 'linewidth', 2); set(gca, 'ylim', [ymin ymax]); set(gca, 'xtick', 0:(1/(2*n)):1); grid on title('Matlab-style quantile function'); if nargin>=1 my_example = quantile(y, q); plot([q q], [ymin ymax], 'k-', 'linewidth', 2); plot(q, my_example, 'k-o', 'markersize', 10); fprintf('M-style q(%.3f) = %.6f\n', q, my_example); end % R-style quantile function subplot(2,1,2) ryy = Rquantile(y, qq); rqy = linspace(0, 1, n); plot(rqy, y, 'ro', 'markerface', 'r', 'markersize', 10); hold on plot(qq, ryy, 'r-', 'linewidth', 2); set(gca, 'ylim', [min(y)-0.5 max(y)+0.5]); set(gca, 'xtick', rqy); grid on title('R-style quantile function'); if nargin>=1 Rmy_example = Rquantile(y, q); plot([q q], [ymin ymax], 'k-', 'linewidth', 2); plot(q, Rmy_example, 'k-o', 'markersize', 10); fprintf('R-style q(%.3f) = %.6f\n', q, Rmy_example); end end