2012-07-26 199 views
0

我有12个mat文件(每个月一个)需要单独用于计算。它们太大而无法一次装载全部十二个。因此,我想打电话给第一个月,进行计算,打电话给第二个月......第十二个月。在MATLAB中循环遍历一系列.mat文件

我已经在.asc文件中完成了这项工作,但遇到了麻烦。 mat文件。

我尝试以下操作:

matObj = matfile('tempOR_norm.mat') 

matObj = 

    matlab.io.MatFile 

    Properties: 
     Properties.Source: 'C:\GIS_DATA\SNOW\Programs\SNOW\tempOR_norm.mat' 
    Properties.Writable: false           
     tempOR_01_norm: [1424x1817 double]        
     tempOR_02_norm: [1424x1817 double]        
     tempOR_03_norm: [1424x1817 double]        
     tempOR_04_norm: [1424x1817 double]        
     tempOR_05_norm: [1424x1817 double]        
     tempOR_06_norm: [1424x1817 double]        
     tempOR_07_norm: [1424x1817 double]        
     tempOR_08_norm: [1424x1817 double]        
     tempOR_09_norm: [1424x1817 double]        
     tempOR_10_norm: [1424x1817 double]        
     tempOR_11_norm: [1424x1817 double]        
     tempOR_12_norm: [1424x1817 double] 

但我怎么通过这个列表循环?

我需要沿着

input = load(matObj(i)) 

线的东西,但这给我:

MatFile对象是标量。使用语法 objName.varName(indices)访问变量。

任何有识之士将不胜感激!

-Thanks-

回答

1

得到它(与帮助下Loop for loading and saving .mat files):

它是这样的......

for i = 1:12; 
     if (i <= 9) 
      filename = ['tempOR_0', int2str(i), '_norm.mat']; 
     else filename = ['tempOR_', int2str(i), '_norm.mat']; 
     end 
end 

load(filename); 
+1

找到更多的东西,你可以用下面的代码来替换if/else语句:'filename = sprintf('tempOR_%02d_norm.mat',i);' – Amro 2012-07-27 01:03:23