【问题标题】:How to write a cell array to csv in Matlab while keeping the structure of the cell array for the strings如何在 Matlab 中将元胞数组写入 csv,同时保持字符串的元胞数组结构
【发布时间】:2017-08-06 09:27:57
【问题描述】:

我正在尝试将单元格数组写入 Matlab 中的 csv 文件。 data{1,:} 等于 headers 并且 data{2,:} 具有数据(2x23)。 元胞数组中的数据混合了字符串和数字。 数组中的一个单元格有一个很长的字符串/注释,当我尝试将其写入 csv 时,该字符串被分解为多个片段并打印出 csv 文件中的 3 个单元格。这会将所有其他信息与其关联的标头不同步。 这是我目前正在尝试的:

 fid = fopen('test.csv', 'w') ;
fprintf(fid, '%s,\t', csvdata{1,1:end}) ;
fprintf(fid,'\n,%f, %f, %f,%f, %f, %s,%s, %f, %f,%s, %f, %s,%s, %f, %s,%s, %s, %s,%s, %s,%s,%s,%s',csvdata{2,:});
fclose all

【问题讨论】:

    标签: matlab csv cell-array


    【解决方案1】:

    您应该用双引号 (") 将字符串括起来,以确保字符串中的逗号被视为文字逗号而不是分隔符

    fprintf(fid,'\n,%f, %f, %f,%f, %f, "%s","%s", %f, %f,"%s", %f, "%s","%s", %f, "%s","%s", "%s", "%s","%s", "%s","%s","%s","%s"',csvdata{2,:});
    

    【讨论】:

    • 哇!很简单。我怎么不知道!有趣的是,如果我将这些双引号用于所有 %s 单元格并且其中一些为空,它们会将引号写入 csv 文件?
    • @new2matlab 是的,这是预期的行为。 " 是插入到您的字符串中的文字引号。
    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    相关资源
    最近更新 更多