2012-07-26 198 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