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

Learn moreOpportunities for recent engineering grads.

Apply Today
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,

*No products are associated with this question.*

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

Show 1 older comment

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

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.

## 0 Comments