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 读取的主要内容,如果未能解决你的问题,请参考以下文章

怎样用matlab读取csv文件

用matlab读取一个csv表格文件并输出函数图像

macmatlab导入大型csv

用 matlab 读取巨大的 .csv 文件 - 文件组织得不好

MATLAB:从读取并放入单元格的csv文件制作直方图?

matlab如何批量读取带有编号的文件