我有一个向量 y
可能具有以下形式:
y = [1 1 1 1 2 2 2 2 1 1 3 3 4 5]
我想为 y
中的每个元素附加一个概率,因为它是由随机变量生成的。在这种情况下,元素 1 的概率为 6/14,元素 2 的概率为 4/14,元素 3 的值为 2/14,元素 4 和 5 的值为 1/14。
基本上,结果应该是这样的:
prob_y = 1/14 * [6 6 6 6 4 4 4 4 6 6 2 2 1 1]
有没有一种方法可以在没有任何 for
或 while
循环的情况下做到这一点?
最佳答案
可以使用 UNIQUE 确定输入向量中的唯一元素功能。然后您可以使用 ARRAYFUN 获得所需的输出和一个 anonymous function检查输入向量中每个唯一元素的数量:
>> y = [1 1 1 1 2 2 2 2 1 1 3 3 4 5]; >> prob_y = arrayfun(@(x)length(find(y==x)), unique(y)) / length(y) prob_y = 0.4286 0.2857 0.1429 0.0714 0.0714
关于Matlab - 计算向量中每个元素的概率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6933658/