textscan在输出数组中引入了额外的零

时间:2013-11-21 14:12:25

标签: matlab

我有一个像这样的.txt文件:

ORD,猫,1

ORD,猫,1

ORD,猫,3

ORD,猫,1

ORD,猫,4

我知道每行的条目数(以逗号分隔)但不知道行数。 我需要在数组中导入以下汽车的编号。 我写了这个:

fid=fopen(filename)

A=textscan(fid,'%s%s%d','Delimiter',',')

但我得到了这个

A =  {17x1 cell}    [16x1 int32]

其中细胞数量明显错误。 当我尝试阅读时

A{3}

我得到了

ans =

       0
       0
       0
       0
       0
       1
       0
       1
       0
       3
       0
       1
       0
       4

我对整数数组感兴趣,但也可能对你有用:

A {1}

ans = 

'{\rtf1\ansi\ansicpg1252\cocoartf1187\cocoasubrtf400'
'{\fonttbl\f0\fswiss\fcharset0 Helvetica;}'
'{\colortbl;\red255\green255\blue255;}'
[1x75  char]
[1x102 char]
'\f0\fs24 \cf0 ord'
'\'         
'ord'       
'\'         
'ord'       
'\'         
'ord'       
'\'         
'ord'       
'}'         

A {2}

ans = 

''
''
''
''
''
'cat'
''
'cat'
''
'cat'
''
'cat'
''
'cat'

好的,我认为输入文件中存在某种格式错误。 我删除了它并创建了一个新的.txt文件,上面的代码工作正常。

1 个答案:

答案 0 :(得分:2)

您没有向textscan提供正确的格式化命令。

A=textscan(fid,'%s%d','Delimiter',',')

'%s%d'这里的意思是“读取一个字符串,然后读取一个整数”。所以它可能会在那里读取字符串整数字符串整数(或尝试),而“0”由错误产生

由于每行有三个条目,请尝试改为:

A=textscan(fid,'%s%s%d','Delimiter',',')

您的号码应该在A{3}

如果您不需要前两列,也可以跳过这些字段:

A=textscan(fid,'%*s%*s%d','Delimiter',',')