【问题标题】:Extracting strings from text files in MATLAB在 MATLAB 中从文本文件中提取字符串
【发布时间】:2012-10-29 09:31:52
【问题描述】:

如何使用文本文件中的值创建一个新变量,而不实际加载所有这些变量?

例如,我有两个文本文件:第一个在第 18 行包含 a**bc**d。第二个在同一位置包含 a**cf**d。我正在寻找的结果是:

bc 
cf

【问题讨论】:

    标签: matlab text-files text-parsing


    【解决方案1】:

    很遗憾,您的问题措辞不佳,但该示例为我提供了您想要实现的目标的线索。我希望以下内容有所帮助:

    跳线

    要跳过行,您可以有效地使用fgetlfgets 并丢弃其结果。这只是将文件指针前进到您想要的行。关于您的简化示例,如果您想跳过前 17 行并阅读第 18th,您可以执行以下操作:

    fid = fopen(somefile, 'r');
    for i = 1:17
        fgetl(fid);
    end
    s = fgets(fid);
    

    或者将每一行读入同一个变量(在我的示例中为s),覆盖其先前的值:

    fid = fopen(somefile, 'r');
    for i = 1:18
        s = fgetl(fid);
    end
    

    一个更短的替代方法是使用 textscan'HeaderLines' 选项:

    C = textscan(fid, '%s', 1, 'Delimiter', '\n', 'HeaderLines', 17);
    s = C{:};
    

    从字符串中提取子字符串

    由于字符串是字符数组(向量),因此您可以使用向量索引来提取所需的任何元素。例如,要从s = 'abcd'中提取位置2和3得到bc,可以使用表达式s([2 3]),如下所示:

    result = s([2 3])
    

    【讨论】:

    • 使用textscanHeaderLines 选项绝对是解决此问题的最简单方法,谢谢!
    【解决方案2】:

    我不确定我是否理解您的问题,但您可能需要查看 FSEEK 和 FGETL 的文档。 布雷特

    【讨论】:

    • 感谢布雷特的建议! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    相关资源
    最近更新 更多