MATLAB读取文件——从非常规文本文件中读取数据
从非常规文本文件中读取数据
以下示例演示如何使用 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