如何在matlab中制作三个具有概率的向量,每个向量的总和为1?

时间:2014-12-03 17:00:35

标签: matlab vector probability entropy

我必须制作具有概率p1,p2和p3 =(1-p1-p2)的三个向量,以便绘制没有产生三个符号的存储器的信号源的熵。我已经用rand()和像[1:.001:1]之类的向量尝试了很多东西,但是没有一个像它应该的那样工作,主要的问题是我无法为每组概率保持一个恒定的总和。这样做有什么办法或功能吗?任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以生成0到1之间的3个实数的向量p

p = rand(1,3);

然后规范化p

p = p / sum(p);

然后p(1) + p(2) + p(3)为1。

编辑:

回应OP的评论

N = 100;

p = rand(N, 3);
for k = 1: N
    p(k,:) = p(k,:)/sum(p(k,:));
end;

现在你有一个N x 3矩阵,行总计为一行。我很确定有一个更纯净的" MATLAB使用一些矢量化技巧编写循环的方法,但是我的MATLAB现在有点生疏了,这样做。在提问时请下次更精确。