从MATLAB

时间:2018-03-08 16:46:30

标签: matlab

我通过MATLAB在

中生成了经验累积分布函数
x = [1, 1.2, ..., 1]
[myECDF, xi] = ecdf(x);

现在我想用这个ECDF作为绘制一组随机数的基础。例如,我想做这样的事情:

y = random(myECDF, 10);  // drawing 10 random numbers from ECDF

这在MATLAB中是否可行?

1 个答案:

答案 0 :(得分:3)

您可以使用反向CDF方法。生成0到1之间均匀分布的随机变量,并将它们视为CDF输出。然后使用您的经验分布找到相应的值。

function my_x = my_random(myECDF, xi, N)
    % Generate N uniformly distributed samples between 0 and 1.
    u = rand(N,1);
    % Map these to the points on the empirical CDF.
    my_x = interp1(myECDF, xi, u, 'linear');
end