解析步骤信息:R负载=100 R1=1(运行:2/18)'在MATLAB中

twh00eeo  于 2023-03-03  发布在  Matlab
关注(0)|答案(1)|浏览(117)

我从软件接收到一个文本,我想将其导入MATLAB。在解析这一行时遇到了问题:

'Step Information: Rload=100 R1=1  (Run: 2/18)'

通用结构如下所示:

Step information: <ParamName1>=<value> <ParamName2>=<value> .. <ParamNameNth>=<value> (Run: <current step>/<Total number of Monte Carlo steps>)

由于参数的数量并不总是固定的,我想我应该先将参数名称和值'Rload = 100 R1 = 1'与其他参数分开,然后再解析它。

% Example line to parse
line = 'Step Information: Rload=100 R1=1  (Run: 2/18)';

% Parse the line using textscan
parsed_values = textscan(line, 'Step Information: %s (Run: %d/%d)');

这个代码根本不起作用,它甚至不能提取2和18。
我试图解析这个'Rload = 100 R1 = 1',我意识到我不能解析这个,你甚至使用文本扫描吗?
请帮帮忙

ewm0tg9j

ewm0tg9j1#

也许这个能帮上忙

str = 'Step Information: Rload=100 R1=1 (Run: 2/18)';
pattern = 'Rload=%d %*s R1=%d';
tokens = textscan(str, pattern);
rload = tokens{1};
r1 = tokens{2};

如果您还可以解析以下示例“Run:......”您应该用途:

tokens = textscan(str, '%*s %*s %*s %*s %*s %d/%d');
run = tokens{1};
total_runs = tokens{2};

如果你需要分析所有的数字尊重关键字,你应该这样的代码:

str = 'Step Information: Rload=100 R1=1 (Run: 2/18)';
pattern = 'Rload=%d %*s R1=%d %*s (Run: %d/%d)';
tokens = textscan(str, pattern);
rload_str = sprintf('Rload=%d', tokens{1});
r1_str = sprintf('R1=%d', tokens{2});
run = tokens{3};
total_runs = tokens{4};
rload = tokens{1};
r1 = tokens{2};

相关问题