查看完整版本 : [讨论]如何将多个文件合并?
各位高手,小弟碰到一个问题总是解决不了,请大家帮忙。
现在有myfile001.dat,myfile002.dat,...,myfile100.dat一共100个文件,每个文件中的数据都是1行的,个数相等,我想将它们合并成一个数据文件,不知道怎么办?
先谢谢了。
可以用软件打开,然后复制粘贴即可;
如果用matlab打开的话,先打开文件,然后再合并,最后储存到新的文件中去,具体命令请楼主自己网上查一下。
用软件打开,复制粘贴不太可行,因为文件太多了。
第二种方案应该是可以的,但是我不知道具体怎么做,我在网上找了很久都没有找到,还请楼上的兄弟帮帮忙吧,多谢了。
我已经能够实现把文件加载到matlab中,但是用load以后每一个文件对应出现了一个变量,我不知道怎么将它们合并在一起。
就是利用这些变量,然后用cat命令,这个你看下help;
另外也可以如下:
变量:a=[1 2 3]; b=[1 2 3]; c=[1 2 3]
可以这样合并:
d=[a b c];作为一个行向量
d=[a;b;c];作为一个矩阵
具体情况楼主自己把握……
就是利用这些变量,然后用cat命令,这个你看下help;
另外也可以如下:
变量:a=[1 2 3]; b=[1 2 3]; c=[1 2 3]
可以这样合并:
d=[a b c];作为一个行向量
d=[a;b;c];作为一个矩阵
具体情况楼主自己把握……
这是我写的代码,一共file001.dat,...,file010.dat十个文件,每个文件里分别是数字1,...,10
clear
clc
num_file=10;
for i = 1:num_file
fout=sprintf('file%03d.dat',i);
load(fout,'-ascii');
end
sum_file=file001;
for i=2:num_file
fout=sprintf('file%03d',i);
sum_file=[sum_file,fout];
end
结果在sum_file里,但运行的结果是“dfile002file003file004file005file006file007file008file009file010”,没有存放变量数值,不知道问题出现在什么地方?谢谢。
sprintf不能提取数据……
sprintf命令只是打印的命令,如果要导入文件名的话用uigetfile,或者别的方法,这样load才有效……
num_file=10;
for i = 1:num_file
fout=sprintf('file%03d.dat',i);
load(fout,'-ascii');
end
这一段是没有问题的,sprintf是转换了文件名,然后用load加载,运行结果得到10个变量,每一个变量以文件名命名,存储着各文件中的数据。uigetfile我也用过了,效果是一样的。
问题出在下面这一段,如何对10个变量进行合并?
sum_file=file001;
for i=2:num_file
fout=sprintf('file%03d',i);
sum_file=[sum_file,fout];
end
但是我不知道如何修改?多谢了。
你是load数据进去了,但是没有对其赋予变量名称,你下面的合并相当于只是对文件名进行合并而已,而不是对数据进行合并,你试试如下代码:
sum_file=[];
for i=1:num_file
fout=sprintf('file%03d',i);
S=load(fout,'-ascii');
sum_file=[sum_file,S];
end
上面的代码可能有点错误,你调试一下,不过大致思路还是这样的……
我也遇到相同问题,不同的是我的要复杂一点,问题是: 我有file1 ,file2....file100个数据文件,但每个文件中的数据格式不一样, 我只想把这些文件一个一个的串起来,不改变他们本身的格式,就像是用手动打开文件,然后一个一个的复制粘贴到一个新文件中一样。我应该怎么做?请高手指点
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.