从非常规文本文件中读取数据
以下示例演示如何使用 textscan 函数从非常规文件中导入数据。在使用 textscan 时,您的数据无需为常规的行列模式,但必须为重复模式。
创建一个名为 nonrect.dat 的文件,其中包含以下内容(复制并粘贴到文本编辑器):
begin v1=12.67 v2=3.14 v3=6.778 end begin v1=21.78 v2=5.24 v3=9.838 end
使用 fopen 函数打开要读取的文件。
fileID = fopen('nonrect.dat');
fopen 返回一个文件标识符 fileID,textscan 调用该标识符从文件中读取数据。
使用格式设定符和分隔符参数描述数据的模式。典型的格式设定符包括:表示字符向量的 '%s',表示整数的 '%d' 或者表示浮点数的 '%f'。要导入 nonrect.dat,请使用格式设定符 '%*s' 指示 textscan 跳过包含 begin 和 end 的行。将字面值 'v1='、'v2=' 和 'v3=' 作为格式设定符的一部分,这样 textscan 也将忽略这些字面值。
formatSpec = '%*s v1=%f v2=%f v3=%f %*s';
使用 textscan 导入数据。将文件标识符 formatSpec 作为输入传递。由于每个数据字段都在一个新行上,因此分隔符为换行符 ('
')。要将所有浮点数据合并到单个数组中,请将 CollectOutput 名称-值对组参数设置为 true。
C = textscan(fileID,formatSpec,...
'Delimiter', '
', ...
'CollectOutput', true)
C =
[2x3 double]
textscan 返回元胞数组 C。
关闭文件。
fclose(fileID);
查看 C 的内容。
celldisp(C)
C{1} =
12.6700 3.1400 6.7780
21.7800 5.2400 9.8380