Hi all,
I have two matrics e.g. "a" & "b", which contains some "NaN" elements and numbers less than 1.
a=[NaN 0.4539 0.4532; NaN 0.4536 NaN]; b=[NaN 0.4533 0.4538; NaN 0.4531 NaN];
I want to see if "a" and "b" are equal with NaNs values ? the desired decimal places is 3.
How can I write such program?
thanks in advance,
No products are associated with this question.
a=round(a*1000)/1000; b=round(b*1000)/1000; a(isnan(a))=0; b(isnan(b))=0; test=all(all((a==b)))
% if test =1 then a=b
Your are right Matt. I had in mind to revise it after work, I was telling myself that a(isnan(a))=0; was suspicious.
the corrected code
a=[NaN 0.4539 0.4532; NaN 0.4536 NaN]; b=[NaN 0.4539 0.4532; 0 0.4536 NaN]; test1=all(all(isnan(a)==isnan(b))) a=round(a*1000)/1000; b=round(b*1000)/1000; isnan(a) a(isnan(a))=0; b(isnan(b))=0; test2=all(all((a==b))) test=test1 & test2
I am sur there is a better way to do it
Recent versions now have the ISEQUALN function, which is exactly the same thing as ISEQUALWITHEQUALNANS except the name is much easier to type.
0 Comments