Matlab 来自半高斯分布的样本
假设Matlab 来自半高斯分布的样本,matlab,statistics,distribution,random-sample,normal-distribution,Matlab,Statistics,Distribution,Random Sample,Normal Distribution,假设n=n(0,1)是正态分布。在MATLAB中,当使用randn(1,1)函数时,将从n中提取样本 然而,我有一个不同的目标:我想从上半部分(或下半部分)分布中取样,即从左尾到平均值(或从平均值到右尾) 一种虚拟的方法是: while sample > mean sample from gaussian end 但是,由于我必须在代码中提取大量样本,因此这种解决方案将不受欢迎。有没有更聪明的方法来提取这些样本,而不涉及循环?鉴于高斯分布在零附近对称,您可以使用 sample =
n=n(0,1)
是正态分布。在MATLAB中,当使用randn(1,1)
函数时,将从n
中提取样本
然而,我有一个不同的目标:我想从上半部分(或下半部分)分布中取样,即从左尾到平均值(或从平均值到右尾)
一种虚拟的方法是:
while sample > mean
sample from gaussian
end
但是,由于我必须在代码中提取大量样本,因此这种解决方案将不受欢迎。有没有更聪明的方法来提取这些样本,而不涉及循环?鉴于高斯分布在零附近对称,您可以使用
sample = randn(n, 1);
sample(sample < 0) = -sample(sample < 0);
sample=randn(n,1);
样本(样本<0)=-样本(样本<0);
请注意,这仅在高斯平均值为零时有效
对于具有任意平均值的高斯函数,可以使用:
sample(sample < mean(sample)) = -sample(sample < mean(sample)) + 2*mean(sample);
sample(sample
假设高斯分布在零附近对称,您可以使用
sample = randn(n, 1);
sample(sample < 0) = -sample(sample < 0);
sample=randn(n,1);
样本(样本<0)=-样本(样本<0);
请注意,这仅在高斯平均值为零时有效
对于具有任意平均值的高斯函数,可以使用:
sample(sample < mean(sample)) = -sample(sample < mean(sample)) + 2*mean(sample);
sample(sample