使用dlmwrite添加终止符字符串

时间:2013-06-02 16:44:10

标签: matlab file-io delimited-text

我写了这个:

dlmwrite(fName,IND,'-append',...  %// Print the matrix
     'delimiter','\n', 'newline','pc');

输出是这样的:

23 46 56 67

我应该如何修改dlmwrite函数以获得如下输出:

23, 46, 56, 67;

2 个答案:

答案 0 :(得分:1)

为什么使用'\n'作为分隔符?您应该使用','代替(默认情况下,顺便说一句,因此在这种情况下您根本不需要修改'delimiter'属性)。

如果你想使用修改后的分隔符和分号来终止每一行,那么dlmwrite就会出现问题,所以请使用功能更强大的fprintf代替:

fid = fopen(fName, 'a');
fprintf(fid, [repmat('%d, ', 1, size(IND, 2) - 1), '%d;\r\n'], IND.');
fclose(fid);

修改
你的问题对于所需的输出有点不清楚,所以这里还有两个选项:

  • 如果您想将数据写为一个长行,而不是size(IND, 2)通过numel(IND)

    fprintf(fid, [repmat('%d, ', 1, numel(IND) - 1), '%d;\r\n'], IND.');
    

    或使用以下三线代替:

    X = IND.';
    fprintf(fid, '%d, ', X(1:end - 1));
    fprintf(fid, '%d;\r\n', X(end));
    
  • 如果您想逐列序列化矩阵,请不要转置IND

    fprintf(fid, [repmat('%d, ', 1, size(IND, 2) - 1), '%d;\r\n'], IND);
    

答案 1 :(得分:0)

尝试使用参数'delimiter', ', ', 'newline', ';\r\n'

在Octave中有效;从Matlab documentation可以看出,Matlab版本除了'pc'和'unix'之外还接受'newline'的值。