double array of 0's and 1's conversion help

3 views (last 30 days)
David C
David C on 20 Jun 2012
I have an array of 0's and 1's
Im trying to convert the 0's to nans and 1's to another value.
A(find(A==1)=256; %this part works
A(find(A==0)=NaN; %this part doesn't
when i try to replace the 0's, it replaces everything in the array with NaN, even though find(A==0) does return only the indices of where that array has a 0 value.
is there technical thing I'm missing here?

Answers (2)

Walter Roberson
Walter Roberson on 20 Jun 2012
A(A==1) = 256;
A(A==0) = NaN;
If you want to live a life of confusion, and you only have 0 and 1s in the matrix,
A = A ./ A * 256;
  4 Comments
Walter Roberson
Walter Roberson on 20 Jun 2012
Reduces the steps that can go wrong ?
David C
David C on 20 Jun 2012
sorry, i just forgot to put the brackets in while typing, i have them in my actual code

Sign in to comment.


David C
David C on 20 Jun 2012
just tried
A(A==1) = 256;
A(A==0) = NaN;
and the same thing happened. The A==1 part worked, but as soon as it tried to logical index the ones that were 0, it replaced everything with NaN
  2 Comments
Sean de Wolski
Sean de Wolski on 20 Jun 2012
What happens if you run this:
A = double(rand(10)>0.5);
A(A==1) = 256;
A(A==0) = NaN;
A
Walter Roberson
Walter Roberson on 20 Jun 2012
Try breaking it down and do some experiments to see which step is going wrong:
A
T = A == 0
B = A;
A(T) = NaN
B(1) = NaN
C = rand(size(A));
C(T) = NaN

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!