自己已经写出来了,贴出来供大家讨论。欢迎指正。
clc
clear
close all
%用此代码从ADS生成的多组扫参txt文件中提取每个参数下的数据,写入不同的文件中
filein='C:\Users\下楼梯的人\OneDrive\桌面\RNN\monte carlo generate data\monte Carlo test1.txt';
[title_line,num_line]=getTitleRow(filein);
datablock_num=floor(length(title_line)/2);%数据块的数量
index=1;%每个数据块的行数区间
for i=1:datablock_num
datablock_len=title_line(2*i)-title_line(2*i-1)-1;%每个数据块的行数区间长度
fileout=['C:\Users\下楼梯的人\OneDrive\桌面\RNN\monte carlo generate data\fileout',int2str(i),'.txt'];
dataout=txtread(filein,fileout,num_line(index:index+datablock_len-1));
index=index+datablock_len;
end
%%%%%%%%%%%%%%%%%%%%
function [title,num]=getTitleRow(filein)
fidin=fopen(filein,'r');
title=[]; num=[];
nline=0;
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
nline=nline+1;
if tline~=0%排除空格行
if double(tline(1))>=48 && double(tline(1))<=57 % 判断首字符是否bu是数值
num=[num,nline];
else
title=[title,nline];
end
else
title=[title,nline];
end
end
fclose(fidin);
end
%%%%%%%%%%%%%%%
function [title,num]=getTitleRow(filein)
%从ADS导出的txt文件中,找到是string类型的title,以及num类型的data
fidin=fopen(filein,'r');
title=[]; num=[];
nline=0;
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
nline=nline+1;
if tline~=0%排除空格行
if double(tline(1))>=48 && double(tline(1))<=57 % 判断首字符是否bu是数值
num=[num,nline];
else
title=[title,nline];
end
else
title=[title,nline];
end
end
fclose(fidin);
end