我正在使用MATLAB打开一批包含列标题和数据的CSV文件(使用importdata
函数),然后我稍微操纵数据并使用以下方法将标题和数据写入新的CSV文件dlmwrite
功能。我使用-append
的{{1}}和newline
属性在新行上添加每行文本/数据。
我的每个新CSV文件末尾都有一个空白行,而当我读入数据时,此空行不存在...而且我最后一次调用时没有使用dlmwrite
newline
。
是否有人知道如何将此空白行写入我的CSV文件末尾?
添加了有关每个请求的代码和文本文件的信息...在执行下面的过程后,您会注意到新文本文件中最后一行的末尾似乎有回车符。
考虑一个名为'textfile.txt'的文本文件,如下所示:
dlmwrite
以下是我正在使用的代码示例:
Column1, Column2, Column3, Column4, Column 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
1, 2, 3, 4, 5
答案 0 :(得分:3)
如果未在DLMWRITE中指定“newline”选项,则MATLAB使用UNIX样式的行尾字符(LF,十六进制代码中的\ x0A),即使在Windows机器上也是如此。但无论如何它确实放了新线。
如果你指定'newline','pc',它会把DOS行尾字符(CRLF,\ x0D0A用十六进制代码)。
记事本只能理解DOS行尾。写字板理解两者。至少它在我的机器上是怎么回事。
我建议您保持一致,并对所有行使用相同的“换行符”选项。这样你也可以避免for循环。然后尝试在MATLAB编辑器中打开输出文件。
为什么你根本不想要行尾字符呢?如果这是您所需要的,请使用FPRINTF功能。要做到这一点,你必须先用FOPEN打开文件。重写输出的整个代码可能会更好。
这样的事情:
fid = fopen('textfile_updated.txt','w');
fprintf(fid,'%s\r\n',columnHeaders); %# \r\n for PC end-of-line
fprintf(fid,[repmat('%d,',1,size(importedData.data,2)-1) '%d\r\n'],importedData.data(1:end-1,:)');
fprintf(fid,[repmat('%d,',1,size(importedData.data,2)-1) '%d'],importedData.data(end,:));
fclose(fid);