Not all cell converte to double

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

>> sscanf([list{:}],'%d.txt')
ans =
6
13
14
19
45
53
>>

2 Comments

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');
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)

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',''))

Categories

Asked:

on 27 Aug 2013

Community Treasure Hunt

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

Start Hunting!