[已解决] MATLAB批量导入mat文件

[复制链接]
zxyjiaotong 发表于 2015-12-6 14:07:01
本帖最后由 zxyjiaotong 于 2015-12-6 14:08 编辑

我有2014年1月到9月的数据,格式是20140XXX.mat,如20140121.mat表示1月21,20140607.mat表示6月7日,如何将这些数据批量导入到MATLAB中,网上的方法试了,没有试成功,已经困扰了一段时间了

最佳答案


billchu 发表于 2015-12-6 14:16:19
  1. for i = 1: 9
  2.     for j = 1: 31
  3.         try
  4.             if j < 10
  5.                 eval(['load 20140',num2str(i),'0',num2str(j)])
  6.             else
  7.                 eval(['load 20140',num2str(i),num2str(j)])
  8.             end
  9.         catch
  10.             %
  11.         end
  12.     end
  13. end
复制代码
回复此楼

7 条回复


billchu 发表于 2015-12-6 14:16:19
  1. for i = 1: 9
  2.     for j = 1: 31
  3.         try
  4.             if j < 10
  5.                 eval(['load 20140',num2str(i),'0',num2str(j)])
  6.             else
  7.                 eval(['load 20140',num2str(i),num2str(j)])
  8.             end
  9.         catch
  10.             %
  11.         end
  12.     end
  13. end
复制代码
回复此楼

zxyjiaotong 发表于 2015-12-6 14:59:58

灰常感谢。。。帮了大忙了,终于有了点思路,可是出现了点小问题:

try
            if j < 10
                s1=['load D:\新建文件夹\data\data20040',num2str(i),'0',num2str(j)]
                eval(s1);
            else
                s2=['load D:\新建文件夹\data\data20040',num2str(i),num2str(j)]
                eval(s2);
            end
catch
end


出现的问题是:

第一:2月没有31天的呀。。。。第二:运行出的结果是这个样子的:
Image 2.jpg

billchu 发表于 2015-12-6 16:30:01
zxyjiaotong 发表于 2015-12-6 14:59
灰常感谢。。。帮了大忙了,终于有了点思路,可是出现了点小问题:

try

因为每个月份的天数是不相等的,因此当输入 load 20140631 时就会报错导致程序运行中止,try-catch结构就是用来处理这种情形的。

以上应该能回答你的第1个问题,至于第2个问题不知道是不是你原本就有 20140231.mat 这个文件

zxyjiaotong 发表于 2015-12-7 20:36:56
billchu 发表于 2015-12-6 16:30
因为每个月份的天数是不相等的,因此当输入 load 20140631 时就会报错导致程序运行中止,try-catch结构就 ...

i=input('Please input the value of i:');
j=input('Please input the value of j:');

怎么样对日期进行输入确定,比如:i=2,j=3时,确定的日期为0203,即2月3日;

                                                       i=3,j=21时,确定的日期为0321,即3月21日;

这里的输入参数应该与循环参数建立什么样的关系才行???

多谢多谢:handshake

billchu 发表于 2015-12-7 20:50:16
本帖最后由 billchu 于 2015-12-7 20:52 编辑
zxyjiaotong 发表于 2015-12-7 20:36
i=input('Please input the value of i:');
j=input('Please input the value of j:');
  1. f = @(i,j) load(['2014',sprintf('%02d%02d',i,j),'.mat'])
复制代码

zxyjiaotong 发表于 2015-12-7 21:41:55

还是有问题。。。

是在不好意思。。。
Image 4.jpg
Image 3.jpg

billchu 发表于 2015-12-7 21:44:54
本帖最后由 billchu 于 2015-12-7 21:50 编辑
zxyjiaotong 发表于 2015-12-7 21:41
还是有问题。。。

是在不好意思。。。
  1. f = @(i,j) ['2014',sprintf('%02d%02d',i,j),'.mat']
  2. load(f(i,j))
复制代码


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

本版积分规则

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