Как получить числовое значение (десятичные дроби) из имени строки - PullRequest
0 голосов
/ 28 апреля 2018

В настоящее время у меня есть список файлов матов, помеченных как P0.01.mat- P10.mat, и я хотел бы получить числовое значение выбранного файла .mat. то, что у меня есть сейчас, дает мне только от P1.mat до P10.mat. Когда я запускаю это для строки P0.01.mat, она возвращает число 1.

    Files=dir(fullfile(datapath,'*.mat'));
    numfiles=length(Files);
    results=cell(numfiles,1);
    for k = 1:numfiles
    results{k}=Files(k).name; % lists all the names available
    end
    Ace=[results];
    A=Ace(1);  %selects the string 

     B = regexp(A,'\d*','Match');  %gets the numerals in the string 
     for ii= 1:length(B)
         if ~isempty(B{ii})
         Num(ii,1)=str2double(B{ii}(end));
         else
         Num(ii,1)=NaN;
         end
   end
   Num    

1 Ответ

0 голосов
/ 28 апреля 2018

Чтобы сопоставить число с необязательной десятичной точкой в ​​нем, используйте строку регулярного выражения [0-9]*\.?[0-9]+.

B = regexp(A,'[0-9]*\.?[0-9]+','Match');  %gets the numerals in the string

Ссылка: A: Разумный анализ научной нотации? (которая содержит регулярное выражение для более сложного представления значения с плавающей запятой).

...