将xlsm文件读入MATLAB |错误文件名必须为字符串

时间:2018-07-16 09:08:53

标签: matlab loops for-loop xlsread

我正在尝试通过嵌套循环遍历国家和年份从WIOD(世界投入产出数据库)中读取整套环境投入/产出数据。现在,我之前已经对基本/数据帐户执行了类似的操作。现在,我尝试加载环境数据。我以前的工作代码如下:

 for yr = 95:99
   V(:,:,yr-94) = xlsread(['wiot' num2str(yr)   '_row_apr12.xlsx'],['WIOT_19' 
   num2str(yr)],'E1443:BCI1448');
 end

现在,我的代码无法处理错误消息“文件名必须是字符向量”。看起来如下:

 country = 
{'AUS','AUT','BEL','BGR','BRA','CAN','CHN','CYP','CZE','DEU','DNK','ESP',...

'EST','FIN','FRA','GBR','GRC','HUN','IDN','IND','IRL','ITA','JPN','KOR',...

 'LTU','LUX','LVA','MEX','MLT','NLD','POL','PRT','ROU','RUS','SVK','SVN',...
       'SWE','TUR','TWN','USA','ROW'}

for c = 1:41

   for year = 1995:1995   

      F_NRG(:,(c*35)-34:(c*35),year-1994) = transpose(xlsread([country(c) 
     '_EU_May12.xlsm'],[num2str(year)],'AD2:AD36'));

   end
end

我没有得到它,因为如果我通过c选择了国家country(c),则文件名应该是一个字符串? xlsread嵌套在转置命令中,计算要保存读入数据的单元格稍微复杂一些,但原则上应该相同吗?以下代码也确实为每个c呈现了一个字符串。

  for c = 1:41
    country(c)
  end 

您能帮我找到编码错误吗? Matlab为什么不能将文件名识别为字符串?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

尝试一下

for c = 1:41

   for year = 1995:1995   

      F_NRG(:,(c*35)-34:(c*35),year-1994) = transpose(xlsread([country{c} 
     '_EU_May12.xlsm'],[num2str(year)],'AD2:AD36'));

   end
end