从非常规文本文件中读取数据
以下示例演示如何使用 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
作为输入传递。由于每个数据字段都在一个新行上,因此分隔符为换行符 (\'\n\'
)。要将所有浮点数据合并到单个数组中,请将 CollectOutput
名称-值对组参数设置为 true
。
C = textscan(fileID,formatSpec,... \'Delimiter\', \'\n\', ... \'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