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

6 ビュー (過去 30 日間)
M G
M G 2011 年 11 月 11 日
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 :)

採用された回答

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

その他の回答 (2 件)

Wayne King
Wayne King 2011 年 11 月 11 日
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 件のコメント
Wayne King
Wayne King 2011 年 11 月 11 日
look at b that contains what you want
M G
M G 2011 年 11 月 11 日
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|.

サインインしてコメントする。


Fangjun Jiang
Fangjun Jiang 2011 年 11 月 11 日
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 件のコメント
Andrei Bobrov
Andrei Bobrov 2011 年 11 月 11 日
Hi Fangjun! Variant:
b = regexp(a,',','split');
b = sortrows(cat(1,b{:})')'
b = b(:,end)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeOperators and Elementary Operations についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by