matlab线性插值求分位数算法如下:
C代码实现如下:
//d:输入数据,len_d:输入数据长度,rate:分位点
float quantile(float* d, int len_d, float rate)
{
float dfg2 = 0;
float x[len_d];//数组长度len_d
for (int i = 1; i <= len_d; i++)
{
x[i-1] = (i - 0.5) / len_d;
}
for(int i= 0; i < len_d-1;i++)
{
if (x[i]<rate && x[i+1]>rate)
{
dfg2 = d[i] + ((rate - x[i]) / (x[i+1]-x[i]))*(d[i+1] - d[i]);
}
}
return dfg2;
}