主要内容

textscan

从文本文件或字符串阅读格式化数据

描述

例子

C= TextScan(fileid.formatspec.将打开的文本文件中的数据读入单元格数组,C.文本文件由文件标识符指示,fileid..使用福彭打开文件并获取fileid.值。当您完成文件读取后,通过调用fclose(文件ID)

textscan尝试将文件中的数据与中的转换说明符匹配formatspec.这个textscan函数重新应用formatspec.在整个文件中,并在不匹配时停止formatspec.对数据进行修改。

例子

C= TextScan(fileid.formatspec.N使用formatspec.N时代,哪里N是正整数。要在N循环,呼叫textscan再次使用原件fileid.如果you resume a text scan of a file by callingtextscan使用相同的文件标识符(fileid.), 然后textscan在上次读取结束时自动恢复读取。

例子

C= TextScan(空空的formatspec.从字符向量读取文本空空的进入单元阵列C.从字符向量读取文本时,重复调用textscan每次从开始重新启动扫描。要从最后一个位置重新启动扫描,请求a位置输出

textscan尝试匹配字符向量中的数据空空的使用中指定的格式formatspec.

C= TextScan(空空的formatspec.N使用formatspec.N时代,哪里N为正整数。

例子

C= TextScan(___名称,值指定使用一个或多个选项的选项名称,值除了前面语法中的任何输入参数之外,还有一对参数。

例子

C位置]=文本扫描(___返回文件中的位置或扫描结束时的字符向量作为第二个输出参数。对于一个文件,这是ftell(文件ID)我会在打电话后回来textscan.对于字符向量,位置表示有多少个字符textscan阅读

例子

全部崩溃

读取包含浮点数的字符向量。

空空的='0.41 8.24 3.57 6.24 9.27';C = textscan(空空的,“%f”);

说明符“%f”在里面formatspec.告诉textscan匹配中的每个字段空空的到双精度浮点数。

显示单元格数组的内容C

celldisp (C)
C{1}=0.4100 8.2400 3.5700 6.2400 9.2700

读取相同的字符向量,并将每个值截断为一个十进制数字。

C = textscan(空空的,'%3.1f%* 1d');

说明符%3.1f表示3位数的字段宽度和1的精度。textscan函数总共读取3位数,包括小数点和小数点后的十进制点和1位数。说明者,%*1d,他告诉textscan跳过剩下的数字。

显示单元格数组的内容C

celldisp (C)
C{1}=0.4000 8.2000 3.5000 6.2000 9.2000

读取表示一组十六进制数的字符向量。表示十六进制数的文本包括数字0-9,信一个-f一个-F,以及可选的前缀0x0X

中的字段匹配己烯对于十六进制数,请使用'%X'说明符。这个textscan函数将字段转换为无符号64位整数。

hexnums ='0xFF 0x100 0x3C5E A F 10';C = textscan (hexnums'%X'
C=1x1单元阵列{6x1 uint64}

显示C作为一排矢量。

转置(C {:})
ans =1x6 uint64行向量255 256 15454 10 15 16

您可以将字段转换为8、16、32或64位的有符号或无符号整数己烯要使用带符号的32位整数,请使用'%xs32'说明符。

C = textscan (hexnums'%xs32');转置(C {:})
ans =1x6 int32行向量255 256 15454 10 15 16

您还可以指定用于解释输入的字段宽度。在这种情况下,前缀将计入字段宽度。例如,如果将字段宽度设置为3,如中所示%3x然后textscan拆分文本“0xAF 100”分成三段文字,'0xA''F''100'. 它将三段文本视为不同的十六进制数。

c = textScan(“0xAF 100”“%3x”);转置(C {:})
ans =1x3 uint64行向量10 15 256

读取表示一组二进制数字的字符矢量。表示二进制数的文本包括数字01,以及可选的前缀0b0B

中的字段匹配宾努姆斯到二进制数,使用“%b”说明符。这个textscan函数将字段转换为无符号64位整数。

宾努姆斯=“0b101010 0b11 0b100 1001 10”;C=文本扫描(宾努姆斯,“%b”
C=1x1单元阵列{5 x1 uint64}

显示C作为一排矢量。

转置(C {:})
ans =1x5 uint64行向量42 3 4 9 2

您可以将字段转换为8、16、32或64位的有符号或无符号整数宾努姆斯要使用带符号的32位整数,请使用“%bs32”说明符。

C=文本扫描(宾努姆斯,“%bs32”);转置(C {:})
ans =1x5 int32行向量42 3 4 9 2

您还可以指定用于解释输入的字段宽度。在这种情况下,前缀将计入字段宽度。例如,如果将字段宽度设置为3,如中所示%3b然后textscan拆分文本“0 b1010 100”分成三段文字,“0b1”'010''100'.它将三段文本视为不同的二进制数。

c = textScan(“0 b1010 100”'%3b');转置(C {:})
ans =1x3 uint64行向量1 2 4

加载数据文件并读取具有适当类型的每一列。

加载文件scan1.dat.并在文本编辑器中预览其内容。屏幕截图如下所示。

文件名=“scan1.dat”

打开文件,并使用适当的转换说明符读取每一列。textscan返回一个九乘一单元阵列C

fileid = fopen(文件名);C=文本扫描(文件ID,“%s%s%f32%d8%u%f%f%s%f”);fclose(fileID);谁C
名称大小字节类属性C 1x9 2105单元格

查看中每个单元格的MATLAB®数据类型C

C
C =1×9单元阵列第1列到第5列{3x1单元格}{3x1单元格}{3x1单单元格}{3x1 int8}{3x1 uint32}第6列到第9列{3x1双单元格}{3x1双单元格}{3x1双单元格}{3x1双单元格}

检查各个条目。注意C {1}C {2}是单元阵列。C{5}是数据类型uint32,那么C{5}是a的最大值32-位无符号整数,或intmax('uint32')

celldisp (C)
[1{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}{{{{{{{{{{{{{{{{{{{}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}{{{{{{{{{{{{{{{{{{{{{{{}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{}}}}}}}}}}}}}}}}{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{1}=是{8}{2}=否{8}{3}=否{9}=5.1000+3.0000I2.2000-0.5000I3.1000+0.1000i

删除文本“水平”来自上一示例数据第二列中的每个字段。该文件的预览如下所示。

打开文件并匹配formatSpec输入中的文本。

文件名=“scan1.dat”;fileid = fopen(文件名);C=文本扫描(文件ID,“%s级别%d%f32%d8%u%f%f%s%f”);fclose(fileID);C {2}
ans =3x1 int32列向量1 2 3

查看Matlab®数据类型的第二个单元格C这个second cell of the九乘一细胞阵列,C,现在是数据类型INT32.

disp(类(C{2}))
INT32.

将上一示例中文件的第一列读入单元格数组,跳过该行的其余部分。

文件名=“scan1.dat”;fileID=fopen(文件名);dates=textscan(fileID,' % s % * ^ \ [n] ');fclose(fileID);日期{1}
ans =3x1电池{'09/12/2005'} {'10/12/2005'} {'11/12/2005'}

textscan返回单元格数组日期。

加载文件data.csv并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含以逗号分隔的数据,还包含空值。

读取文件,将空单元格转换为-Inf

文件名=“data.csv”;fileid = fopen(文件名);C=文本扫描(文件ID,'%f%f%f%f%f'...“分隔符”',''extupvalue',Inf);fclose(fileID);column4=C{4},column5=C{5}
column4 =2×14-Inf
专栏5=2x1 uint8列向量0 11

textscan返回一个一乘六细胞阵列,C这个textscan函数转换中的空值C {4}-Inf, 在哪里C {4}与浮点格式关联。因为MATLAB®表示无符号整数-Inf作为0textscan转换中的空值C{5}0,而不是-Inf

加载文件data2.csv.并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含的数据可以解释为注释和其他条目,如“不”'na'这可能表示空字段。

文件名=“data2.csv”

指定输入textscan应视为注释或空值,并将数据扫描到C

fileid = fopen(文件名);C=文本扫描(文件ID,“%s%n%n%n%n”“分隔符”','...“免费治疗”,{“不”'na'},“评论风格”' / / ');fclose(fileID);

显示输出。

celldisp (C)
C{1}{1}=abc C{1}{2}=def C{2}=2 NaN C{3}=NaN 5 C{4}=3 6 C{5}=4 7

加载文件data3.csv.并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含重复的分隔符。

文件名='data3.csv'

要将重复的逗号视为单个分隔符,请使用多联利姆松参数,设置值为1符合事实的).

fileid = fopen(文件名);C=文本扫描(文件ID,“%f%f%f%f”“分隔符”','...'multipledelimsone',1);fclose(文件ID);celldisp(C)
C{1}=1 5 C{2}=2 6 C{3}=3 7 C{4}=4 8

加载数据文件grades.txt并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含重复的分隔符。

文件名='grades.txt'

使用以下格式读取列标题:'%s'四次。

fileID=fopen(文件名);formatSpec='%s';N=4;C_text=textscan(文件ID,格式规范,N,“分隔符”'|');

读取文件中的数字数据。

C_data0=textscan(文件ID,“%d%f%f%f”
C_数据0=1×4单元阵列{4x1 int32} {4x1 double} {4x1 double} {4x1 double}

的默认值CollectOut.0错误的),所以textscan返回单独数组中的每列数值数据。

将文件位置指示器设置为文件的开头。

Frewind(fileid);

重新读取该文件并将CollectOutput设置为1(true),以将同一类的连续列收集到单个数组中repmat.函数表示%f转换说明符应该出现三次。当一种格式重复多次时,这种技术非常有用。

C_text = textscan(文件标识,'%s'N“分隔符”'|'); C_data1=textscan(文件ID[“%d”,雷普马特(“%f”,[1,3])],“收集输出”1)
C_数据1=1×2单元阵列{4x1 int32}{4x3 double}

所有的考试分数都是double,它们被收集到一个4 × 3的数组中。

关闭文件。

fclose(fileid);

从文本文件中读取第一列和最后一列数据。跳过一列文本和一列整数数据。

加载文件names.txt并在文本编辑器中预览其内容。屏幕截图如下所示。请注意,该文件包含两列引用的文本,然后是一列整数,最后一列浮点数。

文件名='names.txt'

读取文件中的第一列和最后一列数据。使用转换说明符,%q阅读用双引号括起来的文本().% *问跳过引用的文字,% * d跳过整数字段,%f读取浮点数。使用“分隔符”名称-值对的论点。

fileid = fopen(文件名,“r”);C=文本扫描(文件ID,“%q%*q%*d%f”“分隔符”',');fclose(fileID);

显示输出。textscan返回一个单元格数组C其中,包含文本的双引号被删除。

celldisp (C)
C{1}{1}=Smith,J.C{1}{2}=Bates,G.C{1}{3}=Curie,M.C{1}{4}=Murray,G.C{1}{5}=Brown,K.C{2}=71.1000 69.3000 64.1000 133.0000 64.9000

加载文件德语_dates.txt并在文本编辑器中预览其内容。屏幕截图如下所示。注意,值的第一列包含德语日期,第二列和第三列是数值。

文件名=“german_dates.txt”

打开文件。指定与文件关联的字符编码方案,作为最后一个输入福彭

fileid = fopen(文件名,“r”“不”‘ISO-8859-15’);

读取该文件。属性指定文件中日期的格式%{dd % MMMM yyyy}说明符。使用日期地点名称-值对的论点。

C=文本扫描(文件ID,'%{dd MMMM yyyy}D %f %f'...“DateLocale”“德乌德”“分隔符”',');fclose(fileID);

查看C语言中第一个单元格的内容。日期显示为MATLAB使用的语言,具体取决于您的系统区域设置。

C {1}
ans =3x1日期时间2014年1月1日2014年2月1日2014年3月1日

使用sprintf在数据中转换非默认转义序列。

创建包含表单馈送字符的文本,\F.然后,使用textscan,叫sprintf显式转换表单提要。

抒情的(“黑鸟\fsinging\fin\fthe\fHead\fof\fnight”);C=文本扫描(歌词,'%s'“分隔符”,斯普林特(“\ f”));C {1}
ans =7 x1细胞{“黑鸟”}{‘唱歌’}{在‘}{的}{‘死’}{的‘}{‘夜’}

textscan返回单元格数组,C

从非开始的位置重新开始扫描。

如果继续扫描文本,textscan每次都从一开始就读。要从任何其他位置恢复扫描,请在初始呼叫中使用双输出参数语法textscan

例如,创建一个名为抒情的.读取字符向量的第一个字,然后继续扫描。

抒情的=“黑鸟在夜深人静中歌唱”;[firstword, pos] = textscan(歌词,“%9c”,1);lastpart=textscan(歌词(pos+1:end),'%s');

输入参数

全部崩溃

打开文本文件的文件标识符,指定为数字。在阅读文件之前textscan,你必须使用福彭打开文件并获取fileid.

数据类型:双倍的

数据字段的格式,指定为字符向量或一个或多个转换说明符的字符串。当textscan读取输入,它尝试将数据与中指定的格式匹配formatspec.如果textscan匹配数据字段失败时,它停止读取并返回在失败之前读取的所有字段。

转换说明符的数量决定了输出数组中的单元格数,C

数字字段

此表列出了数字输入的可用转换说明符。

数字输入类型 转换说明符 输出类
整数,签名 %d INT32.
%d8 int8
%d16 int16
%d32 INT32.
%d64 INT64.
整数,无符号 %u uint32
%与 uint8
%u16 uint16
%u32 uint32
%u64 uint64
浮点数 %f 双倍的
%f32 仅有一个的
%f64 双倍的
%n 双倍的
十六进制数,无符号整数 %x uint64
%xu8 uint8
%徐16 uint16
%xu32 uint32
%xu64 uint64
十六进制数,有符号整数 %xs8 int8
%xs16 int16
%xs32 INT32.
%xs64 INT64.
二进制数,无符号整数 %b uint64
% bu8 uint8
%bu16 uint16
%bu32 uint32
%bu64 uint64
二进制数,带符号整数 %bs8 int8
%bs16 int16
%bs32 INT32.
%bs64 INT64.

非数字字段

此表列出了包含非数字字符的输入的可用转换说明符。

非数字输入类型 转换说明符 细节
性格 %c 读取任何单个字符,包括分隔符。
文本阵列 % 读写作为字符向量的小区数组。
%q

读写作为字符向量的小区数组。如果文本以双引号开始(),省略前导引号及其附带的结束标记,这是单独双引号的第二个实例。替换转义双引号(例如,“abc”)带单双引号(“abc”).%q忽略关闭双引号后出现的任何双引号。

例子:'%q'阅读“乔”“闪电”“小史密斯”作为“小乔“闪电”史密斯”

日期和时间 %D

以与之相同的方式%q然后转换为日期时间值。

%{fmt}D

以与之相同的方式%q以上,然后将其转换为DateTime值。fmt描述输入文本的格式。的fmt输入是由字母标识符组成的字符向量,它是总体安排日期时间的属性。textscan将不匹配此格式的文本转换为NaT价值观

有关DateTime显示格式的更多信息,请参阅总体安排DateTime阵列的财产。

例子:'%{dd-mmm-yyyy} d'指定日期的格式,例如“2014年1月1日”

期间 %T

以与之相同的方式%q然后转换为持续时间值。

%{fmt}T

以与之相同的方式%q然后将其转换为持续时间值。fmt描述输入文本的格式。的fmt输入是由字母标识符组成的字符向量,它是总体安排持续时间的属性。textscan将不匹配此格式的文本转换为价值观

有关持续时间显示格式的详细信息,请参见格式持续时间数组的属性。

例子:'%{hh:mm:ss} t'指定持续时间的格式,例如'10:30:15',表示10小时30分钟15秒。

类别 %C

以与之相同的方式%q,然后转换为类别数组中的类别名称。textscan皈依<定义>将文本转换为输出分类数组中未定义的值。

模式匹配 %[...]

读写为字符向量的单元格阵列,括号内的字符向上到第一个非匹配字符。包括在该集合中,首先指定它:%[] ......]

例子:%[亩]阅读“夏天”作为'汇总'

% ^[…]

排除括号内的字符,直到第一个匹配字符为止。要排除,首先指定它:%[^]...]

例子:%[^xrg]阅读“夏天”作为“summe”

可选运算符

转换说明符formatspec.可以包括可选运算符,按以下顺序显示(为清晰起见,包括空格):

可选的操作包括:

  • 要忽略的字段和字符

    textscan按顺序读取文件中的所有字符,除非您告诉它忽略某个特定字段或字段的一部分。

    在百分比字符(%)后插入星号(*),以跳过字段或字符字段的一部分。

    操作人员

    采取行动

    %*k

    跳过这个领域。k标识要跳过的字段的任何转换说明符。textscan不为任何此类字段创建输出单元格。

    例子:“%s%*s%s%s%*s%*s%*s%s”(空格是可选的)转换文本
    “黑鸟在夜深人静中歌唱”分为四个输出单元,具有
    《黑夜》中的“黑鸟”

    '%*n是的

    跳到n角色,在哪里n是小于或等于字段中字符数的整数。

    例子:“%*3s%s”皈依英语字母的'defg'.当分隔符是逗号时,将转换相同的分隔符“abcde,fghijkl”到包含的单元格数组“德”,“ijkl”

    '%*nC'

    跳过n字符,包括分隔符字符。

  • 场宽

    textscan读取由字段宽度或精度指定的字符数或位数,或直至第一个分隔符(以先到者为准)。小数点,符号(+-)、指数字符和数字指数中的数字将作为字段宽度内的字符和数字计算。对于复数,场宽是指实部和虚部各自的宽度。对于虚部,字段宽度包括+或-但不包括j.通过在转换说明符中的百分比(%)之后通过插入数字来指定字段宽度。

    例子:%5f阅读'123.456'作为123.4

    例子:%5c阅读英语字母的作为“abcde”

    当字段宽度运算符与单个字符一起使用时(%c),textscan还读取分隔符、空格和行尾字符。
    例子:%7c读7个字符,包括空白,所以“日夜”读作“日复一日”

  • 精度

    对于浮点数(%n%f%f32%f64),可以指定要读取的小数位数。

    例子:%7.2f.阅读'123.456'作为123.45

  • 要忽略的文本

    textscan忽略附加到文档的文本formatspec.转换说明符。

    例子:级别%u8阅读“1级”作为1

    例子:% u8Step阅读“2步”作为2

数据类型:char|细绳

申请次数formatspec.,指定为正整数。

数据类型:仅有一个的|双倍的|int8|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

输入要阅读的文本。

数据类型:char|细绳

名称-值对的观点

指定可选的逗号分隔的对名称,值论据。名称是参数名和价值是对应的值。名称必须出现在引号内。您可以按任意顺序指定多个名称和值对参数,如下所示:名称1,值1,…,名称,值

例子:C = TextScan(fileID,formatspec,'标题',3,'delimiter',',')跳过数据的前三行,然后读取其余数据,将逗号视为分隔符。

名称不区分大小写。

确定数据连接的逻辑指示符,指定为逗号分隔对,由“收集输出”或者符合事实的错误的如果符合事实的,然后导入函数将相同基本值的连续输出单元串联起来®班级进入一个数组。

指定要忽略的文本的符号,指定为逗号分隔对,由“评论风格”字符向量、字符向量的单元数组、字符串或字符串数组。

例如,指定一个字符,例如'%'忽略同一行符号后面的文本。指定由两个字符向量组成的单元格数组,例如{'/*','*/'},忽略这些序列之间的任何文本。

MATLAB只在每个字段的开头检查注释,而不是在字段内部。

例子:'CommentStyle',{'/*','*/'}

数据类型:char|细绳

读取日期的区域设置,指定为逗号分隔对,由“DateLocale”和字符向量的形式xx_yy., 在哪里xx是指定语言的小写ISO 639-1两个字母代码,以及yy.是指定国家/地区的大写ISO 3166-1 alpha-2代码。有关区域设置的常用值列表,请参阅场所的名称-值对参数日期时间函数。

使用日期地点指定区域设置,其中textscan应该在使用该文本时解释周名称和缩写的月份和缩写%D格式说明符。

例子:“DateLocale”,“ja_JP”

字段分隔符字符,指定为逗号分隔对,由“分隔符”以及字符向量或字符向量的单元格数组。在字符向量单元格数组中指定多个分隔符。

例子:'分隔符',{';','*'}

textscan将重复的分隔字符解释为单独的分隔符,并将空值返回到输出单元格。

在每一行数据中,默认的字段分隔符是空白。空白可以是空格的任意组合(' '),退格(“\b”)或标签(“\t”)字符。如果未指定分隔符,则:

  • 分隔符字符与空白字符相同。默认空白字符为' '“\b”“\t”.使用“空白”用于指定备用空白字符的名称-值对参数。

  • textscan将重复的空白字符解释为单个分隔符。

当您将以下一个转义序列指定为分隔符时,textscan将该序列转换为相应的控制字符:

\ B. 退格
\ n 换行符
\ R. 回车
\ 标签
\\ 反斜杠(

数据类型:char|细绳

分隔文本文件中空数值字段的返回值,指定为逗号分隔对,由'extupvalue'和一个标量。

线端字符,指定为逗号分隔对组成“LineEnding”和字符向量或字符串。字符向量必须为“\r\n”或者必须指定单个字符。常用的行尾字符是换行符(“\n”)或回车(“\r”)。如果你指定“\r\n”,则导入函数将处理\ R.\ n,以及两者的结合(\r\n)作为行尾字符。

默认的行尾序列是\ n\ R.\r\n,取决于您的文件的内容。

如果文件中的最后一行末尾缺少值和行尾序列,则导入函数将为这些字段返回空值。这可确保输出单元格数组中的各个单元格,C,大小相同。

例子:'行结束',':'

数据类型:char|细绳

指数字符,指定为逗号分隔对,由“ExpChars”和一个字符向量或字符串。默认的指数字符是eEdD

数据类型:char|细绳

标题行数,指定为逗号分隔对,由“HeaderLines”和一个正整数。textscan跳过标题行,包括当前行的其余部分。

多分隔符处理,指定为逗号分隔对,由'multipledelimsone'或者符合事实的错误的如果符合事实的,则导入函数将连续分隔符视为单个分隔符。由空格分隔的重复分隔符也被视为单个分隔符。您还必须指定分隔符选项。

例子:“MultipledLimsasone”,1

行为当textscan无法读取或转换,指定为逗号分隔对,由“返回者”或者符合事实的错误的如果符合事实的textscan终止而不出错,并返回所有已读字段。如果错误的textscan终止时出错,不返回输出单元格数组。

要视为空值的占位符文本,指定为逗号分隔对,由“免费治疗”字符向量、字符向量的单元数组、字符串或字符串数组。此选项仅适用于数字字段。

数据类型:char|细绳

空白字符,指定为逗号分隔对,由“空白”以及包含一个或多个字符的字符向量或字符串。textscan添加空格字符,字符(32),以任何指明空白除非空白是空的('') 和formatspec.包括任何转换说明符。

当您指定下列转义序列之一为任何空白字符时,textscan将该序列转换为相应的控制字符:

\ B. 退格
\ n 换行符
\ R. 回车
\ 标签
\\ 反斜杠(

数据类型:char|细绳

文本的输出数据类型,指定为逗号分隔对,由“文本类型”或者“char”'细绳'。如果指定该值“char”然后textscan以字符向量的单元格数组形式返回文本。如果指定值'细绳'然后textscan以类型的数组形式返回文本细绳

输出参数

全部崩溃

文件或文本数据,作为单元格数组返回。

对于中的每个数字转换说明符formatspec., 这textscan函数返回一个K-输出单元阵列的by-1 MATLAB数值向量,C, 在哪里K那是多少倍textscan查找与说明符匹配的字段。

对于每个文本转换说明符(%%q%[...])formatspec., 这textscan函数返回一个K-字符向量的by-1单元格数组,其中K那是多少倍textscan查找与说明符匹配的字段。对于包含字段宽度运算符的每个字符转换,textscan返回一个K-经过-M字符数组,其中M是字段宽度。

对于中的每个日期时间或类别转换说明符formatspec., 这textscan函数返回一个K-按-1日期时间或分类向量到输出单元格数组,C, 在哪里K那是多少倍textscan查找与说明符匹配的字段。

扫描结束时在文件或字符向量中的位置,作为类的整数返回双倍的.作为一个文件,位置函数(文件ID)调用后将返回相同的值textscan.对于字符向量,位置表示有多少个字符textscan阅读

算法

textscan根据有关溢出、截断和使用的MATLAB规则,将数字字段转换为指定的输出类型Inf-Inf.例如,MATLAB代表一个整数为零。如果textscan找到与整数格式说明符相关联的空字段(例如%d%u),它将空值返回为零,而不是零

当将数据与文本转换说明符匹配时,textscan读取,直到找到分隔符或行尾字符。将数据与数字转换说明符匹配时,textscan读取,直到找到非数字字符。当textscan无法再将数据与特定转换说明符匹配,它将尝试将数据与中的下一个转换说明符匹配formatspec..号(+-)、指数字符和小数点被视为数字字符。

签名 数字 小数点 数字 指数字符 签名 数字
读取一个符号字符(如果存在)。 读取一个或多个数字。 如果存在小数点,则读取一个小数点。 如果有小数点,则读取紧跟其后的一个或多个数字。 读取一个指数字符(如果存在)。 如果有指数字符,请阅读一个标志字符。 如果有指数字符,读入其后的一个或多个数字。

textscan将任何复数作为一个整体导入复数字段,将实部和虚部转换为指定的数字类型(例如%d%f)。复数的有效形式为:

±±i|j

例子:5.7-3.1i

±i|j

例子:7 j

不要在复数中包含嵌入的空格。textscan将嵌入的空格解释为字段分隔符。

在R2006a之前引入