查找向量中每个元素出现的概率

Xar*_*ara 0 matlab

我有这种类型的数据:

         1
         2
         3
         3
         4
         1
Run Code Online (Sandbox Code Playgroud)

现在,我想维护两个独立的数组:一个将保留上述数字,另一个将保持相应的概率

values      values_counter (proabability)
   1                     2/6
   2                     1/6
   3                     2/6
   4                     1/6
Run Code Online (Sandbox Code Playgroud)

我写了下面的代码,但它打印出所有6个数字,即1 2 3 3 4 1,并且它们的可能性是统一的.请帮助我在下面给出的代码中犯错的地方

 values=[];
 values_counter=[];
for d=1:1:648
size_of_array=size(values);
values_array_size=size_of_array(2);

if(values_array_size~=0)

for b=1:1:values_array_size
    if (columnB(d)~=values(b))
        values(values_array_size+1)=columnB(d); // columnB(d) has different values (may   have duplicate values)
        dfastates_counter(values_array_size+1)=1/648;
    else
        values_counter(b)=(values_counter(b)+1)/648;
    end
end

else
    values(1)=columnB(d);
    values_counter(1)=1/648;
end

end


   values
   values_counter
Run Code Online (Sandbox Code Playgroud)

Dan*_*Dan 6

我担心你的代码太复杂了.你基本上是想找到一个直方图,所以虽然我不知道你的代码有什么问题,但这是在Matlab中做到这一点的正确方法:

x = [1;2;3;3;4;1]
egdes = unique(x)
histc(x, edges)/numel(x)
Run Code Online (Sandbox Code Playgroud)

我不确定你的问题在哪里得到你的概率......

ans =

    0.3333
    0.1667
    0.3333
    0.1667
Run Code Online (Sandbox Code Playgroud)

  • 你有拼写错误.看看你的第一个代码 (3认同)
  • 如果你想看直方图使用`hist` (2认同)