manipulate a method contain to compare two lists

3 views (last 30 days)
l have trouble with the code below. l want to compare two lists of elements to : 1)know wether the neighbours of j are included in k 2)know wether the set of j is equal to k
but matlab returns me an error
if (contains(neighbour_n{k}, neighbour_n{j})||(neighbour_n{j}==neighbour_n{k}));
Undefined function or method 'contains' for input arguments of type 'double'.

Accepted Answer

Guillaume
Guillaume on 8 Mar 2015
contains is not a standard matlab function. You can test set membership wih ismember. it'll return a vector of [true, false] values, so if you just want a scalar, yo need to use all.
Similarly, == returns a vector of [true, false] and only works if both matrices / vectors being compared are the same size. To test that two (sorted) sets are identical you'd use |isequal
Thus,
if all(ismember(neighbour_n{j}, set_n{k})) && isequal(set_n{j}, set_n{k})
%do something

More Answers (2)

Jan
Jan on 8 Mar 2015
The error message tells you, that there is no function called "contains". Why do you assume that there is such a function?
Are you sure that you need the elementwise comparison "==" or would isequal be better?

mazari ahmed
mazari ahmed on 14 Mar 2015
it's working look here :
if (((all(ismember(neighbour_n{k}, neighbour_n{j})))||(isequal(neighbour_n{j}, neighbour_n{k})))&&(k~=j));
end

Categories

Find more on Structures in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!