Not all cell converte to double

3 views (last 30 days)
Katarzyna
Katarzyna on 27 Aug 2013
Hello. I don't know how to convert cell to double and cut part of cell. This is my list:
list={'6.txt' '13.txt' '14.txt' '19.txt' '45.txt' '53.txt'};
and I need it without '.txt'.
Thanks in advance for any help.

Accepted Answer

dpb
dpb on 27 Aug 2013
>> sscanf([list{:}],'%d.txt')
ans =
6
13
14
19
45
53
>>
  2 Comments
Jan
Jan on 28 Aug 2013
This is surprisingly fast even for large cell strings. A further speedup can be achieved by using FEX: CStr2String, which seems to perform a better pre-allocation of the output:
sscanf(CStr2String(list), '%d.txt');
dpb
dpb on 28 Aug 2013
I'm not sure why you think decent performance herein is surprising, Jan? I'd think this would be pretty much expected...

Sign in to comment.

More Answers (2)

Walter Roberson
Walter Roberson on 27 Aug 2013
cellfun( @(s) sscanf(s, '%d'), list)
  1 Comment
dpb
dpb on 27 Aug 2013
Edited: dpb on 28 Aug 2013
That's good side effect w/ cellfun in this case--the error on the '.txt' portion of the input string goes silently away w/o writing the explicit format string, Walter. I took the other way out to avoid the anonymous function definition but in production yours is probably preferable.

Sign in to comment.


Azzi Abdelmalek
Azzi Abdelmalek on 27 Aug 2013
Edited: Azzi Abdelmalek on 27 Aug 2013
list=str2double(strrep(list,'.txt',''))

Community Treasure Hunt

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

Start Hunting!