extract decimal number from a file name

2 visualizzazioni (ultimi 30 giorni)
Hello everyone,
Firwstly, Happy new year.
I have have a file name such as '2C2C', sometimes the number has a fraction for example '2.5C3C' or 2.5C3.5C'. I need to exract these number at all cases (with fraction and without).
Thanks in advance

Risposta accettata

Star Strider
Star Strider il 4 Gen 2021
Try this:
filnam = {'2C2C', '2.5C3.5C'};
nrs = cellfun(@(x)sscanf(x, '%fC%fC'), filnam, 'Unif',0)
Result = cell2mat(nrs).'
producing:
Result =
2 2
2.5 3.5
.
  2 Commenti
Ayman Mounir
Ayman Mounir il 4 Gen 2021
Thanks I appreciate it.
but i meant the file name would be 'NNN_2.5C3C_BlaBla'. So i ahve to extract the part which has 2.5C3C first.
Star Strider
Star Strider il 4 Gen 2021
This is turning out to be a moving target!
Try this:
filnam = {'NNN_2.5C3C_BlaBla'; 'NNN_2.5C3.5C_BlaBla'};
nrs = regexp(filnam, '(\d.\d)|\d', 'match')
nrs{1}, nrs{2}
producing:
nrs =
2×1 cell array
{1×2 cell}
{1×2 cell}
ans =
1×2 cell array
{'2.5'} {'3'}
ans =
1×2 cell array
{'2.5'} {'3.5'}
.

Accedi per commentare.

Più risposte (2)

KSSV
KSSV il 4 Gen 2021
str = '2C2C' ;
str = '2.5C3C' ;
% str = '2.5C3.5C' ;
idx = strfind(str,'C') ;
num1 = str2num(str(1:idx(1)-1))
num2 = str2num(str(idx(1)+1:idx(2)-1))
  1 Commento
Ayman Mounir
Ayman Mounir il 4 Gen 2021
Thanks I appreciate it.
but i meant the file name would be 'NNN_2.5C3C_BlaBla'. So i ahve to extract the part which has 2.5C3C first.

Accedi per commentare.


Stephen23
Stephen23 il 4 Gen 2021
The most efficient solution by far:
C = {'NNN_2.5C3C_BlaBla'; 'NNN_2.5C3.5C_BlaBla'};
M = sscanf([C{:}],'%*[^_]_%fC%fC_',[2,Inf]).'
M = 2×2
2.5000 3.0000 2.5000 3.5000

Categorie

Scopri di più su Programming in Help Center e File Exchange

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by