Matlab help with Vectors

• Apr 20th 2010, 10:51 PM
john2010
Matlab help with Vectors
Hi,

I need some help with vectors in Matlab.
I have a vector A with 100 elements. From previous calculations, 80 of the elements are 1 and the rest are zero.
But I need to make the vector with half of its element "zero" and the remaining half "one" by randomly turning some one's to zero.

So I need to turn 30 (out of 80 currently in the vector) 1's into zero and I have to do it randomly. Can anyone help me with this problem?

Thanks,
John.
• Apr 20th 2010, 11:27 PM
CaptainBlack
Quote:

Originally Posted by john2010
Hi,

I need some help with vectors in Matlab.
I have a vector A with 100 elements. From previous calculations, 80 of the elements are 1 and the rest are zero.
But I need to make the vector with half of its element "zero" and the remaining half "one" by randomly turning some one's to zero.

So I need to turn 30 (out of 80 currently in the vector) 1's into zero and I have to do it randomly. Can anyone help me with this problem?

Thanks,
John.

Try (the untested code):

Code:

```B=find(A == 1) C=zeros(size(A)); x=randperm(length(B)); idx=x(1:50); C(idx)=1; A=C;```
CB
• Apr 21st 2010, 09:19 AM
john2010
Quote:

Originally Posted by CaptainBlack
Try (the untested code):

Code:

```B=find(A == 1) C=zeros(size(A)); x=randperm(length(B)); idx=x(1:50); C(idx)=1; A=C;```
CB

Thanks for the reply. I tested the code and it gives me 50 zero's and 50 one's but the problem is all the 1's bits towards the end of the vector are deleted (instead of being random deletion). I hope you can help me with this. Thanks a lot.
• Apr 21st 2010, 01:11 PM
CaptainBlack
Quote:

Originally Posted by john2010
Thanks for the reply. I tested the code and it gives me 50 zero's and 50 one's but the problem is all the 1's bits towards the end of the vector are deleted (instead of being random deletion). I hope you can help me with this. Thanks a lot.

Code:

```B=find(A == 1) C=zeros(size(A)); x=randperm(length(B)); idx=B(x(1:50)); C(idx)=1; A=C;```