【问题标题】:Parsing 'Step Information: Rload=100 R1=1 (Run: 2/18)' in MATLAB在 MATLAB 中解析\'Step Information: Rload=100 R1=1 (Run: 2/18)\'
【发布时间】:2023-02-24 02:47:49
【问题描述】:

我收到来自软件的文本,我想将其导入 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' 但我意识到我无法解析这个 你甚至使用文本扫描吗?

请帮忙

【问题讨论】:

    标签: matlab parsing


    【解决方案1】:

    也许这有帮助

    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};
    

    如果您还可以解析此示例“运行:...”,您应该使用:

    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};
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      相关资源
      最近更新 更多