1

我写了这个:

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

输出是这样的:

23 46 56 67

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

23, 46, 56, 67;
4

2 回答 2

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)pass 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);
    
于 2013-06-02T16:47:12.803 回答
0

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

这在八度音程中有效;从Matlab 文档中不清楚Matlab 版本是否接受除“pc”和“unix”之外的“换行符”值。

于 2013-06-02T16:49:00.373 回答