在MATLAB中从文本文件中提取字符串

时间:2012-10-29 09:31:52

标签: matlab text-files text-parsing

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

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

bc 
cf

2 个答案:

答案 0 :(得分:3)

不幸的是,你的问题措辞不多,但这个例子为我提供了你想要实现的目标的线索。我希望以下内容有所帮助:

跳绳

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

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])

答案 1 :(得分:1)

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