Finding and replacing numbers with NaN
    5 ビュー (過去 30 日間)
  
       古いコメントを表示
    
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;
0 件のコメント
採用された回答
  Image Analyst
      
      
 2020 年 7 月 21 日
        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 件)
  Cris LaPierre
    
      
 2020 年 7 月 21 日
        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.
参考
カテゴリ
				Help Center および File Exchange で Logical についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


