使用MATLAB的
概率分布对象使得从截断分布中进行抽样变得非常容易。
您可以使用
makedist()
和
truncate()
函数定义对象,然后修改(将其截断)以准备好
random()
函数生成来自该对象的随机变量。
pd = makedist('Normal',0.5,0.1)
pdt = truncate(pd,0,1)
sample = random(pdt,numRows,numCols)
一旦对象被创建(这里是 pdt
,它是 pd
的截断版本),您可以在各种函数调用中使用它。
要 生成样本,random(pdt,m,n)
会产生一个大小为 m x n 的数组,其中包含来自 pdt
的样本。
此外,如果您想避免使用工具箱,则
来自@Luis Mendo的答案是正确的(下面有证明)。
figure, hold on
h = histogram(cr,'Normalization','pdf','DisplayName','@Luis Mendo samples');
X = 0:.01:1;
p = plot(X,pdf(pdt,X),'b-','DisplayName','Theoretical (w/ truncation)');