Using cellfun and regexp question
14 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I have a cell called storedSamplerates = 1X9;
Each cell has a string ex:
storedSamplerates{1} = 'SAMPLERATE: 50000'
storedSamplerates{2} = 'samplerate:200000'
etc.....
I am trying to remove the 'SAMPLERATE:' and 'samplerate:' portion of the cells regardless of case, so only the number is left. I can successfully use regexp with 'ignorecase', to remove this in a loop with:
sampleRates = regexp(storedSamplerates{i},'(\d+)','match','ignorecase');
So that im only left with numbers.
sampleRates{1} = '50000';
sampleRates{2} = '200000'
etc....
But I wanted to try using cellfun to have simpler code and have failed:
sampleRates(cellfun(@(x) regexp(x ,'(\d+)','match','ignorecase'),storedSamplerates));
Using cellfun and regexp seems possible,I just dont know where im messing up?
1 件のコメント
Stephen23
2020 年 7 月 31 日
編集済み: Stephen23
2020 年 7 月 31 日
Note that because your regular expression does not match any alphabetic characters (it only matches digits) the 'ignorecase' option is completely superfluous. It does nothing, zilch, nada, zero. Get rid of it.
Also the grouping parentheses do nothing. Get rid of them.
採用された回答
the cyclist
2020 年 7 月 31 日
編集済み: the cyclist
2020 年 7 月 31 日
I think this does what you want.
storedSamplerates{1} = 'SAMPLERATE: 50000';
storedSamplerates{2} = 'samplerate:200000';
cellfun(@(str)regexp(str,'\d*','match'),storedSamplerates)
その他の回答 (1 件)
Stephen23
2020 年 7 月 31 日
編集済み: Stephen23
2020 年 7 月 31 日
The simple and efficient solution is to use the 'once' option:
sampleRates = regexp(storedSamplerates,'\d+','match','once');
% ^^^^^^^^^^^^^^^^^ entire array, no indexing!
Wrapping regexp in cellfun does much the same thing, just slower and more complex.
2 件のコメント
the cyclist
2020 年 7 月 31 日
Yes, should definitely swap to this accepting this one! The cellfun is a needless complication in my solution.
参考
カテゴリ
Help Center および File Exchange で Data Type Identification についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!