How can I extract an array of numbers from a text-formatted cell array of strings.
    2 views (last 30 days)
  
       Show older comments
    
I have read some data from a spreadsheet. The values are times, but formatted with s, m or h as a suffix to indicate seconds, minutes or hours. see example below,
I'd like to convert all of them to seconds, with NaN for the blank ones.
Is there an elegant way to do this?
Like this:
    {'20s'                                        }
    {'15m'                                        }
    {0×0 char                                     }
    {'24s'                                        }
    {0×0 char                                     }
    {'44s'                                        }
    {'3h'                                         }
    {'40m'                                        }
    {'20s'                                        }
    {0×0 char                                     }
    {'14s'                                        }
0 Comments
Accepted Answer
More Answers (2)
  Voss
      
      
 on 26 Apr 2024
        data = {
    '20s'
    '15m'
    ''
    '24s'
    ''
    '44s'
    '3h'
    '40m'
    '20s'
    ''
    '14s'
    };
C = regexp(data,'(\d+)([hms])','tokens','once');
idx = ~cellfun(@isempty,C);
C = vertcat(C{idx});
val = str2double(C(:,1));
[~,unit] = ismember(C(:,2),{'s','m','h'});
result = NaN(size(data));
result(idx) = val.*60.^(unit-1);
disp(result)
0 Comments
See Also
Categories
				Find more on Cell Arrays 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!

