Finding and replacing numbers with NaN
조회 수: 4 (최근 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!