# How to compare two logical arrays

161 views (last 30 days)
Rhiannon Jones on 6 Jun 2019
Commented: Rhiannon Jones on 6 Jun 2019
Hi,
I would like to compare two logical cell arrays, creating a third logical cell array returning true for when index values of both logical cell arrays are true.
My error;
Undefined unary operator '~' for input arguments of type 'cell'.
Is there a way to do this for cell?
Many thanks
% the two different logical arrays produced by cellfun:
fun_stf_p = cellfun(@(x) x >= stf_p_lb & x <= stf_p_ub, PRES, 'UniformOutput', false);
fun_stf_s = cellfun(@(x) x >= stf_s_lb & x <= stf_s_ub, PSAL, 'UniformOutput', false);
% Create a third logical cell array for which both cell arrays return true
fun_stf = ~fun_stf_p & ~fun_stf_s; % doesn't work
##### 2 CommentsShowHide 1 older comment
Rhiannon Jones on 6 Jun 2019
Both cell arrays are a series of double arrays which match in dimension between the cell arrays, but change size within the cell array.

Matthew Sisson on 6 Jun 2019
Edited: Matthew Sisson on 6 Jun 2019
One option is to continue using cellfun for this, as follows:
fun_stf = cellfun(@(x,y) ~x & ~y,fun_stf_p,fun_stf_s)
Another option is to convert to a double and then back again. Is there a reason why you are using cell arrays in the first place? If vectors are all the same length, working with logical arrays will be easier & faster.
##### 2 CommentsShowHide 1 older comment
Rhiannon Jones on 6 Jun 2019
I'm guessing this would be x==1 & y==1 instead of ~x & ~y, which seems to be working