quantile 方法是用来求分位数,详情见帮助文档,本文中实现的方法适用于quantile (matrix(:),value) 这种形式,里面用到的percentile方法就是之前发的那个博文里的方法。
求解的结果是个1列,value行的矩阵。测试数据也放在前面隐掉的部分里。
FUNCTION quantile,qudata,quvalue;matlab quantile (matrix(:),value)参数形式
;qudata=[[0,1,2,3,4],[5,4,3,2,1],[2,3,4,5,6],[3,3,3,3,3]]
;qudata=[2,4,6]
;Temp=[1,2,3,4,5]
;quvalue=6
;quresult=dblarr(1,quvalue)
;for i=0,quvalue-1 do begin
; quresult[0,i]=percentile(transpose(qudata),100*i/quvalue);quresult[0,i]
;print,a
;endfor
cols = n_elements(qudata[*,0])
rows = n_elements(qudata[0,*])
tmpn=0
tmpdata=dblarr(1,cols*rows)
for j=0,rows-1 do begin
for k=0,cols-1 do begin
tmpdata[0,tmpn]=qudata[k,j]
tmpn++
endfor
endfor
if quvalue lt 1 then begin
quresult=0.0
quresult=percentile(tmpdata,quvalue*100)
endif
if quvalue eq 1 then begin
quresult=0.0
quresult=percentile(tmpdata,100)
endif
if quvalue gt 1 then begin
quresult=dblarr(1,quvalue)
for i=0,quvalue-1 do begin
;b=(100*(1+i))/((quvalue+1)*1.)
quresult=percentile(tmpdata,(100*(1+i))/((quvalue+1)*1.));quresult[0,i]
;print,a
endfor
;a=percentile(tmpdata,[33,66])
endif
return,quresult
END