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

New to MATLAB?

being equal two matrics contaning NaNs and numbers smaller than 1

Asked by som

som

on 2 Oct 2012
Accepted Answer by Azzi Abdelmalek

Azzi Abdelmalek

 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

som

Tags

Products

No products are associated with this question.

1 Answer

Answer by Azzi Abdelmalek

Azzi Abdelmalek

on 2 Oct 2012
Edited by Azzi Abdelmalek

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

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

Azzi Abdelmalek

on 2 Oct 2012

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

Teja Muppirala

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

Azzi Abdelmalek

Contact us