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 Data Type Conversion 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!