如何从字符串名称中获取数值(Decimals)

时间:2018-04-27 21:50:59

标签: matlab mat-file

我目前有一个标记为P0.01.mat- P10.mat的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 :(得分:0)

要匹配带有可选小数点的数字,请使用正则表达式字符串[0-9]*\.?[0-9]+

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

参考:A: Parsing scientific notation sensibly?(包含用于更复杂的浮点值表示的regexp)。