MATLAB导出CSV文件时元数据行之间出现多余空行如何解决
问题根源
你遇到的多余空行来自两个核心原因:
- 原始文件是Windows格式,行尾为
\r\n,仅用\n拆分字符串会导致每行末尾残留\r字符,部分空白行会被识别为有效行保留 - 原始元数据本身包含大量全空/仅含逗号的无效行,导出时这些空行的空单元格会被自动填充为连续逗号,也就是你看到的
,,,,格式的空行
具体修改方案
你只需要修改元数据读取处理部分的代码即可,无需调整后续数值处理逻辑:
1. 清理换行符并过滤无效空行
将原来的元数据读取拆分代码替换为以下内容:
%% Reading the metadata from the file T2 = fopen(fileName); metaData = fread(T2, '*char')'; %read content fclose(T2); % 新增:清理Windows换行符的\r,避免残留 metaData = strrep(metaData, char(13), ''); results = strsplit(metaData, '\n'); %split the char data by entry spaces % 新增:过滤掉全空/仅含空白字符的无效行 results = results(~cellfun(@(x) all(isspace(x)), results)); % 替换硬编码的52行:自动识别#collectors位置,取前面的元数据,兼容性更强 collector_idx = find(contains(results, '#collectors'), 1, 'first'); metaNeat = results(1:collector_idx-1)'; %Takes the metadata prior to #collectors % 新增:替换Instrument为NGX,匹配你期望的输出效果 metaNeat = cellfun(@(x) strrep(x, 'Instrument', 'NGX'), metaNeat, 'UniformOutput', false);
2. 可选优化导出参数
在writecell中增加覆盖写入参数,避免旧文件残留内容影响:
writecell(outPut,fileOut,'Delimiter',',', 'FileType', 'text', 'WriteMode', 'overwrite')
修改后即可直接得到符合你预期的导出效果,不会再出现多余的空行。
内容的提问来源于stack exchange,提问作者KK_Argon
相关产品推荐
相关产品推荐

