extract cell depend on vector?

1 view (last 30 days)
skysky2000
skysky2000 on 7 Feb 2017
Commented: skysky2000 on 7 Feb 2017
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...

Accepted Answer

Guillaume
Guillaume on 7 Feb 2017
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))

More Answers (1)

Stephen23
Stephen23 on 7 Feb 2017
Edited: Stephen23 on 7 Feb 2017
>> 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 Comments
Guillaume
Guillaume on 7 Feb 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 on 7 Feb 2017
Edited: skysky2000 on 7 Feb 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...

Sign in to comment.

Categories

Find more on Mathematics and Optimization 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!