Finding and replacing numbers with NaN

1 view (last 30 days)
Hello,
I have a matrix where the numbers only made up of 9 are fill values and should be replaced by NaN.;
For eg: There are numbers in all sorts of combinations : 99.999, 99999.99, 9999.9 99.999999, 999999.99 ....
A bit lost on how to proceed,
Making a list like below is not easy because there are n number of combinations which is not known
P(P==9999999.99)=NaN;
P(P==999999.99)=NaN;
P(P==9999.99)=NaN;
P(P==99999.99)=NaN;

Accepted Answer

Image Analyst
Image Analyst on 21 Jul 2020
Try ismembertol(). Something like (untested)
Lia = ismembertol(P, 9, 0.0001);
P(Lia) = NaN;
Lia = ismembertol(P, 9.9, 0.0001);
P(Lia) = NaN;
Lia = ismembertol(P, 9.99, 0.0001);
P(Lia) = NaN;
Hopefully there is just a limited number of cases, like 10 or so. If you really might have dozens of possibilities then you should create a list somehow, like perhaps a for loop with sprintf() and str2double
for k1 = 1 : 10
str = repmat('9', [1, k1])
for k = 1 : length(str)
str2 = [str(1:k), '.', str(k+1:end)]
num = str2double(str2)
end
end
  1 Comment
SChow
SChow on 21 Jul 2020
Many thanks, making a list like you suggested works wonders

Sign in to comment.

More Answers (1)

Cris LaPierre
Cris LaPierre on 21 Jul 2020
I would suggest using the standardizemissing function. I don't think you are going to be able to get around having to make a list, though. I can't think of a good way for MATLAB to recognize numbers just containing 9's.
  1 Comment
SChow
SChow on 21 Jul 2020
Thanks for your answer,
I came across standardizemissing, however as you say making a list of all possible numbers made up of all 9s is very difficult.,

Sign in to comment.

Tags

Community Treasure Hunt

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

Start Hunting!