Prob Matrix for binary sequence

for some integer 'n', I have a matrix M of size (2^n) x n containing all possible binary sequences. Another vector N of length 'n' that contains the probabilities of bit being zero. I want to compute the prob of each sequence without using for loops.
Example
n=2;
M = [0 0;0 1;1 0;1 1];
N = [Prob(N1=0)=0.3 Prob(N2=0)=0.2]
Prob(M1M2=00) = (0.3)*(0.2)
Prob(M1M2=01) = (0.3)*(1-0.2)
Prob(M1M2=10) = (1-0.3)*(0.2)
Prob(M1M2=11) = (1-0.3)*(1-0.2)

Réponses (1)

Matt J
Matt J le 15 Mar 2013

0 votes

Probabilities = prod(bsxfun(@times,M,1-N) +bsxfun(@times,~M,N),2);

3 commentaires

Using the above expression gives Probabilities =
0.5600
-0.5600
-0.5600
0.5600
whereas the desired result is 0.0600 0.1400 0.2400 0.5600
Matt J
Matt J le 15 Mar 2013
Modifié(e) : Matt J le 15 Mar 2013
Not for me. I get the correct values.
>> M = [0 0;0 1;1 0;1 1];N=[0.3,0.2]; Probabilities = prod(bsxfun(@times,M,1-N) +bsxfun(@times,~M,N),2)
Probabilities =
0.0600
0.2400
0.1400
0.5600
Walter Roberson
Walter Roberson le 15 Mar 2013
Note that the character before the M is the tilde, not subtraction.

Connectez-vous pour commenter.

Catégories

Question posée :

le 14 Mar 2013

Community Treasure Hunt

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

Start Hunting!

Translated by