# comparing matices that contain numbers and NaNs

13 views (last 30 days)
antonet on 4 Jul 2012
I have 2 cell matrices R and W and I want to check if they contain the same elements. Specifically, I want to compare R which is obtained from
with another matrix W.Both matrices are cell matrices and can also contain NaN entries.
My goal: If my calculations are correct then
kk=W(7 ,3:end); should contain the same elements with
zz1=R(7,3:end);
or zz2=R(8,3:end);
So to test this I do something like
if zz==xx1 | zz== xx2
'OK' else 'Not OK' EndThe problem is that
zz==xx1
??? Undefined function or method 'eq' for input arguments of type 'cell'.
So I use cell2mat(zz)==cell2mat(xx1) and it works.
But if zz and xx1 contain NaN then for some reason I cannot use the cell2mat() approach
I am looking for a general approach that will enable me to do that comparison whether I have NaN and numbers or only numbers’
thanks
Jan on 5 Jul 2012
@Readers: It seems like anonet wants to compare cells, which contain numerical and string values.

Andrei Bobrov on 5 Jul 2012
Edited: Andrei Bobrov on 5 Jul 2012
variant of comparison cell arrays (edit)
A = {...
[84] [ 93] [ 109]
[99] [NaN] [ 62]
[29] [123] 'dgdgdg'};
B = {...
[84] [ 93] [ 109]
[99] [NaN] [ 62]
[29] [123] 'dgdgdg'};
A1=A;
B1=B;
A1(cellfun(@(x)all(isnan(x)),A)) = {0};
B1(cellfun(@(x)all(isnan(x)),B)) = {0};
out = isequal(A1,B1);
Andrei Bobrov on 5 Jul 2012
Hi Antonet! Thank you for "Accepted answer", but I mean that Jan's answer better.

Jan on 5 Jul 2012
C1 = {'String1', 23, -17, NaN, 1:29);
C2 = {'String2', 24, -17.3, 21, 1:30);
C3 = {'String1', 23, -17, NaN, 1:29);
% |C1==C2| fails!
isequalwithequalnans(C1, C2)
isequalwithequalnans(C1, C3)
I cannot test this currently. When NaNs should be assumed to be different, isequal would do it.
antonet on 5 Jul 2012
what is +1 means?

Kevin Claytor on 4 Jul 2012
My guess from searching the help docs for 'cell' gives;
m = cell2mat(c) converts a multidimensional cell array c with contents of the same data type into a single matrix, m.
Jan on 5 Jul 2012
@antonet: Please provide the necessary information in the original question, because readers in this forum will read it at first. Therefore you can edit the question.