Compute probability of different states in a binary distribution

4 次查看(过去 30 天)
Hello,
I have table array that is 300X1 consisting of a binary sequence [0,1,0,0,1,1,1,1,0,0,0,0,1...]
I would like to compute the probability that every second order value exists. Meaning how many 00, 01, 10, and 11 exist in the sequence. Do you have any Suggestions on how to go about it?.
Thank you
  2 个评论
David Hill
David Hill 2019-10-1
Does 0 0 0 0 count as two 00 sequences and 1 1 1 1 0 counts as two 11 sequences or one 11 and one 10? In other words what are the rules for counting the sequences? Do you always start counting from the first element?
Danae Parissi
Danae Parissi 2019-10-1
I start counting from the first element and try to find the duads in a serial way. Meaning that in the sequence 01110000100110
there is 01 11 00 00 10 01 10
so there is 2 diplets of 01, one of 11, 2 of 00 and 2 of 10.

请先登录,再进行评论。

采纳的回答

Dimitris Kalogiros
Dimitris Kalogiros 2019-10-1
clc; clearvars
% input data
N=300; % always even
x=randi([0, 1], N, 1);
% two bits words
% 00->0 , 01->1 , 10->2 , 11->3
xmsb=x(1:2:end);
xlsb=x(2:2:end);
y=2*xmsb+xlsb;
% calculation of probability
[P,edges] = histcounts(y, 'Normalization', 'probability');
yIntervalCenters=(1/2)*(edges(1:end-1)+edges(2:end));
figure; stem(yIntervalCenters, P); ylabel('probability'); grid on;
  5 个评论
Danae Parissi
Danae Parissi 2019-10-2
Could you help me to calculate the propability within a subset (let say within the first 30 values of the sequence?) and then the other 30 values and so on and so forth?
Dimitris Kalogiros
Dimitris Kalogiros 2019-10-2
You have just to apply this piece of code on chunks of the input data.
I'm giving an example:
clc; clearvars;
close all;
% input data
N=300; % always even
data=randi([0, 1], N, 1);
setLength=30;
for k=0:setLength:N-setLength
% extract an interval of data
x=data(k+1:1:k+setLength);
% two bits words
% 00->0 , 01->1 , 10->2 , 11->3
xmsb=x(1:2:end);
xlsb=x(2:2:end);
y=2*xmsb+xlsb;
% calculation of probability
edges=-0.5:1:3.5;
[P,~] = histcounts(y, edges, 'Normalization', 'probability');
yIntervalCenters=(1/2)*(edges(1:end-1)+edges(2:end));
figure(1);
stem(yIntervalCenters, P, 'LineWidth', 2); ylabel('probability');
grid on; ylim([0, 1]);
pause(1);
end
I've included some extra graphical tricks

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by