Using cellfun and regexp question
    13 views (last 30 days)
  
       Show older comments
    
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 Comment
  Stephen23
      
      
 on 31 Jul 2020
				
      Edited: Stephen23
      
      
 on 31 Jul 2020
  
			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.
Accepted Answer
  the cyclist
      
      
 on 31 Jul 2020
        
      Edited: the cyclist
      
      
 on 31 Jul 2020
  
      I think this does what you want.
storedSamplerates{1} = 'SAMPLERATE:    50000';
storedSamplerates{2} = 'samplerate:200000';
cellfun(@(str)regexp(str,'\d*','match'),storedSamplerates)
More Answers (1)
  Stephen23
      
      
 on 31 Jul 2020
        
      Edited: Stephen23
      
      
 on 31 Jul 2020
  
      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 Comments
  the cyclist
      
      
 on 31 Jul 2020
				Yes, should definitely swap to this accepting this one! The cellfun is a needless complication in my solution.
See Also
Categories
				Find more on Characters and Strings 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!


