爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6133|回复: 1

[程序设计] 干货—matlab读取txt,实用教程(合并file2到file1)

[复制链接]
发表于 2022-3-25 13:17:41 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
干货—matlab读取txt,实用教程(合并file2到file1)

file1 内容如下:file2和file1类似,把file2相同时间的内容放到file1对应时间下!


file2 :


而且实现对应时间上的行数相加
:12+16
最终结果:



matlab:代码

clear;clc;close all;
file1='file1.txt';
file2='file2.txt';
%% read file1
fid=fopen(file1,'r');%open file
eng1='000000000';% 用于储存.txt的变量,初始值定为字符串,可用于储存.txt的数据;
row=0;%row at start is zero.

。。。
fclose(fid);%close file ;读取完毕;
%% read file2
fid=fopen(file2,'r');%open file
eng2='000000000';% 用于储存.txt的变量,初始值定为字符串,可用于储存.txt的数据;
row_2=0;%row at start is zero.
while ~feof(fid) %if eixt file ,then run
    row_2=row_2+1; % read file according row
    a_2=fgetl(fid);% data give a;
    num_2=length(a_2);% 每一行多长
    eng2(row_2,1:num_2)=a_2;% 列数循环读取,放进每一行中;
end
fclose(fid);%close file ;读取完毕;
%% file1
fi_1_j=[];% 用于计算一个.txt内部台风开始的行数;
for ty_i=1:length(eng1(:,1))% 行循环
    read_a=eng1(ty_i,1);% 读取行的第一个字符,
    if read_a=='>'% 判断是否是一个>的开始,你可以仔细观察,一个'>'
        fi_1_j=[fi_1_j ty_i];
    end
end
fi_1_j_new=fi_1_j(2:end);
%% file1
fi_2_j=[];% 用于计算一个.txt内部台风开始的行数;
for ty_i=1:length(eng2(:,1))% 行循环
    read_a=eng2(ty_i,1);% 读取行的第一个字符,
    if read_a=='>'% 判断是否是一个>的开始,你可以仔细观察,一个'>'
        fi_2_j=[fi_2_j ty_i];
    end
end
fi_2_j_new=fi_2_j(2:end);
%头文件
fi_start=eng1(1:fi_1_j(1),:);
%
for i=1:length(fi_1_j_new)
    fi_row_fi(i)=str2num(eng1(fi_1_j_new(i),34:35))+str2num(eng2(fi_2_j_new(i),34:35));
end
%
for i=1:length(fi_1_j_new)
    fi_row(i,:)=[num2str(eng1(fi_1_j_new(i),1:33)),num2str(fi_row_fi(i)),num2str(eng1(fi_1_j_new(i),36:end))];
end
%%
fi_1_j_new=[fi_1_j_new length(eng1)+1];
fi_2_j_new=[fi_2_j_new length(eng2)+1];
fid=fopen('file.txt','wt');
% 先写入头文件
[m,~]=size(fi_start);
for i=1:m
    fprintf(fid,'%s\n',fi_start(i,:));
end
% 然后按照file1,file2顺序写入file中;
for ii=1:length(fi_row(:,1))
    fprintf(fid,'%s\n', fi_row(ii,:));%时间;
    % 输入file1的内容;然后接着输入file2的内容;
    content=eng1(fi_1_j_new(ii)+1:fi_1_j_new(ii+1)-1,:);
    [m,~]=size(content);
    for i=1:m
        fprintf(fid,'%s\n',content(i,:));
    end
    % 输入file1的内容;然后接着输入file2的内容;
    content=eng2(fi_2_j_new(ii)+1:fi_2_j_new(ii+1)-1,:);
    [m,~]=size(content);
    for i=1:m
        fprintf(fid,'%s\n',content(i,:));
    end   
end
fclose(fid)%关闭文件;
%

file.txt

34.41 KB, 下载次数: 1, 下载积分: 金钱 -5

file1.txt

13.49 KB, 下载次数: 1, 下载积分: 金钱 -5

file2.txt

20.47 KB, 下载次数: 1, 下载积分: 金钱 -5

merge_file2_to_file1.m

2.5 KB, 下载次数: 4, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao
发表于 2022-5-24 08:53:45 | 显示全部楼层
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

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