24小时热门版块排行榜    

查看: 1318  |  回复: 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的回帖

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的回帖
查看全部 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 ...

不好意思,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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 不应该看fileCode +6 且听虎啸 2026-08-12 8/400 2026-08-13 12:07 by 小木虫6752397
[基金申请] 关于Filecode分析方法 +9 majunge000 2026-08-10 11/550 2026-08-13 10:40 by ZH远山
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +9 家与远方 2026-08-10 14/700 2026-08-13 09:41 by 臭臭不臭01
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +22 Lanmanbaby 2026-08-09 36/1800 2026-08-12 22:50 by sdfapple719
[基金申请] filecode +13 documentary 2026-08-10 15/750 2026-08-12 15:56 by 云上清扬
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +7 布布和一二 2026-08-10 10/500 2026-08-12 09:12 by 布布和一二
[基金申请] 为什么网上很多人说本周 12号出结果 +6 瞬息宇宙 2026-08-10 7/350 2026-08-11 19:25 by Tide man
[基金申请] 基金中了 +15 laoda193707 2026-08-06 15/750 2026-08-11 00:11 by jiafei2190
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 静等基金结果 +5 gjjjzhong 2026-08-10 16/800 2026-08-10 17:19 by Tide man
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 2026国自然放榜时间 +9 布布和一二 2026-08-08 9/450 2026-08-10 11:22 by xxxx2020
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] filecode与中标关系的预测 +5 布布和一二 2026-08-07 5/250 2026-08-09 16:15 by 袁向阳007
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] 固定端突然变了,今天 +6 archvillain 2026-08-06 10/500 2026-08-07 16:03 by 医学老男孩
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
信息提示
请填处理意见