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

2 ビュー (過去 30 日間)
David C
David C 2012 年 6 月 20 日
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?

回答 (2 件)

Walter Roberson
Walter Roberson 2012 年 6 月 20 日
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 件のコメント
Walter Roberson
Walter Roberson 2012 年 6 月 20 日
Reduces the steps that can go wrong ?
David C
David C 2012 年 6 月 20 日
sorry, i just forgot to put the brackets in while typing, i have them in my actual code

サインインしてコメントする。


David C
David C 2012 年 6 月 20 日
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 件のコメント
Sean de Wolski
Sean de Wolski 2012 年 6 月 20 日
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 2012 年 6 月 20 日
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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by