我有一个大小为13x200
的真实数据矩阵,其中包含N=13
个时间实例中T=200
个传感器的读数。我想用高斯模型对每行读数进行建模。
因此,对于每个传感器i=1,...N
(对于矩阵的每一行),我计算均值和方差,然后计算该数据向量的概率密度函数(PDF),其将获得大小{{ 1}}。
我想从该PDF矢量中抽取200个高斯样本。我怎么能用MATLAB做到这一点?
答案 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
。