找回密码
 注册
Simdroid-非首页
查看: 66|回复: 3

matlab将一个含有规律的dat文件,拆分成多个dat文件并输出?

[复制链接]
发表于 2018-5-19 22:56:25 | 显示全部楼层 |阅读模式 来自 河北保定
悬赏2仿真币已解决

如题,我有一个有一定规律的dat文件,想每隔16行输出为一个新的dat文件(对应文件中的load到quit,为一个要输出的dat文件)

该16行的字符、数据、格式都不可以变,包括空的一行也要保留;

输出名称的话 最好也有规律;(实际要输出上千个dat文件 ,上传只是要输出的前四个dat);

求指导!!



附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

利用 fgets 函數可以完成,程式碼請參考,希望有幫到你! clc,clear fid = fopen('input.dat','r'); %开启资料档 % fname='input.dat'; %设定输入档名变数 % str='QUIT'; %设定输入的判断字串变数,如LOAD、QUIT % count=strcount(fname, str); count=strcount('input.dat', 'QUIT'); %计算特殊字串个数的函数,如LOAD、QUIT k=0; %暂存变数 for i=1:count fileout=['Alex-' ...
发表于 2018-5-19 22:56:26 | 显示全部楼层 来自 台湾
Simdroid开发平台
利用 fgets 函數可以完成,程式碼請參考,希望有幫到你!

clc,clear
fid = fopen('input.dat','r');   %开启资料档
% fname='input.dat';      %设定输入档名变数
% str='QUIT';                         %设定输入的判断字串变数,如LOAD、QUIT
% count=strcount(fname, str);

count=strcount('input.dat', 'QUIT');   %计算特殊字串个数的函数,如LOAD、QUIT
k=0;             %暂存变数

for i=1:count
    fileout=['Alex-'  num2str(i,'%04.0f')  '.dat'];    %输出档名,格式如: 'Alex-0028.dat' ,请自行修改所需
    fod = fopen(fileout,'w');   
    for j=k+1:k+17     %17为input.dat 档分割档案的行数
        A= fgets(fid);
        fprintf(fod,'%s',A);
    end
    fclose(fod);   %关闭输出档案
    k=17*i;         %第i组分割档开始读取行数
end

fclose(fid);    %关闭输入档案
fprintf('总共输出 %d 个档案\n',count);
%主程式结束


function y = strcount(filename, str)
% Count the number of times a given str appears in each line.

fid = fopen(filename);
y = 0;
tline = fgetl(fid);
while ischar(tline)
   matches = strfind(tline, str);
   num = length(matches);
   if num > 0
      y = y + num;
%       fprintf(1,'%d:%s\n',num,tline);
   end
   tline = fgetl(fid);
end
fclose(fid);
%end  自订函数,跟主程式放在同一档案内时,打开
回复

使用道具 举报

 楼主| 发表于 2018-5-20 14:06:58 | 显示全部楼层 来自 河北保定
:):):):):):)
回复

使用道具 举报

 楼主| 发表于 2018-5-23 11:56:34 | 显示全部楼层 来自 河北保定
Phantom28 发表于 2018-5-23 07:09
利用 fgets 函數可以完成,程式碼請參考,希望有幫到你!

clc,clear

大神 厉害!非常感谢!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-27 14:20 , Processed in 0.037110 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表