MATLAB Answers

extract decimal number from a file name

조회 수: 3(최근 30일)
Ayman Mounir
Ayman Mounir 2021년 1월 4일
댓글: Ayman Mounir 2021년 1월 6일
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

채택된 답변

Star Strider
Star Strider 2021년 1월 4일
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
Star Strider
Star Strider 2021년 1월 4일
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'}
.

댓글을 달려면 로그인하십시오.

추가 답변(2개)

KSSV
KSSV 2021년 1월 4일
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
Ayman Mounir
Ayman Mounir 2021년 1월 4일
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.

댓글을 달려면 로그인하십시오.


Stephen
Stephen 2021년 1월 4일
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
  댓글 수: 1
Ayman Mounir
Ayman Mounir 2021년 1월 6일
Thanks It works, and happy new year.

댓글을 달려면 로그인하십시오.

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by