You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB R2017a读写空行分隔8x8矩阵CSV文件方法

MATLAB R2017a 分块8×8矩阵CSV读写方案

R2017a环境下不要使用R2019a才引入的readmatrix/writematrix,也不要用已废弃的textread,直接用MATLAB长期稳定支持的底层文件IO函数即可,完全匹配你的格式要求,不需要额外工具箱。

读取所有8×8矩阵

实现逻辑:一次性读入文件内所有数值,自动跳过逗号、空白字符、空行,再按每64个数值(8×8)切分重构矩阵即可,不需要逐行判断空行,对不同换行格式、空行夹杂冗余空格的场景兼容性更强。

% 替换为你的实际输入文件路径
input_file = 'your_input.csv';
fid = fopen(input_file, 'r');
% 读取所有整数值,自动识别逗号、空格、换行作为分隔符
raw_data = textscan(fid, '%d', 'Delimiter', ',', 'Whitespace', ' \t\r\n');
fclose(fid);
% 按8×8维度分块重构矩阵
val_list = raw_data{1};
matrix_num = length(val_list) / 64;
input_mats = cell(matrix_num, 1);
for k = 1:matrix_num
    seg = val_list((k-1)*64 + 1 : k*64);
    % 适配MATLAB列优先存储规则,转置后和原文件行顺序完全一致
    input_mats{k} = reshape(seg, 8, 8)';
end

读取完成后input_mats是元胞数组,每个元素就是一个8×8的整数矩阵,可以直接取出来做运算。

写入运算后的浮点结果矩阵

输出格式完全对齐原文件:每行8个数值、逗号分隔、固定宽度对齐,每个矩阵末尾加空行分隔。可以根据需求调整浮点数的显示精度。

% 替换为你的实际输出文件路径
output_file = 'your_output.csv';
fid = fopen(output_file, 'w');
for k = 1:length(input_mats)
    % 替换为你的实际运算逻辑,此处仅做示例:将输入矩阵转为浮点后除以2
    res_mat = double(input_mats{k}) / 2;
    
    % 逐行写入矩阵内容
    for row = 1:8
        % 每行前7个数值后加逗号
        fprintf(fid, '%4.1f,', res_mat(row, 1:7));
        % 每行最后一个数值后加换行
        fprintf(fid, '%4.1f\n', res_mat(row, 8));
    end
    % 单个矩阵写入完成后加空行分隔
    fprintf(fid, '\n');
end
fclose(fid);

格式调整说明

  • 如果需要修改浮点数精度,把格式符%4.1f里的.1改成对应小数位即可,比如保留2位小数用%4.2f,输出整数直接替换为%4d,宽度设置为4和你给出的原文件对齐效果完全一致。
  • 上述代码在Windows、macOS、Linux系统下都能正常运行,不会出现换行符不兼容的问题。

内容的提问来源于stack exchange,提问作者gyuunyuu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:15:43