如何从概率密度函数得到变量的绘制?

时间:2018-01-24 13:02:33

标签: matlab

我有一个大小为13x200的真实数据矩阵,其中包含N=13个时间实例中T=200个传感器的读数。我想用高斯模型对每行读数进行建模。

因此,对于每个传感器i=1,...N(对于矩阵的每一行),我计算均值和方差,然后计算该数据向量的概率密度函数(PDF),其将获得大小{{ 1}}。

我想从该PDF矢量中抽取200个高斯样本。我怎么能用MATLAB做到这一点?

1 个答案:

答案 0 :(得分:0)

如果s是您的标准偏差且m是您的意思,您可以从Guassian发行版获得N随机值,如下所示:

v = randn(N,1) * s + m;

从测量的PDF中绘制随机值更加挑剔。首先计算累积分布:

cpdf = cumsum(pdf);
cpdf = cpdf / max(cpdf); % make sure it's normalized

然后绘制一个介于0和1之间的值,均匀分布,并查找首次达到此值的bin:

p = rand(1);
c = find(cpdf >= p, 1, 'first');

理想情况下,您可以使用插值来获得CPDF超过所选值的确切位置。我将这作为练习留给读者。 ;)

修改

这不是你要求的,而是我认为你需要的。您从200个样本中计算200个PDF值。这是没有意义的。您不能以这种方式充分准确地建模PDF,随机抽取的样本将只是镜像您的输入值。

如果要绘制200个接近200个输入样本的随机值,请执行以下操作:

data + randn(size(data)) * s;

你选择s为小w.r.t.数据的标准差。也许你每行需要不同的s