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

# 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?`

## Products

No products are associated with this question.

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

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.