为什么使用dlmwrite将值与空单元格混合到csv会导致列太少?

时间:2013-10-10 02:47:40

标签: matlab csv

我正在使用Matlab 2012a附加< 1x19 cell>使用dlmwrite到CSV文件。单元阵列包括17个数字和2个空格。结果:17个值写入目标csv文件,但缺少两个空格。我使用以下代码:

    Output=num2cell([var1,var2,var3....var19]);
    Output(cellfun(@isnan,Output)) = {[]};
    dlmwrite('Target.csv',Output_m,'-append');

当我在命令窗口中运行代码时,我可以看到输出中出现空白:

    Output = 

    Columns 1 through 10

    [19]    [2]    [137.5994]    [0]    []    [501.3610]    [38.4230]    [0]    [0]    [4.9160]

    Columns 11 through 19

    [4.9160]    [38.4230]    [0]    [38.4230]    [501.6580]    []    [-1.2590]    [0]    [0]

但是当附加到csv文件时,空白消失。

感谢。

1 个答案:

答案 0 :(得分:1)

这在文档中列出:

  

dlmwrite(filename,M)将数组M中的数字数据写入ASCII格式文件filename,使用默认分隔符(,)分隔数组元素。如果文件filename已经存在,则dlmwrite将覆盖该文件。

忽略非数字数据,这就是数据丢失的原因。

解决问题的一种方法是编写一个类似-Inf的数字,然后使用后处理器删除这些元素