manipulate a method contain to compare two lists

2 vues (au cours des 30 derniers jours)
mazari ahmed
mazari ahmed le 8 Mar 2015
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'.

Réponse acceptée

Guillaume
Guillaume le 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

Plus de réponses (2)

Jan
Jan le 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 le 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

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by