How to extract the values that I want in a cell array?

1 view (last 30 days)
Hey all,
If we have: a={'1,17951,1,0' ; '1,20345,1,0' ; '1,22950,1,0' ; '1,25360,1,0'};
and I want to exclude 1,...,1,0 which are the same in all and as a result have cell array b as b = {17951 ; 20345 ; 22950 ; 25360}; how can I do that?
Thank you so much for your hint in advance.
Mehdi :)

Accepted Answer

Andrei Bobrov
Andrei Bobrov on 11 Nov 2011
b = regexp(a,'\d\d\d\d\d','match')
b = cat(1,b{:})

More Answers (2)

Wayne King
Wayne King on 11 Nov 2011
How is this different than the answer I gave before?
a={1,17951,1,0 ; 1,20345,1,0 ; 1,22950,1,0 ; 1,25360,1,0};
b = cellfun(@(x) x(x>1),a,'uni',0);
b(cellfun(@isempty,b))=[];
  2 Comments
M G
M G on 11 Nov 2011
No, this one is different. The previous one worked perfectly. I realized that my actual values are in |''| e.g. |'1,17951,1,0'|instead of |1,17951,1,0|.

Sign in to comment.


Fangjun Jiang
Fangjun Jiang on 11 Nov 2011
I would use the comma as a way to split them and the select the second column.
a={'1,17951,1,0' ; '1,20345,1,0' ; '1,22950,1,0' ; '1,25360,1,0'};
b=regexp(a,',','split');
c=cellfun(@(x) x{1,2},b,'uni',false);
d=str2double(c)
  1 Comment
Andrei Bobrov
Andrei Bobrov on 11 Nov 2011
Hi Fangjun! Variant:
b = regexp(a,',','split');
b = sortrows(cat(1,b{:})')'
b = b(:,end)

Sign in to comment.

Categories

Find more on Data Types 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!