Dear all, I have vector a (1x7) and cell b (1x7), how can I extract each cell depend on elements equal in a?
a= [ 1 2 3 3 4 5 6 6];
b= { [1 2 3] [ 3 6] [ 5 6 7] [ 5 60] [ 5 6 5] [ 6 7 1 0] [ 88 99] [ 7 8 99] }
result should be:
res= {[ 5 6 7] [ 5 60] [ 6 7 1 0] [ 88 99]}
Thanks...

 Réponse acceptée

Guillaume
Guillaume le 7 Fév 2017

1 vote

The latest explanation is much clearer:
a = [ 3 2 1 3 6 5 4 6];
b = { [1 2 3] [ 3 6] [ 5 6 7] [ 5 60] [ 5 6 5] [ 6 7 1 0] [ 88 99] [ 7 8 99] };
result = b(arrayfun(@(v) sum(a == v)>1, a))

Plus de réponses (1)

Stephen23
Stephen23 le 7 Fév 2017
Modifié(e) : Stephen23 le 7 Fév 2017

1 vote

>> a = [1,2,3,3,4,5,6,6];
>> b = {[1,2,3],[3,6],[5,6,7],[5,60],[5,6,5],[6,7,1,0],[88,99],[7,8,99]};
>> c = b(cellfun(@(v)~all(ismember(v,a)),b))
>> c{:}
ans =
5 6 7
ans =
5 60
ans =
6 7 1 0
ans =
88 99
ans =
7 8 99

4 commentaires

skysky2000
skysky2000 le 7 Fév 2017
Thanks Stephen, its include the last cell which is not equal ([7,8,99])?. c=res= {[ 5 6 7],[ 5 60],[ 6 7 1 0],[ 88 99],[7,8,99]}
thanks..
skysky2000
skysky2000 le 7 Fév 2017
Sorry you are right, the [7 8 99] include it. but [6 7 1 0] should be out. There are only 4 elements equal in vector a, that mean only 4 cell the output. thanks..
Guillaume
Guillaume le 7 Fév 2017
Kudos to Stephen for figuring out what you want (maybe!) but really, you need to express yourself a lot clearer.
"There are only 4 elements equal in vector a"
4 elements equal to what?
skysky2000
skysky2000 le 7 Fév 2017
Modifié(e) : skysky2000 le 7 Fév 2017
Thanks Guillaume. I meant when I applied Stephen soluation, didnt give me the right result. vector a has 4 element same (3,3,6,6), and what I want 4 cells relate it to these elements.
a= [ 3 2 1 3 6 5 4 6];
b= { [1 2 3] [ 3 6] [ 5 6 7] [ 5 60] [ 5 6 5] [ 6 7 1 0] [ 88 99] [ 7 8 99] }
result={[1 2 3] [ 5 60] [ 5 6 5] [ 7 8 99]}
Thanks...

Connectez-vous pour commenter.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by