Sim*_*mon 4 matlab
我有一个y可能具有以下形式的向量:
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循环这样做?
for
while
b3.*_*b3. 5
可以使用UNIQUE函数确定输入向量中的唯一元素.然后,您可以使用ARRAYFUN和一个匿名函数获取所需的输出,该函数检查输入向量中每个唯一元素的数量:
>> 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
归档时间:
14 年,9 月 前
查看次数:
7610 次
最近记录: