我写了这个:
dlmwrite(fName,IND,'-append',... %// Print the matrix
'delimiter','\n', 'newline','pc');
输出是这样的:
23 46 56 67
我应该如何修改 dlmwrite 函数以获得这样的输出:
23, 46, 56, 67;
为什么要'\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);
尝试使用参数'delimiter', ', ', 'newline', ';\r\n'
这在八度音程中有效;从Matlab 文档中不清楚Matlab 版本是否接受除“pc”和“unix”之外的“换行符”值。