找回密码
 注册
Simdroid-非首页
查看: 123|回复: 8

求助, 关于matlab下批量加载的问题

[复制链接]
发表于 2007-3-26 18:03:38 | 显示全部楼层 |阅读模式 来自 法国
我有一组MAT文件需要访问,因为这些MAT文件是ATP生成的数据结果记录,所以文件名都是一样的,包含的数据名也是一样的,只是放在不同名字的文件夹下,从case1到case10,而每个MAT文件里都有一个数据k表示究竟是哪一个case。比如说文件夹是case5,那么这个文件夹下的MAT文件里数据k对应的数值就是5。
在MATLAB下如何把这10个MAT中相同数据名对应的不同值提取出来存入一个文件以便于做stats分析呢?
 楼主| 发表于 2007-3-26 18:04:55 | 显示全部楼层 来自 法国
Simdroid开发平台
这是 我目前写的,因为只有10个case,所以用死办法了
load cas0000601\MctCasesSelV6.MAT;
Ma1 = [max(vP0a) max(vP1ba) max(vP3a) max(vP5a) max(vP7a) max(vP11a) max(vP13ba) max(vQ1ba) max(vQ3a) max(vQ5a) max(vQ7a) max(vQ11a) max(vQ13ba) max(vP14a)];

load cas0000602\MctCasesSelV6.MAT;
Ma2 = [max(vP0a) max(vP1ba) max(vP3a) max(vP5a) max(vP7a) max(vP11a) max(vP13ba) max(vQ1ba) max(vQ3a) max(vQ5a) max(vQ7a) max(vQ11a) max(vQ13ba) max(vP14a)];

load cas0000603\MctCasesSelV6.MAT;
Ma3 = [max(vP0a) max(vP1ba) max(vP3a) max(vP5a) max(vP7a) max(vP11a) max(vP13ba) max(vQ1ba) max(vQ3a) max(vQ5a) max(vQ7a) max(vQ11a) max(vQ13ba) max(vP14a)];





所有访问的MAT文件名都一样,里面的数据命名方法也相同,只有文件夹命名不同,可是10个MAT还好说,要是量更大就没办法用这个笨办法了,我一直在试for命令,想用循环语句,可是好像load没办法识别出来。
发表于 2007-3-26 19:18:23 | 显示全部楼层 来自 湖北武汉
结合num2str
i=4;
filename=['cas000060' num2str(i) '\MctCasesSelV6.MAT'];
你可以执行一下
看这个语句的结果

  1. Ma{i}= [max(vP0a) max(vP1ba) max(vP3a) max(vP5a) max(vP7a) max(vP11a) max(vP13ba) max(vQ1ba) max(vQ3a) max(vQ5a) max(vQ7a) max(vQ11a) max(vQ13ba) max(vP14a)];
  2. 用元胞或者二维数组业可以
  3. 方便循环命名
复制代码

结合这两个,麻烦你自己动手写写程序
贴上来,我给你加分:lol
 楼主| 发表于 2007-3-26 21:23:36 | 显示全部楼层 来自 法国
还是在load上出了问题,我之前用的 int2str
for k = 601:610
s=['cas0000' int2str(k) '\MctCasesSelV6.MAT']
a = fopen (s, 'r');
s 每一个结果都是对的,但是load s就不行。
附运行结果

s =
cas0000601\MctCasesSelV6.MAT

s =
cas0000602\MctCasesSelV6.MAT

s =
cas0000603\MctCasesSelV6.MAT

[ 本帖最后由 superanne 于 2007-3-26 21:26 编辑 ]
发表于 2007-3-26 21:29:30 | 显示全部楼层 来自 新疆乌鲁木齐
路径不全?
 楼主| 发表于 2007-3-26 22:01:56 | 显示全部楼层 来自 法国
不会是路径的问题吧,之前我一个一个load,用的就是
cas000060*\MctCasesSelV6.MAT啊。
 楼主| 发表于 2007-3-26 22:06:18 | 显示全部楼层 来自 法国
>> for k = 601:610
s=['cas0000' int2str(k) '\MctCasesSelV6.MAT']
a = fopen (s, 'r');
load s;
end

s =

cas0000601\MctCasesSelV6.MAT

??? Error using ==> load
Unable to read file s: No such file or directory.
发表于 2007-3-26 22:37:26 | 显示全部楼层 来自 新疆乌鲁木齐
倒...
老兄,盘符都没有,哪里来的路径??英文提示写得还不够清楚吗?
  1. function aLoadData
  2. clc
  3. a1=rand(4);
  4. a2=round(10*rand(4));
  5. for i=1:2
  6.     str=['C:\Program Files\MATLAB\R2006b\work\a',num2str(i)];
  7.     str1=['a',num2str(i),'.mat'];
  8.     cd(str)
  9.     str2=['a',num2str(i)];
  10.     save(str1,str2)
  11. end
  12. cd('C:\Program Files\MATLAB\R2006b\work')
复制代码

a1和a2两个路径我随意写的,不存在的路径mkdir一下。
 楼主| 发表于 2007-3-27 00:40:17 | 显示全部楼层 来自 法国
谢谢楼上的让我想到用cd,之前老想直接用load,看来load不接受函数定义的文件名,用cd进入文件夹,再load就可以了。
for k=601:610
    str=['C:\Documents and Settings\tliu\My Documents\RPH3\cas601a610\cas0000',num2str(k)];
    cd(str)
    load MctCasesSelV6.MAT
    Ma{k} = [max(vP0a) max(vP1ba) max(vP3a) max(vP5a) max(vP7a) max(vP9a) max(vP11a) max(vP13ba) max(vQ1ba) max(vQ3a) max(vQ5a) max(vQ7a) max(vQ9a) max(vQ11a) max(vQ13ba) max(vP14a)];
    Mb{k} = [max(vP0b) max(vP1bb) max(vP3b) max(vP5b) max(vP7b) max(vP9b) max(vP11b) max(vP13bb) max(vQ1bb) max(vQ3b) max(vQ5b) max(vQ7b) max(vQ9b) max(vQ11b) max(vQ13bb) max(vP14b)];
    Mc{k} = [max(vP0c) max(vP1bc) max(vP3c) max(vP5c) max(vP7c) max(vP9c) max(vP11c) max(vP13bc) max(vQ1bc) max(vQ3c) max(vQ5c) max(vQ7c) max(vQ9c) max(vQ11c) max(vQ13bc) max(vP14c)];

end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-4 21:29 , Processed in 0.044056 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表