CSV 文件拒绝被 Matlab 读取
Posted
技术标签:
【中文标题】CSV 文件拒绝被 Matlab 读取【英文标题】:CSV files refuse to be read by Matlab 【发布时间】:2015-03-31 19:23:18 【问题描述】:我目前正在编写一个 matlab 程序,初始阶段涉及从文件夹中调用 .csv 文件。由于未知的原因,matlab 不会读取文件(使用 csvreader、dataimport 和 fopen 进行检查)。注意——绝对是 csv 文件!
但是,我打开了其中一个文件,按了“另存为”,并为其赋予了相同的名称和文件格式。发生的唯一值得注意的事情是文件大小显着减小,然后 matlab 可以神奇地打开它,但我不知道为什么。
谁能解释为什么会这样?我只会打开并重新保存文件,但数据与大量样本相关,这会使手动过程非常长。如果相关,则从 Instron 输出数据。
非常感谢:)
编辑 所以这是一个名为“2mm.csv”的文件的示例,使用记事本打开(前 10 行约 111,000 行):
Time,Extension,Load
(s),(mm),(N)
"0.00000","51.97554","0.09549"
"1.00000","52.13438","0.24999"
"2.00000","52.30102","0.13996"
"3.00000","52.46782","0.19513"
"4.00000","52.63449","0.15348"
"5.00000","52.80097","0.26828"
"6.00000","52.96780","0.32510"
"7.00000","53.13446","0.67119"
"8.00000","53.30105","4.56026"
"9.00000","53.46772","17.80811"
这是我用来打开它的代码和结果:
>> importdata('2mm.csv',',',2)
ans =
'Time,Extension,Load'
'(s),(mm),(N)'
请注意,它只捕获了前 2 行并且没有分隔逗号。
所以我在 MS Excel 中打开文件,将其保存为 2mmv2.csv 并放入相同的代码。我得到了预期的结构:
>> importdata('2mmv2.csv',',',2);
>> ans.data(1:10,:)
ans =
0 51.9755 0.0955
1.0000 52.1344 0.2500
2.0000 52.3010 0.1400
3.0000 52.4678 0.1951
4.0000 52.6345 0.1535
5.0000 52.8010 0.2683
6.0000 52.9678 0.3251
7.0000 53.1345 0.6712
8.0000 53.3010 4.5603
9.0000 53.4677 17.8081
虽然我现在可以调出文件,但我不知道为什么会这样。
【问题讨论】:
CSV 文件是简单的文件,其列由逗号分隔,行由回车分隔。您能否向我们展示您正在解析的 CSV 文件的示例?如果不看示例,就很难诊断您的错误。will not read
是什么意思?尝试使用fgetl
阅读,csv 是文本,它应该打印一些内容。你用什么工具打开/另存为?
“打开了其中一个文件,”.. 用什么打开?
我希望上面的编辑能让问题更清楚。
啊..问题是您的文件不包含“数据”,而是充满了字符串。
【参考方案1】:
试试这个:
file=fopen('test.csv');
c=textscan(file,'%f%f%f','HeaderLines',2,'CollectOutput',true, ...
'delimiter', ',','"','MultipleDelimsAsOne',true);
fclose(file);
dat=c1
【讨论】:
以上是关于CSV 文件拒绝被 Matlab 读取的主要内容,如果未能解决你的问题,请参考以下文章