Matlab - 计算向量中每个元素的概率
我有一个向量 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
循环?
I am having a vector y
which may have the following form:
y = [1 1 1 1 2 2 2 2 1 1 3 3 4 5]
And I want to attach a probability to each element within y
as it would've been generated by a random variable. In this case, the element 1 would have the probability 6/14, the element 2 would have the probability 4/14, the element 3 the value 2/14 and the elements 4 and 5 the value 1/14.
And basically, the result should look like:
prob_y = 1/14 * [6 6 6 6 4 4 4 4 6 6 2 2 1 1]
Is there a way of doing this without any for
or while
loops?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
输入向量中的唯一元素可以使用 UNIQUE 函数确定。然后,您可以使用 ARRAYFUN 和 匿名函数,用于检查输入向量中每个唯一元素的数量:
The unique elements in your input vector can be determined using the UNIQUE function. You can then get the desired output using ARRAYFUN and an anonymous function that checks the number of each unique element in your input vector:
创建一个直方图,其中包含与最小值和最小值之间的差异一样多的箱。最大元素(加一以获得总范围),然后通过除以原始向量中的元素数量来标准化。
像这样的东西:
[编辑]要回答更新的问题:使用
y
从p
中选择索引,如下所示:Create a histogram with as many bins as the difference between your min & max element (plus one to get total range), then normalize by dividing by the number of elements in you original vector.
Something like this:
[Edit] To answer your updated question: use
y
to select the indices fromp
, like this:这是使用 ACCUMARRAY 的示例:
概率:
您可以看到摘要出现次数为:
请注意,我正在使用 GRP2IDX处理诸如
1.3
或不从1
开始的整数的情况。Here is an example using ACCUMARRAY:
The probabilities:
You can see a summary of occurrences as:
Note that I am using GRP2IDX to handle cases like
1.3
or integers not starting at1
.