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)

回答(1 个)

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

3 个评论

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
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
Note that the character before the M is the tilde, not subtraction.

请先登录,再进行评论。

类别

在 帮助中心 和 File Exchange 中查找有关 Operating on Diagonal Matrices 的更多信息

提问:

2013-3-14

Community Treasure Hunt

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

Start Hunting!

Translated by