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

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)

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

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.

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));

Asked:

on 30 Sep 2013

Answered:

on 30 Sep 2013

Community Treasure Hunt

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

Start Hunting!