如何从字符串名称中获取数值(小数)
How to get numeric value(Decimals) from a string name
我目前有一个标记为 P0.01.mat- P10.mat 的 mat 文件列表,我想获取所选 .mat 文件的数值。我目前拥有的只是从 P1.mat 到 P10.mat。当我 运行 这对于一串 P0.01.mat 它的 returns 数字 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
要匹配其中包含可选小数点的数字,请使用正则表达式字符串 [0-9]*\.?[0-9]+
。
B = regexp(A,'[0-9]*\.?[0-9]+','Match'); %gets the numerals in the string
参考:A: Parsing scientific notation sensibly?(包含用于更复杂的浮点值表示的正则表达式)。
我目前有一个标记为 P0.01.mat- P10.mat 的 mat 文件列表,我想获取所选 .mat 文件的数值。我目前拥有的只是从 P1.mat 到 P10.mat。当我 运行 这对于一串 P0.01.mat 它的 returns 数字 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
要匹配其中包含可选小数点的数字,请使用正则表达式字符串 [0-9]*\.?[0-9]+
。
B = regexp(A,'[0-9]*\.?[0-9]+','Match'); %gets the numerals in the string
参考:A: Parsing scientific notation sensibly?(包含用于更复杂的浮点值表示的正则表达式)。