Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

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

som

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.

Azzi Abdelmalek

Contact us