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小时内删除。
发表评论