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.

 Réponse acceptée

dpb
dpb le 27 Août 2013

1 vote

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

2 commentaires

Jan
Jan le 28 Août 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 le 28 Août 2013
I'm not sure why you think decent performance herein is surprising, Jan? I'd think this would be pretty much expected...

Connectez-vous pour commenter.

Plus de réponses (2)

Walter Roberson
Walter Roberson le 27 Août 2013

0 votes

cellfun( @(s) sscanf(s, '%d'), list)

1 commentaire

dpb
dpb le 27 Août 2013
Modifié(e) : dpb le 28 Août 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.

Connectez-vous pour commenter.

Azzi Abdelmalek
Azzi Abdelmalek le 27 Août 2013
Modifié(e) : Azzi Abdelmalek le 27 Août 2013

0 votes

list=str2double(strrep(list,'.txt',''))

Catégories

En savoir plus sur Characters and Strings dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by