如何在Matlab中将单元格数组写入csv,同时保持字符串的单元格数组结构

如何在Matlab中将单元格数组写入csv,同时保持字符串的单元格数组结构,matlab,csv,cell-array,Matlab,Csv,Cell Array,我试图在Matlab中将一个单元格数组写入csv文件。数据{1,:}等于头,数据{2,:}具有数据(2x23)。 单元格数组中的数据混合了字符串和数字。 数组中的一个单元格有一个很长的字符串/注释,当我尝试将其写入csv时,字符串会被分成若干部分,并在csv文件中打印出3个单元格。这会使所有其他信息与其关联的标头不同步。 这就是我目前正在尝试的: fid = fopen('test.csv', 'w') ; fprintf(fid, '%s,\t', csvdata{1,1:end}) ; f

我试图在Matlab中将一个单元格数组写入csv文件。数据{1,:}等于头,数据{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

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

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,:});

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

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 yes这是预期的行为。
”是插入字符串中的文字引号。哇!太简单了。我怎么会不知道!有趣的是,如果我对所有%s单元格使用双引号,并且其中一些单元格为空,它们会将引号写到csv文件中?@new2matlab是的,这是预期的行为。
是插入字符串中的文字引号。