matlab写⼊txt覆盖,如何读取txt内容调整格式并写⼊另⼀txt⽂
件指定处覆盖
本帖最后由 keaSSy_Liug 于 2017-2-27 13:36 编辑
本⼈MATLAB⼩⽩⼀枚,但是现在需要⽤它来处理⼀部分数据,特地向请教论坛⾥⾯的MATLAB⼤神们请教。
问题描述:
将⽂本⽂件“origin_data.dat”中的数据经过⼀定的格式调整后,写⼊到指定⽂件“adjusted.fem”(这也是⼀个⽂本⽂件,可以⽤txt打开,但是⾥⾯还有许多其他⼀些⽂本内容)中某指定⾏(⽬前需要修改的⾏数为46300⾏~56866⾏,后期⾏数可能会变)以替换该处的原数据。
其中,整个origin_data.dat⽂件内的数据格式为:
TEMP*                  1              1  2.2922583E+001
TEMP*                  1              2  2.2925748E+001
TEMP*                  1              3  2.2934256E+001
TEMP*                  1              4  2.2953815E+001
TEMP*                  1              5  2.2978991E+001
TEMP*                  1              6  2.3009394E+001
TEMP*                  1              7  2.3042152E+001
TEMP*                  1              8  2.3073826E+001
TEMP*                  1              9  2.3102121E+001
TEMP*                  1            10  2.3125411E+001
……
……
TEMP*                  1      10560  2.2877470E+001
TEMP*                  1      10561  2.2882188E+001
TEMP*                  1      10562  2.3228218E+001
TEMP*                  1      10563  2.2792461E+001
TEMP*                  1      10564  2.3016905E+001
TEMP*                  1      10565  2.3163003E+001
TEMP*                  1      10566  2.3149559E+001
TEMP*                  1      10567  2.2979719E+001
⽂件adjusted.fem内的需要替换处的数据(⼤概在46300⾏开始)格式为:
TEMP          1  1056724.0
TEMP          1  1056624.0
TEMP          1  1056524.0
TEMP          1  1056424.0
TEMP          1  1056324.0
TEMP          1  1056224.0
TEMP          1  1056124.0
fprintf格式TEMP          1  1056024.0
……
……
TEMP          1        1024.0
TEMP          1          924.0
TEMP          1          824.0
TEMP          1          724.0
TEMP          1          624.0
TEMP          1          524.0
TEMP          1          424.0
TEMP          1          324.0
TEMP          1          224.0
TEMP          1          124.0
需要将⽂件adjusted.fem内对应每⾏最后⾯的“24.0”替换成origin_data.dat⽂件内对应数值,例如:⽂件adjusted.fem内第⼀⾏的24.0要换成⽂件origin_data.dat最后⼀⾏的22.97972(最后⼀位数四舍五⼊);⽂件adjusted.fem内第⼆⾏的24.0要换成⽂件
origin_data.dat倒数第⼆⾏的23.14956(最后⼀位数四舍五⼊)……;⽂件adjusted.fem内最后⼀⾏的24.0要换成⽂件origin_data.dat第⼀⾏的22.92258(最后⼀位数四舍五⼊),并调整各列间的空格符。
⽬前我只会将⽂件origin_data.dat内数据格式调整好,并写⼊到某指定⽂件proceseed_data.dat(⼀个
空⽩的txt⽂件)内,然后⾃⼰⼿动复制proceseed_data.dat内的内容再粘贴到⽂件adjusted.fem⾥⾯去,但是数据有好多,这样操作好⿇烦,语句如下:
function lines = get_lines(fid)
% This function can be used to get thelines of a plain text file.
% Input:
%  fid: id of the file
% Output:
%  lines: lines of the input file.
lines = 0;
while ~feof(fid)
fgetl(fid);
lines = lines + 1;
end
fid = fopen('origin_data.dat');
%打开原始数据⽂件origin_data.dat
lines = get_lines(fid);
%读取⽂件总共有⼏⾏
format = '%s %d %d %f';
%定义读取时内容的格式
[x y z w] = textread('origin_data.dat',format);
xx = x;
for i = 1:size(x)
xx{i} = strrep(x{i},'*','');
end
%将*去掉
fid1 = fopen('proceseed_data.dat', 'at');
%将读取调整后内容写⼊proceseed_data.dat
format1 = '%-14s %-d %7d%-.5f\n';
for i = 1:lines
fprintf(fid1, format1, xx{i}, y(i), z(i), w(i));
end
fclose(fid);现在想请教的是如何能直接将origin_data.dat⽂件内的数据调整格式后,写到⽂件adjusted.fem内的指定地⽅(就是那个很多“TEMP”开始的那个地⽅)并把原来的数据覆盖。其中⽂件adjusted.fem内出现“TEMP”字符的地⽅有很多处(详见adjusted.fem⽂件,⽤记事本txt就可以打开),但是连续三⾏(或者更多⾏)最开头都出现“TEMP”字符的就只有需要替换数据的那个地⽅。相关⽂件已经添加在压缩包“problem_description.rar”中,恳请论坛⾥⾯的⾼⼿相助,这个很着急。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。