主要内容

文本扫描

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

描述

例子

C= TextScan(fileid.,formatspec.)从打开的文本文件中读取数据到单元格数组中,C.文本文件由文件标识符表示,fileid.. 使用打开外部文件打开文件并获取fileid.价值。当您从一个文件中读取完成时,通过调用文件关闭(文件标识)

文本扫描中的转换说明符尝试匹配文件中的数据formatspec..的文本扫描功能重新填充formatspec.在整个文件中并在无法匹配时停止formatspec.的数据。

例子

C= TextScan(fileid.,formatspec.,N)使用读取文件数据formatspec.N次,在哪里N为正整数。从文件中读取额外的数据N周期,叫文本扫描再次使用原件fileid.. 如果通过调用文本扫描使用相同的文件标识符(fileid.), 然后文本扫描自动恢复读取最后读取的点。

例子

C= TextScan(chr,formatspec.)从字符向量中读取文本chr为细胞数组C.当从字符向量读取文本时,重复调用文本扫描每次从开始重新启动扫描。要从最后一个位置重新启动扫描,请求a位置输出。

文本扫描尝试匹配字符向量中的数据chr的指定格式formatspec.

C= TextScan(chr,formatspec.,N)用来formatspec.N次,在哪里N为正整数。

例子

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

例子

[C,位置) = textscan (___)返回扫描结束时文件中的位置或字符向量作为第二个输出参数。对于文件,这是ftell(文件标识)将在调用后返回文本扫描.对于角色矢量,位置指示有多少个字符文本扫描阅读。

例子

全部折叠

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

chr='0.41 8.24 3.57 6.24 9.27'; C=文本扫描(chr,'%F');

这说明符'%F'formatspec.告诉文本扫描匹配每个领域chr到双重精度浮点数。

显示单元格数组的内容C

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

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

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

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

显示单元格数组的内容C

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

读取表示一组十六进制数字的字符矢量。表示十六进制数的文本包括数字0-9,信A.-FA.-F,以及可选的前缀0 x0 x

匹配中的字段己烯若要十六进制数,使用'%X'说明符。的文本扫描函数将字段转换为无符号64位整数。

六边形='0xFF 0x100 0x3C5E A F 10'; C=文本扫描(十六进制数,'%X')
C =1 x1单元阵列{6 x1 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

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

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

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

匹配中的字段binnums到二进制数,使用'%b'说明符。的文本扫描函数将字段转换为无符号64位整数。

binnums ='0b101010 0b11 0b100 1001 10';C = textscan (binnums'%b')
C =1 x1单元阵列{5x1 uint64}

显示内容C作为一排矢量。

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

可以将字段转换为8、16、32或64位的有符号或无符号整数。将字段转换为binnums带符号的32位整数,使用'%bs32'说明符。

C = textscan (binnums'%bs32');转置(C {:})
ans=1x5 int32行向量42 3 4 9 2

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

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

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

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

文件名=“scan1.dat”

打开文件,使用适当的转换说明符读取每一列。文本扫描返回一个1-by-9细胞阵列C

文件标识= fopen(文件名);c = textscan(fileID,'%s %s %f32 %d8 %u %f %f %s %f');文件关闭(文件标识);谁C
名称大小字节类类属性C 1x9 2105单元格

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

C
C=1×9单元阵列列1到5 {3x1 cell} {3x1 cell} {3x1 single} {3x1 int8} {3x1 uint32}

检查各个条目。请注意,C{1}C{2}是细胞阵列。c {5}是数据类型的UINT32的前两个元素c {5}是a的最大值32-bit无符号整数,或INTMAX('UINT32')

celldisp(C)
C {1} {1} = 09/12/2005 C {1} {2} = 10/12/2005 C {1} {2} {3} = 11/12/2005 C{1} =使C{2}{2} =二级C {2} {3} = Level3 C {3} = 12.3400 23.5400 34.9000 C {4} = 45 60 12 C {5} = 4294967295 4294967295 200000 C{6} =正从10 C{7} =南0.0010 - 100.0000 C {8} {1} = Yes C{8}{2} =没有C{8}{3} =没有C{9} = 5.1000 + 3.0000我2.2000 - 0.5000 3.1000 + 0.1000

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

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

文件名=“scan1.dat”;文件标识= fopen(文件名);c = textscan(fileID,'%s水平%d%f32%d8%u%f%f%s%f');文件关闭(文件标识);C{2}
ans=3x1 int32列向量1 2 3.

查看Matlab®数据类型的第二个单元格C.第二个细胞1-by-9细胞阵列,C,现在是数据类型INT32.

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

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

文件名=“scan1.dat”;文件标识= fopen(文件名);日期= textscan(fileid,“%s%*[^\n]”);文件关闭(文件标识);日期{1}
ans=3 x1细胞{' 09/12/2005}{‘10/12/2005}{' 11/12/2005 '}

文本扫描返回单元格数组日期。

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

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

文件名=“data.csv”;文件标识= fopen(文件名);c = textscan(fileID,'%f%f%f%f%f',......“分隔符”,”、“,'extupvalue',-inf);文件关闭(文件标识);column4 = c {4},column5 = c {5}
column4 =2×14负
column5 =2x1 uint8列向量0 11

文本扫描返回一个1-by-6细胞阵列,C.的文本扫描函数转换中的空值C{4}, 在哪里C{4}与浮点格式相关联。因为MATLAB®表示无符号整数作为0,文本扫描转换中的空值c {5}0, 并不是

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

文件名=“data2.csv”

指定所需的输入文本扫描应视为注释或空值,并扫描数据到C

文件标识= fopen(文件名);c = textscan(fileID,'%s %n %n %n',“分隔符”,”、“,......“TreatAsEmpty”, {“NA”,'na'},“CommentStyle”,'//');文件关闭(文件标识);

显示输出。

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

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

文件名='data3.csv'

要将重复的逗号视为单个分隔符,请使用MultipleDelimsAsOne参数,并将该值设置为1.(真正的).

文件标识= fopen(文件名);c = textscan(fileID,'%f %f %f',“分隔符”,”、“,......'multipledelimsone'1);文件关闭(文件标识);celldisp(C)
c {1} = 1 5 c {2} = 2 6 c {3} = 3 7 c {4} = 4 8

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

文件名='grades.txt'

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

文件标识= fopen(文件名);formatSpec ='%s';n = 4;c_text = textscan(fileId,formatspec,n,“分隔符”,'|');

读取文件中的数字数据。

C_data0 = textscan(文件标识,'%d %f %f')
C_data0 =1×4单元阵列{4x1 int32} {4x1 double} {4x1 double} {4x1 double}

默认值CollectOut.0(),所以文本扫描在单独的数组中返回数字数据的每一列。

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

Frewind(fileid);

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

C_text=textscan(文件ID,'%s'N“分隔符”,'|');C_data1 = textscan(文件标识,'%d'repmat ('%F',[1,3])],“CollectOutput”1)
C_data1 =1×2单元阵列{4x1 int32} {4x3 double}

测试分数都是双倍的,收集到一个4乘3的数组中。

关闭文件。

fclose(fileid);

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

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

文件名='names.txt'

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

fileid = fopen(文件名,“r”);c = textscan(fileID,'%q %q % d %f',“分隔符”,”、“);文件关闭(文件标识);

显示输出。文本扫描返回单元格数组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

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

文件名=“german_dates.txt”

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

fileid = fopen(文件名,“r”,“n”,“iso - 8859 - 15”);

读取文件。使用指定文件中日期的格式%{dd%MMMM-yyyy}D说明符。属性指定日期的区域设置datelocale.名称-值对参数。

c = textscan(fileID,“{dd MMMM yyyy}D%f%f”,......“DateLocale”,“de_DE”,“分隔符”,”、“);文件关闭(文件标识);

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

C{1}
ans=3 x1 datetime2014年1月1日2014年2月1日2014年3月1日

使用把格式数据写成串在数据中转换非默认转义序列。

创建包含表单馈送字符的文本,\F.然后,用文本扫描呼叫把格式数据写成串以显式转换表单提要。

抒情= sprintf(“黑鸟将那\ fdead \ \ fsinging \鳍\相脱节\ fnight ');C = textscan(抒情,'%s','delimiter'sprintf (“\f”)); C{1}
ans=7x1电池{'Blackbird'}{'sing'}{'in'}{'the'}{'dead'}{'of'}{'night'}

文本扫描返回一个单元格数组,C

从开始位置以外的位置继续扫描。

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

例如,创建一个名为歌词.读取字符向量的第一个单词,然后恢复扫描。

抒情=“黑鹂在夜间唱歌”; [第一个单词,pos]=文本扫描(歌词,'%9c'1);lastpart = textscan(抒情(pos + 1:结束),'%s');

输入参数

全部折叠

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

数据类型:双倍的

数据字段的格式,指定为字符向量或一个或多个转换说明符的字符串。什么时候文本扫描读取输入,它尝试将数据与指定的格式匹配formatspec..如果文本扫描如果无法匹配数据字段,它将停止读取并返回失败前读取的所有字段。

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

数值字段

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

数字输入类型 转换说明符 输出类
整数,签名 % d INT32.
% d8 int8
% d16 int16
% d32 INT32.
% d64 INT64.
整数,无符号 % u UINT32
%u8 uint8.
% u16 uint16
% u32 UINT32
% u64 UINT64
浮点数 % f 双倍的
% f32
% f64 双倍的
% n 双倍的
十六进制数,无符号整数 % x UINT64
%xu8 uint8.
% xu16 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 读取任何单个字符,包括分隔符。
文本阵列 % s 读写作为字符向量的小区数组。
%问

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

例子:'%q'读取“乔”“闪电”“小史密斯”作为'Joe“Lightning”史密斯,Jr.'

日期和时间 % D

以同样的方式阅读%问,然后转换为日期时间值。

%{fmt} D

以同样的方式阅读%问以上,然后将其转换为DateTime值。fmt描述输入文本的格式。这个fmt输入是字母标识符的字符向量,它是格式datetime的属性。文本扫描将与此格式不匹配的文本转换为纳特价值观。

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

例子:'%{dd-mmm-yyyy} d'指定日期的格式,例如'01 -Jan-2014'

持续时间 % T

以同样的方式阅读%问,然后转换为持续时间值。

%{fmt} T

以同样的方式阅读%问,然后将其转换为持续时间值。fmt描述输入文本的格式。这个fmt输入是字母标识符的字符向量,它是格式属性的持续时间。文本扫描将与此格式不匹配的文本转换为价值观。

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

例子:' % {hh: mm: ss} T '指定持续时间的格式,例如“10:30:15”,代表10小时、30分钟和15秒。

类别 % C

以同样的方式阅读%问,然后转换为类别数组中的类别名称。文本扫描转换<未定义>将文本转换为输出分类数组中的未定义值。

模式匹配 %[...]

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

例子:%(亩)读取“夏天”作为'汇总'

%[^...]

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

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

可选的运营商

中的转换说明符formatspec.可以包括可选操作符,它们以以下顺序出现(为清晰起见,包括空格):

可选运算符包括:

  • 要忽略的字段和字符

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

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

    操作员

    采取行动

    % *K

    跳过这个领域。K是任何转换说明符,标识要跳过的字段。文本扫描不会为任何此类字段创建输出单元格。

    例子:'%s %*s %s %s %*s %s'(空格是可选的)转换文本
    “黑鹂在夜间唱歌”输入四个输出单元
    '黑鸟' '在' '晚上' '

    ' % *N年代

    跳到N字符,N是小于或等于字段中字符数的整数。

    例子:% * 3年代% s转换“abcdefg”'defg'. 当分隔符是逗号时,将转换相同的分隔符中的,fghijkl”到包含的单元格数组“德”ijkl'

    ' % *NC'

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

  • 字段宽度

    文本扫描读取字段宽度或精度指定的字符数或数字,或者最多读取第一个分隔符,以先代是这样。小数点,标志(+-)数字指数中的、指数字符和数字将计为字段宽度内的字符和数字。对于复数,字段宽度指实部和虚部的单独宽度。对于虚部,场宽度包括+或− 但不是J.通过在转换说明符中的百分比(%)之后通过插入数字来指定字段宽度。

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

    例子:%5C.读取“abcdefg”作为”中的“

    当字段宽度运算符与单个字符一起使用时(% c),文本扫描还读取了分隔符,空白空间和行结束字符。
    例子:%7C.读取7个字符,包括空格,因此'日夜'读起来像“天”

  • 精确

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

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

  • 要忽略的文字

    文本扫描的附加文本formatspec.转换说明符。

    例子:%与水平读取“使”作为1.

    例子:%U8步骤读取'2Step'作为2.

数据类型:char|细绳

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

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32|UINT64

输入文本读取。

数据类型:char|细绳

名称-值对参数

指定可选的逗号分隔的字符对名称、值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

名称不区分大小写。

确定数据连接的逻辑指示符,指定为由逗号分隔的对组成“CollectOutput”,要么真正的.如果真正的,然后导入函数将同一基本MATLAB的连续输出单元连接起来®班级进入一个数组。

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

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

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

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

数据类型:char|细绳

用于阅读日期的区域设置,指定为逗号分隔的配对“DateLocale”和一个字符向量xx_yy., 在哪里xx是小写的ISO 639-1两个字母的代码,它指定了一种语言,并且yy.是指定国家的大写ISO 3166-1 alpha-2代码。有关区域设置的公共值列表,请参见语言环境的名称-值对参数约会时间功能。

使用datelocale.要指定所使用的语言环境,请执行以下操作:文本扫描应该在使用该文本时解释周名称和缩写的月份和缩写% D格式说明符。

例子:“DateLocale”、“ja_JP”

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

例子:'delimiter',{';','*'}

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

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

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

  • 文本扫描将重复的空白字符解释为单个分隔符。

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

\ B. 退格
\ n 新线
\ R. 回车
\ 选项卡
\\ 反斜杠(\)

数据类型:char|细绳

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

线端字符,指定为逗号分隔对组成“换行”和一个字符向量或字符串。字符向量必须为“\ r \ n”或者它必须指定一个字符。常见的行终点字符是换行符(“\n”)或回车('\ r').如果您指定“\ r \ n”,然后导入函数处理任何一个\ R.,\ n,以及两者的组合(\ r \ n)作为行尾字符。

默认的行结束序列为\ n,\ R.,或\ r \ n,取决于您的文件的内容。

如果在文件的最后一行末尾有缺失的值和行结束序列,那么导入函数将为这些字段返回空值。这确保了输出单元格数组中的单个单元格,C,大小是相同的。

例子:'排队',':'

数据类型:char|细绳

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

数据类型:char|细绳

标题行数,指定为逗号分隔对,包括“头线”和一个正整数。文本扫描跳过标题行,包括当前行的其余部分。

多个分隔符处理,指定为逗号分隔对,由'multipledelimsone',要么真正的.如果真正的,则导入函数将连续分隔符视为单个分隔符。由空白分隔的重复分隔符也被视为单个分隔符。还必须指定分隔符选项。

例子:“MultipleDelimsAsOne”,1

时的行为文本扫描未能读取或转换,指定为逗号分隔的对组成“ReturnOnError”,要么真正的.如果真正的,文本扫描没有错误终止并返回读取的所有字段。如果,文本扫描以错误终止且不返回输出单元格数组。

要作为空值处理的占位符文本,指定为由逗号分隔的对组成“TreatAsEmpty”以及字符向量、字符向量的单元格数组、字符串或字符串数组。此选项仅适用于数字字段。

数据类型:char|细绳

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

将以下转义序列之一指定为任何空白字符时,文本扫描将该序列转换为相应的控制字符:

\ B. 退格
\ n 新线
\ R. 回车
\ 选项卡
\\ 反斜杠(\)

数据类型:char|细绳

文本的输出数据类型,指定为逗号分隔对,由'texttype',要么“字符”'细绳'.如果指定值“字符”,然后文本扫描以字符向量单元格数组的形式返回文本。如果指定值'细绳',然后文本扫描返回类型为数组的文本细绳

输出参数

全部折叠

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

中的每个数字转换说明符formatspec., 这文本扫描函数返回一个K-by-1 MATLAB数值矢量到输出单元阵列,C, 在哪里K是次数文本扫描查找与说明符匹配的字段。

对于每个文本转换说明符(% s,%问,或%[...])在formatspec., 这文本扫描函数返回一个K- 1个字符向量的单元格阵列,其中K是次数文本扫描查找与说明符匹配的字段。对于每个包含字段宽度操作符的字符转换,文本扫描返回一个K-经过-M字符阵列,在哪里M是字段宽度。

中的每个datetime或分类转换说明符formatspec., 这文本扫描函数返回一个K-by-1 datetime或分类向量的输出单元格数组,C, 在哪里K是次数文本扫描查找与说明符匹配的字段。

扫描结束时的位置,在文件或字符向量中,作为类的整数返回双倍的.为一个文件,ftell(文件标识)是否在调用后返回相同的值文本扫描.对于角色矢量,位置指示有多少个字符文本扫描阅读。

算法

文本扫描根据关于溢出,截断和使用的MATLAB规则将数字字段转换为指定的输出类型,,.例如,MATLAB代表一个整数零。如果文本扫描找到与整数格式说明符相关联的空字段(例如% d% u),则返回空值为0而非

将数据与文本转换说明符匹配时,文本扫描读取,直到找到分隔符或行结束符。当将数据与数字转换说明符匹配时,文本扫描读取直到它找到一个非数字字符。什么时候文本扫描属性中的下一个转换说明符不能再匹配数据到特定的转换说明符,它尝试将数据匹配到formatspec.. 标志(+-)、指数字符和小数点被认为是数字字符。

标志 数字 小数点 数字 指数的性格 标志 数字
如果存在,请阅读一个标志字符。 读取一个或多个数字。 如果存在,读一个小数点。 如果有小数点,请阅读立即跟随它的一个或多个数字。 读取一个指数字符(如果存在)。 如果有指数字符,请阅读一个标志字符。 如果有指数字符,则读取其后面的一个或多个数字。

文本扫描将任何复数数导入到一个复杂的数字字段中,将实部和虚部转换为指定的数字类型(例如% d% f).复数的有效形式有:

±±<图像放大>我| j

例子:5.7 - -3.1我

±<图像放大>我| j

例子:-7j

不要在复数中包含内嵌空格。文本扫描将嵌入式空格解释为字段分隔符。

之前介绍过的R2006a