300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > matlab读取第一行是汉字csv 在MATLAB中使用`textscan`从csv文件中读取数据

matlab读取第一行是汉字csv 在MATLAB中使用`textscan`从csv文件中读取数据

时间:2020-05-10 03:05:21

相关推荐

matlab读取第一行是汉字csv 在MATLAB中使用`textscan`从csv文件中读取数据

[已编辑:]我有一个文件dataa.csv,我将第一个连续的几行复制并粘贴(使用MacBook中的TextEdit)到新文件datatest1.csv进行测试:

Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,Year,TradeFlowName,TradeFlowCode,TradeValue in 1000 USD

S3,ABW,0,Aruba,ANT,Netherlands Antilles,,Export,6,448.91

S3,ABW,0,Aruba,ATG,Antigua and Barbuda,,Export,6,0.312

S3,ABW,0,Aruba,CHN,China,,Export,6,24.715

S3,ABW,0,Aruba,COL,Colombia,,Export,6,95.885

S3,ABW,0,Aruba,DOM,Dominican Republic,,Export,6,11.432

我想使用textscan将其读入MATLAB,仅使用第2,3,5列(从第二行开始)并编写以下代码

clc,clear all

fid = fopen('datatest1.csv');

data = textscan(fid,'%*s %s %d %*s %s %*[^\n]',...

'Delimiter',',',...

'HeaderLines',1);

fclose(fid);

但我最后只得到第2,3和5列的第二行:

然后我将第一行保留在dataa.csv中,并选择其他几个保存为datatest2.csv:

Nomenclature,ReporterISO3,ProductCode,ReporterName,PartnerISO3,PartnerName,Year,TradeFlowName,TradeFlowCode,TradeValue in 1000 USD

S3,ABW,1,Aruba,USA,United States,,Export,6,1.392

S3,ABW,1,Aruba,VEN,Venezuela,,Export,6,5633.157

S3,ABW,2,Aruba,ANT,Netherlands Antilles,,Export,6,310.734

S3,ABW,2,Aruba,USA,United States,,Export,6,342.42

S3,ABW,2,Aruba,VEN,Venezuela,,Export,6,63.722

S3,AGO,0,Angola,DEU,Germany,,Export,6,105.334

S3,AGO,0,Angola,ESP,Spain,,Export,6,8533.125

我写道:

clc,clear all

fid = fopen('datatest2.csv');

data = textscan(fid,'%*s %s %d %*s %s %*[^\n]',...

'Delimiter',',',...

'HeaderLines',1);

fclose(fid);

data{1}

它完全符合我的要求:

当我对原始数据文件dataa.csv使用相同的代码时,它与第一种情况一样。

出了什么问题,我该如何解决?

[添加:]如果复制我的实验1,可以发现两种情况都有效且问题不存在!我真的不知道发生了什么。

1对于“复制”,我的意思是复制并粘贴上面给出的数据并将其另存为两个新文件,例如datatest4a.csv和datatest4b.csv。我使用visdiff('datatest1.csv', 'datatest4a.csv')来比较两个文件并返回:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。