每天都在改变

matlab批量读取和格式化输出数据文件

2019.10.29

ansys响应计算需要读取几百个压力时程数据包,奈何几百个数据包包含头文件,空格符号和异常的跳点等,这些是ansys无法正常处理的。作为一个懒人,时程文件一个一个手动修改是不可能的(手动逐个修改大概需要1天、2天、3、4、5....😭),遂matlab写个脚本,五分钟跑完所有数据。

脚本功能:

  • 批量读取压力时程数据
  • 提取压力时程数据
  • 异常跳点平均化处理
  • 批量输出格式化时程数据文件
clear
clc
direction = 'D:\matlab\无堆芯监测点\监视点\a';
ent_ = '.out';
for i = 1:220
    id = int2str(i);                            %数值转换为字符串
    if strlength(id) == 1                       %获得字符串长度
        id = ['00',id];                         %字符串相加
        filedirection = [direction,id,ent_];    %带读取数据文件路径
    else if strlength(id) == 2
            id = ['0',id];
            filedirection = [direction,id,ent_];
        else
            filedirection = [direction,id,ent_];
        end
    end
    A = importdata(filedirection);              %读取文件
    x = A.data;                                 %获取数据文件

    %跳点处理
    x(1,2) = (x(3,2) + x(4,2))/2;
    x(2,2) = (x(4,2) + x(5,2))/2;
    x(1938,2) = (x(1937,2) + x(1939,2))/2;
    x(3875,2) = (x(3873,2) + x(3877,2))/2;
    x(3876,2) = (x(3874,2) + x(3878,2))/2;
    x(5812,2) = (x(5810,2) + x(5814,2))/2;
    x(5813,2) = (x(5811,2) + x(5815,2))/2;
    
    %数据文件输出
    filename = ['a',id,'.out'];                 %输出文件命名
    fileID = fopen(filename,'w');               %新建文件并写入
    for j = 1:8000
        %数据之间逗号间隔输出
        fprintf(fileID,'%f,',x(j,1));           % %f浮点数存储数据,逗号‘,’间隔
        fprintf(fileID,'%f\n',x(j,2));          % 写入后换行
        %数据之间空格输出
        %for k = 1:2
            %fprintf(fileID,'%f,',x(j,k));
        %end
        %fprintf(fileID,'\n');
    end
    fclose(fileID);
%     figure(i);
%     plot(x);
%     legend(filename);
%     hold on;
end

输出格式如下: