MATLAB Answers

som

being equal two matrics contaning NaNs and numbers smaller than 1

Asked by som
on 2 Oct 2012
 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,

  0 Comments

Tags

Products

No products are associated with this question.

1 Answer

Answer by Azzi Abdelmalek
on 2 Oct 2012
Edited by Azzi Abdelmalek
on 2 Oct 2012
 Accepted answer
 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

  4 Comments

Azzi Abdelmalek
on 2 Oct 2012

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

Azzi Abdelmalek
on 2 Oct 2012

the answer isequalwithequalnans(a,b) was suggested and deleted.

Teja Muppirala
on 3 Oct 2012

Recent versions now have the ISEQUALN function, which is exactly the same thing as ISEQUALWITHEQUALNANS except the name is much easier to type.


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today