[已解决] 求助,如何将批量导入的mat文件显示出来,并保存另...

[复制链接]
一块二 发表于 2016-8-9 11:17:33
RT以下代码是批量导入mat文件的以及单一保存的代码,现运行结果只显示最后一个数据(如下图所示)

dz = 'C:\Users\four\Documents\MATLAB\DataBase\Stock\Tick_mat\sh600000_Tick';
files = cellstr(ls([dz '\*.mat']));
m = size(files,1);
for i = 1:m
  temp= [dz '\' files{i,1}];
  load(temp);
  save('StockTick.mat','StockTick','-v6')
  system(['rename'  ' StockTick' 'files']);%% 把保存好的名字改成另一个名字
end
QQ图片20160809112253.png


一个个手动保存太慢,一只股票几千个tick数据,一个个保存下去得1个多月,求大神帮忙修改下,如何批量保存导入的mat文件,并更名~~跪谢
好人一生平安

最佳答案


逻辑逻辑 发表于 2016-8-9 14:46:47
一块二 发表于 2016-8-9 14:39
一开始的代码这样保存,只能是手动一个一个保存,load(temp)后,只生成一个变量,save后也是只保存一个 ...

save(['StockTick' num2str(i,'%04d') '.mat'],'StockTick.mat')
下面的改名字的就不需要了system...这句不需要了

12 条回复


Lesvas 发表于 2016-8-9 11:35:46
再加一个外层循环即可,用dir获取所有mat文件名字,依次读取

逻辑逻辑 发表于 2016-8-9 12:14:10
因为你保存的时候都是一个名字,所以你最后保存的只是最后一文件的mat啊;总之你可以用copyfile你实现(system也可以);主要的问题是你保存的时候不能都是一个名字,那肯定是只保存最后mat的数据啊;
比如:copyfile('StockTick.mat',['StockTick' num2str(i,'%04d') '.mat'])

一块二 发表于 2016-8-9 13:48:15
Lesvas 发表于 2016-8-9 11:35
再加一个外层循环即可,用dir获取所有mat文件名字,依次读取

大神 dir后 取到的name的确是 多个,但load后,还是只导入最后一个~~~ QQ图片20160809133648.png ~~这个该怎么改,我想把每一个tick数据load后一个成一个mat文件~~

一块二 发表于 2016-8-9 13:53:22
逻辑逻辑 发表于 2016-8-9 12:14
因为你保存的时候都是一个名字,所以你最后保存的只是最后一文件的mat啊;总之你可以用copyfile你实现(sys ...

是啊,load后不能每个数据生成一个文件名。。。。好烦.... QQ图片20160809135808.png 现在做到这一步了 生成的文件全在stock中,但stock是这样的 QQ图片20160809135837.png QQ图片20160809135855.png 大神 有什么办法把这些数据一个个保存吗~~stock{1,1}{1,1}是我想要保存的数据~~

逻辑逻辑 发表于 2016-8-9 14:03:20
一块二 发表于 2016-8-9 13:53
是啊,load后不能每个数据生成一个文件名。。。。好烦....现在做到这一步了 生成的文件全在stock中,但st ...

为什么要一个个保存呢,我看你的文件并不是很大,分开保存之后导入的时候又要一个个导入,干嘛要费这么多事呢,还有一开始不是已经分开保存呢,我看你的循环里面也没有做什么处理啊?你到底需要做什么事呢?一个个导入之后,然后把所以的数据放在了一个cell里,然后又要把这个cell里面的每一个cell还原到每一个mat,你是不是只是需要把这些文件重新命名嘛?把你需要的做的事情说清楚啊。

一块二 发表于 2016-8-9 14:12:21
逻辑逻辑 发表于 2016-8-9 14:03
为什么要一个个保存呢,我看你的文件并不是很大,分开保存之后导入的时候又要一个个导入,干嘛要费这么多 ...

:L:L我是想把load后的tick数据,全都保存,开始的代码要手动一个一个保存,昨天一个个保存了一天,只保存500多,太慢了,所以想弄个循环,把每一次循环的load数据保存一下,让程序自动运行,这是主要问题~~~~~但load之后的数据,名都叫StockTick~~~这就好尴尬......麻烦大神了~~~

逻辑逻辑 发表于 2016-8-9 14:20:54
一块二 发表于 2016-8-9 14:12
我是想把load后的tick数据,全都保存,开始的代码要手动一个一个保存,昨天一个个保存了一天,只保存 ...

我反正是凌乱了,你不是一开就是保存了吗?为什么还要导入之后再保存呢,没有意义啊。我现在能知道的是你命名的时候有点问题就是了,那你每次保存的时候把名字区分出来不就行了?
save(['StockTick' num2str(i,'%04d') '.mat'],'StockTick.mat')%%前面就是每次命名会不一样,这个你自己可以改,运行下就知道了

一块二 发表于 2016-8-9 14:39:32
逻辑逻辑 发表于 2016-8-9 14:20
我反正是凌乱了,你不是一开就是保存了吗?为什么还要导入之后再保存呢,没有意义啊。我现在能知道的是你 ...

一开始的代码 111436dtq6ekcp5prtq8zv.png 这样保存,只能是手动一个一个保存,load(temp)后,只生成一个变量,save后也是只保存一个,如果要保存第二个,就要把循环变量I手动写成2或3或N,之后在运行一遍程序~~~我的意思就是这样有点慢~~~~不知道您有没有理解我的意思~~~

逻辑逻辑 发表于 2016-8-9 14:46:47
一块二 发表于 2016-8-9 14:39
一开始的代码这样保存,只能是手动一个一个保存,load(temp)后,只生成一个变量,save后也是只保存一个 ...

save(['StockTick' num2str(i,'%04d') '.mat'],'StockTick.mat')
下面的改名字的就不需要了system...这句不需要了
回复此楼

一块二 发表于 2016-8-10 10:27:46
逻辑逻辑 发表于 2016-8-9 14:46
save(['StockTick' num2str(i,'%04d') '.mat'],'StockTick.mat')
下面的改名字的就不需要了system...这句 ...

跪谢大神 简直是我的再生父母啊:kiss::kiss::kiss::kiss:膜拜大神~~

一块二 发表于 2016-8-10 10:41:45
逻辑逻辑 发表于 2016-8-9 14:46
save(['StockTick' num2str(i,'%04d') '.mat'],'StockTick.mat')
下面的改名字的就不需要了system...这句 ...

大神 请问一下 num2str(i,‘%04d’)是什么意思~~

逻辑逻辑 发表于 2016-8-10 10:44:45
一块二 发表于 2016-8-10 10:41
大神 请问一下 num2str(i,‘%04d’)是什么意思~~

用标准输出为4位不足时用0补齐
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表