24小时热门版块排行榜    

查看: 999  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

keaSSy

至尊木虫 (著名写手)

[求助] MATLAB读写TXT文件数据求助 已有2人参与

本人MATLAB小白,但在用到一些txt文本数据的时候,需要将数据从一个txt文件(名叫“origin_date.txt”)以特定方式重新写入另一个txt文件(就叫“processed_date.txt”吧)中,想请论坛中熟悉MATLAB的大神请教,以提高效率。
原始数据形式如下:
TEMP*                  1                 1  12.1
TEMP*                  1                 2  12.2
TEMP*                  1                 3  12.3
TEMP*                  1                 4  12.4
TEMP*                  1                 5  12.5
TEMP*                  1                 6  12.6
TEMP*                  1                 7  12.7
TEMP*                  1                 8  12.8
TEMP*                  1                 9  12.9
TEMP*                  1               10  12.0
TEMP*                  1               11  13.1
TEMP*                  1               12  13.2
TEMP*                  1               13  13.3
TEMP*                  1               14  13.4
TEMP*                  1               15  13.5
TEMP*                  1               16  13.6
TEMP*                  1               17  13.7
TEMP*                  1               18  13.8
TEMP*                  1               19  13.9
TEMP*                  1               20  13.0
……
TEMP*                  1         30810  13.3
其中,TEMP*和1之间有18个字符;第3列数据为右对齐,相当于也占了18个字符(包含第3组中的数据值);底3、4列数据尖有两个字符。
现在需要把它处理完成后形式:
TEMP□□□□□1□□□□□□□1□□□□□□12.1
TEMP□□□□□1□□□□□□□2□□□□□□12.2
……
TEMP□□□□□1□□□□□□□10□□□□□12.0
TEMP□□□□□1□□□□□□□11□□□□□13.1
……
TEMP□□□□□1□□□□□□□30810□□13.0
其中,第1列需要把*(星号)去掉;第1列数据和第2列数据之间变为5个字符;第3列数据为左对齐,占7个字符;第4列数据为左对齐,无特殊要求。上面的“□”是代表空格,只是为了看起来方便,最终数据中都是空格。这个比较着急,希望能有人相助,深表感谢。附件为一部分数据。
回复此楼

» 猜你喜欢

你必须非常努力才能看起来毫不费力
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
keaSSy(小红豆代发): 金币+20 2018-04-17 10:29:04
引用回帖:
4楼: Originally posted by keaSSy at 2016-09-11 10:48:35
不好意思,3楼的是失误,不小心把一个表情点进代码里面去了
我的想法是先从原始数据里面把数据分成四组,分别为x,y,z,w,然后在写进另一文件proceseed_date.txt中,但是不知道哪里出错了,二切我不知道怎么去除那 ...

如果只是将TEMP*替换为TEMP,则采用如下代码
CODE:
clear clc format = '%s %d %d %f'; [x y z w] = textread('origin_date.txt', format); fid = fopen('proceseed_date.txt', 'at'); format1 = 'TEMP %-8d %-7d %-f\n'; for i = 1:20 fprintf(fid, format1, y(i), z(i), w(i)); end fclose(fid);

如果是一般性含*的字符串,则采用如下代码,删除字符串中的*。
CODE:
clear clc format = '%s %d %d %f'; [x y z w] = textread('origin_date.txt', format); xx = x; for i = 1:size(x) xx{i} = strrep(x{i},'*',''); end fid = fopen('proceseed_date.txt', 'at'); format1 = '%-9s %-8d %-7d %-f\n'; for i = 1:20 fprintf(fid, format1, xx{i}, y(i), z(i), w(i)); end fclose(fid);

知其然,知其所以然。
5楼2016-09-11 12:20:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
https://www.mathworks.com/help/matlab/ref/textread.html
Read data from text file; write to multiple outputs

https://www.mathworks.com/help/matlab/ref/fprintf.html
Write data to text file
CODE:
The first line of mydata.dat is
Sally    Level1 12.34 45 Yes

[names, types, x, y, answer] = textread('mydata.dat', ...
'%s %s %f %d %s', 1)

CODE:
A1 = [9.9, 9900];
A2 = [8.8,  7.7 ; ...
      8800, 7700];
formatSpec = 'X is %4.2f meters or %8.3f mm\n';
fprintf(formatSpec,A1,A2)

2楼2016-09-11 09:14:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

keaSSy

至尊木虫 (著名写手)

引用回帖:
2楼: Originally posted by FMStation at 2016-09-11 09:14:04
https://www.mathworks.com/help/matlab/ref/textread.html
Read data from text file; write to multiple outputs

https://www.mathworks.com/help/matlab/ref/fprintf.html
Write data to text file


Th ...

我的想法是先从原始数据里面把数据分成四组,分别为x,y,z,w,然后在写进另一文件proceseed_date.txt中,但是不知道哪里出错了,二切我不知道怎么去除那个“*”(星号),求大神帮忙改一下我下面的代码,真心是不会啊
format = '%s %d %d %f';
[x y z w] = textread('origin_date.txt', format);

fid = fopen('proceseed_date.txt', 'at');
format1 = '%-9s %-8d %-7d %-f\n';
for i = 1:20
    fprintf(fid, format1, x(i,, y(i), z(i), w(i));
end
fclose(fid);
你必须非常努力才能看起来毫不费力
3楼2016-09-11 10:45:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

keaSSy

至尊木虫 (著名写手)

引用回帖:
2楼: Originally posted by FMStation at 2016-09-11 09:14:04
https://www.mathworks.com/help/matlab/ref/textread.html
Read data from text file; write to multiple outputs

https://www.mathworks.com/help/matlab/ref/fprintf.html
Write data to text file


Th ...

不好意思,3楼的是失误,不小心把一个表情点进代码里面去了
我的想法是先从原始数据里面把数据分成四组,分别为x,y,z,w,然后在写进另一文件proceseed_date.txt中,但是不知道哪里出错了,二切我不知道怎么去除那个“*”(星号),求大神帮忙改一下我下面的代码,真心是不会啊
format = '%s %d %d %f';
[x y z w] = textread('origin_date.txt', format);

fid = fopen('proceseed_date.txt', 'at');
format1 = '%-9s %-8d %-7d %-f\n';
for i = 1:20
    fprintf(fid, format1, x(i,, y(i), z(i), w(i));
end
fclose(fid);
你必须非常努力才能看起来毫不费力
4楼2016-09-11 10:48:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 学校已经提交到NSFC,还能修改吗? 40+4 babangida 2026-03-19 9/450 2026-03-21 16:12 by babangida
[考研] 297求调剂 +11 戏精丹丹丹 2026-03-17 11/550 2026-03-21 15:43 by ColorlessPI
[考研] 265求调剂 +12 梁梁校校 2026-03-19 14/700 2026-03-21 13:38 by lature00
[考研] 能源材料化学课题组招收硕士研究生8-10名 +5 脱颖而出 2026-03-16 15/750 2026-03-21 10:16 by 脱颖而出
[考研] 求调剂 +6 Mqqqqqq 2026-03-19 6/300 2026-03-21 08:04 by JourneyLucky
[考研] 301求调剂 +10 yy要上岸呀 2026-03-17 10/500 2026-03-21 03:14 by JourneyLucky
[考研] 材料 336 求调剂 +3 An@. 2026-03-18 4/200 2026-03-21 01:39 by JourneyLucky
[考研] 271材料工程求调剂 +8 .6lL 2026-03-18 8/400 2026-03-21 00:58 by JourneyLucky
[考研] 材料专业求调剂 +6 hanamiko 2026-03-18 6/300 2026-03-21 00:24 by JourneyLucky
[考研] 材料与化工 322求调剂 +4 然11 2026-03-19 4/200 2026-03-20 22:12 by luoyongfeng
[考研] 一志愿苏州大学材料求调剂,总分315(英一) +5 sbdksD 2026-03-19 5/250 2026-03-20 22:10 by luoyongfeng
[考研] 求调剂 +3 @taotao 2026-03-20 3/150 2026-03-20 19:35 by JourneyLucky
[考研] 08工学调剂 +5 用户573181 2026-03-20 5/250 2026-03-20 15:47 by xia_2003
[考研] 材料考研调剂 +3 xwt。 2026-03-19 3/150 2026-03-19 11:22 by w沐阳w
[考研] 化学工程321分求调剂 +15 大米饭! 2026-03-15 18/900 2026-03-18 14:52 by haxia
[考研] 277调剂 +5 自由煎饼果子 2026-03-16 6/300 2026-03-17 19:26 by 李leezz
[考博] 26申博 +4 八6八68 2026-03-16 4/200 2026-03-17 13:00 by 轻松不少随
[考研] 材料工程专硕274一志愿211求调剂 +6 薛云鹏 2026-03-15 6/300 2026-03-17 11:05 by 学员h26Tkc
[考研] 275求调剂 +4 太阳花天天开心 2026-03-16 4/200 2026-03-17 10:53 by 功夫疯狂
[考研] 085601材料工程315分求调剂 +3 yang_0104 2026-03-15 3/150 2026-03-15 10:58 by peike
信息提示
请填处理意见