Matlab - 计算向量中每个元素的概率

标签 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]

有没有一种方法可以在没有任何 forwhile 循环的情况下做到这一点?

最佳答案

可以使用 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/

相关文章:

matlab - 在 MATLAB 中转换矩阵

c++ - 如何将已经写入xml文件的OpenCV Mat转换回图像?

string - Matlab中使用strrep替换多个子字符串

matlab - 求解过度参数化系统中的变量

preferences - 通过命令行获取tab-size

matlab - 一次将一个数组与多个数字进行比较

matlab - 通过按向左和向右箭头键为 MATLAB 图制作动画

matlab - 如何自动标准化多个直方图以达到相同的最大水平?

matlab - 如何在神经网络Matlab中将训练数据制作为4D数组 - 输入数据的正确方法

matlab - 紧凑的 MATLAB 矩阵索引符号