How to count no. of time state occur in sequence and then divide by sequence no.?

1 次查看(过去 30 天)
Suppose I have a sequence 1,3,3,1,2,1,4,2,3,1,4,2,4,4,4,3,1,2,5,1 I have to count no. of times each state occur and then divide by sequence length and then take product, here 1 occur 6 times, 2 for 4, 3 for 4, 4 for 5 and 5 for 1 times occurring and sequence length is 20, so my final answer should be (6/20)*(4/20)*(4/20)*(5/20)*(1/20)=0.00014.

回答(3 个)

Stephen23
Stephen23 2016-5-7
编辑:Stephen23 2016-5-7
>> V = [1,3,3,1,2,1,4,2,3,1,4,2,4,4,4,3,1,2,5,1];
>> [~,~,idx] = unique(V);
>> prod(hist(idx,1:max(idx))/numel(V))
ans =
0.00015
Note:
>> (6/20)*(4/20)*(4/20)*(5/20)*(1/20)
ans =
0.00015

Andrei Bobrov
Andrei Bobrov 2016-5-7
a =[1,3,3,1,2,1,4,2,3,1,4,2,4,4,4,3,1,2,5,1];
[a1,~,c] = unique(a);
out = prod(accumarray(c,1)/numel(a));

Azzi Abdelmalek
Azzi Abdelmalek 2016-5-7
编辑:Azzi Abdelmalek 2016-5-7
v=[1,3,3,1,2,1,4,2,3,1,4,2,4,4,4,3,1,2,5,1]
out=prod(nonzeros(accumarray(v',1))/20)

类别

Help CenterFile Exchange 中查找有关 Markov Chain Models 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by