我有这种类型的数据:
1
2
3
3
4
1
现在,我想维护两个独立的数组: 一个将保留上述数字,另一个将保持相应的概率
values values_counter (proabability)
1 2/6
2 1/6
3 2/6
4 1/6
我已经编写了以下代码,但它打印出所有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
答案 0 :(得分:6)
我担心你的代码太复杂了。你基本上试图找到一个直方图,所以虽然我不知道你的代码有什么问题,但这是在Matlab中做到这一点的正确方法:
x = [1;2;3;3;4;1]
egdes = unique(x)
histc(x, edges)/numel(x)
我不确定你的问题在哪里得到了你的概率......
ans =
0.3333
0.1667
0.3333
0.1667