0

私はこのタイプのデータを持っています:

         1
         2
         3
         3
         4
         1

ここで、2 つの別個の配列を維持したいと考えています。1 つは上記の数値を保持し、もう 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
4

1 に答える 1

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
于 2013-07-04T07:33:22.443 に答える