获取ascii文件(标题)matlab的第一行

时间:2017-02-05 12:52:06

标签: matlab

我想只得到一个巨大的数据文件的第一行(大约80列和16 000行)。第一行是带有标题(文本)的行。我怎么得到它?

示例:

idA idHI    idYesterday idWW2   idUK

1 个答案:

答案 0 :(得分:1)

一种简单的方法可以是使用函数fgetl,它实际上是逐行读取文件。

  • 使用函数fopen
  • read模式打开文件
  • 使用fgetl阅读第一行
  • 使用函数fclose
  • 关闭输入文件

读取行以string

返回

如果您想获取字符串的单个标记,可以使用以下函数:

阅读第一行

fp=fopen('huge_file.txt','r');
first_line=fgetl(fp)
fclose(fp);

使用textscan

获取单个令牌
tok_list=textscan(first_line,'%s')

使用strtok

获取单个令牌

修改

如果分隔符是tab字符,则必须将其指定为char(9),即tab的ASCII代码,而不是转义序列{{ 1}}在strtok documentation

中报告

在以下示例中,使用了\t分隔符

char(9)

给定输入文件,例如

% [token,remain]=strtok(first_line,' ');
[token,remain]=strtok(first_line,char(9));

tok_list{1}=token
cnt=1;
while(1)
   if isempty(remain)
      break;
   end
   %[token,remain] = strtok(remain,' ');
   [token,remain] = strtok(remain,char(9));
   cnt=cnt+1;
   tok_list{cnt}=token
end

输出将是:

col_1   col_2   col_3   col_4
   16      2       3       13
    5     11      10        8
    9      7       6       12
    4     14      15        1

其中first_line = col_1 col_2 col_3 col_4 first_line数组

单个令牌是char

textscan

或使用tok_list = {4x1 cell} tok_list{1} ans = 'col_1' 'col_2' 'col_3' 'col_4'

strtok

tok_list = 'col_1' 'col_2' 'col_3' 'col_4' 是一个允许使用不同大小的标记的cellarray

希望这有帮助,

Qapla'