Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 来自半高斯分布的样本_Matlab_Statistics_Distribution_Random Sample_Normal Distribution - Fatal编程技术网

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