24小时热门版块排行榜    

CyRhmU.jpeg
查看: 3947  |  回复: 8

sduckc

金虫 (正式写手)

[求助] Matlab读取多个文件中某一列的最大值然后输出到一个txt中已有2人参与

比如我有30个数据(其实我有更多的,但逻辑是一样的),名字是Data1.txt, Data2.txt … Data30.txt ….

每个txt有200行5列

请问如何用一个matlab单独的code来依次读取这些文件,找到每个文件的第五列的最大值,然后将最大值所在的这一行输出到一个单独的txt文件中

这样子,当读取完所有的文件并依次存储那一行之后,就会生成一个单独的txt文件

请大侠们帮帮忙

谢谢
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sduckc

金虫 (正式写手)

谢谢,我先看看。
2楼2014-01-14 08:52:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yueyue_2013

金虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
xzhdty: 谢谢参与 2014-01-14 09:49:15
matlab  好久不用大致步骤:
A=fopen(‘文件名.格式’)
A中读取第五行最大值
存为a
save a  文件名.TXT-ascii
读取第五行最大值可在matlab界面中选取,程序代码会自动生成找到最大值。
其实用mathmatic更简单。只是好久不玩matlab了。少年加油好好试一试,你会有很多自己的体会的哦

» 本帖已获得的红花(最新10朵)

为了最初的梦想
3楼2014-01-14 09:03:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sduckc

金虫 (正式写手)

送红花一朵
引用回帖:
3楼: Originally posted by yueyue_2013 at 2014-01-14 09:03:01
matlab  好久不用大致步骤:
A=fopen(‘文件名.格式’)
A中读取第五行最大值
存为a
save a  文件名.TXT-ascii
读取第五行最大值可在matlab界面中选取,程序代码会自动生成找到最大值。
其实用mathmatic更 ...

谢谢,虽然看的一知半解。
4楼2014-01-14 09:07:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jsky1988

新虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
sduckc: 金币+30, ★★★很有帮助, 可否帮忙试运行前5个数据?我对matlab很不懂啊 2014-01-15 08:04:52
首先需要构造文件路径:
PathAll=strcat("根目录",“Data”);
PathAll=strcat(PathAll,‘1’+i);%i是循环变量
PathAll=strcat(PathAll,".txt";
data=importdata(Pathall);
这样txt就导入到matlab的data变量中,data是一个200行5列的数据
用max(data(:,5))求第五列的最大值
最后用fopen打开一个文件,然后写入你要写的数据就行啦。。
5楼2014-01-14 14:41:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sduckc

金虫 (正式写手)

引用回帖:
5楼: Originally posted by jsky1988 at 2014-01-14 14:41:18
首先需要构造文件路径:
PathAll=strcat("根目录",“Data”);
PathAll=strcat(PathAll,‘1’+i);%i是循环变量
PathAll=strcat(PathAll,".txt";
data=importdata(Pathall);
这样txt就导 ...

前5个数据。
https://www.dropbox.com/s/ktyj1zzfpude71m/New.rar
6楼2014-01-15 08:05:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jsky1988

新虫 (小有名气)

可怜的娃,直接给你代码吧。。我也是初学的,代码比较乱。。不过你应该能看得懂,多给我点分哈。。呵呵。。
for i=1:5
    PathAll=strcat('Data','0'+i);
    PathAll=strcat(PathAll,'.txt');
    data=importdata(PathAll);
    [maxdata,index]=max(data(:,5));
    outpath=strcat('Data','0'+i);
    outpath=strcat(outpath,'Result.txt');
    outfile=fopen(outpath,'w');
    for j=1:5
        fprintf(outfile,'%f ',data(index,j));
    end
    fclose(outfile);
end

» 本帖已获得的红花(最新10朵)

7楼2014-01-15 16:52:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sduckc

金虫 (正式写手)

送红花一朵
引用回帖:
7楼: Originally posted by jsky1988 at 2014-01-15 16:52:18
可怜的娃,直接给你代码吧。。我也是初学的,代码比较乱。。不过你应该能看得懂,多给我点分哈。。呵呵。。
for i=1:5
    PathAll=strcat('Data','0'+i);
    PathAll=strcat(PathAll,'.txt');
    data=impor ...

非常感谢!但是怎么设置悬赏分呢?我上次回复你的时候已经把所有的金币都给你了,也没看到那里可以再加分的。

这个代码很好,就是最后输出到了不同的txt文件里面了,我正在想办法怎么把他们放在一个txt里面形成新的矩阵
8楼2014-01-15 23:35:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jsky1988

新虫 (小有名气)

引用回帖:
8楼: Originally posted by sduckc at 2014-01-15 23:35:43
非常感谢!但是怎么设置悬赏分呢?我上次回复你的时候已经把所有的金币都给你了,也没看到那里可以再加分的。

这个代码很好,就是最后输出到了不同的txt文件里面了,我正在想办法怎么把他们放在一个txt里面形成 ...

。其实很简单,你注意看我的程序,在每一个变量为i的循环里都创建了一个新的txt文件,你在循环外面就创建一个文件就行啦,然后代码这样写:
outfile=fopen(‘Result’,'w');%输出文件,这样结果全部在一个文件里面啦
for i=1:5%每个文件运行一次,i表示文件序号
    PathAll=strcat('Data','0'+i);
    PathAll=strcat(PathAll,'.txt');
    data=importdata(PathAll);
    [maxdata,index]=max(data(:,5));%求每个文件第五列的最大值所在的行
    for j=1:5%输出循环
        fprintf(outfile,'%f ',data(index,j));
    end
    fprintf(‘\n');%换行,我不知道是不是用\n,你可以自己查一下
end
   fclose(outfile);
希望这个能解决你的问题
9楼2014-01-16 10:25:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 sduckc 的主题更新
信息提示
请填处理意见