我写了这个:
dlmwrite(fName,IND,'-append',... %// Print the matrix
'delimiter','\n', 'newline','pc');
输出是这样的:
23 46 56 67
我应该如何修改dlmwrite函数以获得如下输出:
23, 46, 56, 67;
答案 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'的值。