1

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

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

bc 
cf
4

2 回答 2

3

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

跳线

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

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

从字符串中提取子字符串

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

result = s([2 3])
于 2012-10-29T19:10:12.360 回答
1

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

于 2012-10-29T13:28:43.493 回答