Replace elements of a vector with different probability for 0 to 1, and 1 to 0

1 view (last 30 days)
Hi,
Is there a possibility to replace the zeros in A by 1, and the 1's in A by zero with fixed probability?
For example:
A = [0,1,1,0,1,0,1,0] and I want to replace 0 by 1 with probability 1/4 and 1 by 0 with probability 1/3. Thank you.

Answers (2)

ES
ES on 30 Sep 2013
You can use a for loop and counter. Might not be efficient. But still does the trick. Something like this,
for every element in A: if element in A is 0, and count of 0 is ==4:%this is for probability 1/4 A[i]==1; count=0;
  1 Comment
Nishaad
Nishaad on 30 Sep 2013
Tried something like this, but it replaces every 0 by 1 and every 1 by 0. I have an array, Sent, which is made up of 3/7th 0's and 4/7th 1's.
clear;clc;tic;
prob=3/7;
n=100;
pdatodo=1/3;
pdotoda=1/4;
Sent=rand(n,1)>prob;
Received=Sent;
for k=1:length(Sent)
if Sent(k)==0;
Received(k)=1>pdotoda;
elseif Sent(k)==1;
Received(k)=0>pdatodo;
end
end

Sign in to comment.


Roger Stafford
Roger Stafford on 30 Sep 2013
You don't need a for-loop. It's a problem in logic.
pdatodo=1/3;
pdotoda=1/4;
r = rand(size(Sent));
Received = (Sent&(r>pdatodo))|(~Sent&(r<=pdotoda));

Community Treasure Hunt

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

Start Hunting!