我正在尝试访问for循环中的多个文件,如下所示:
age = xlsread(strcat('Pipeline_BO_2013 _',names(2),'_ CDBU.xlsx'),'数据','H:I')
它返回一个错误,文件名必须是字符串。所以我做了以下测试:
filename = strcat('Pipeline_BO_2013 _',names(2),'_ CDBU.xlsx')
filename =
'Pipeline_BO_2013_0107_CDBU.xlsx'
ISSTR(文件名)
ans =
0
这太奇怪了。任何人都可以帮助我吗?非常感谢你。
答案 0 :(得分:3)
看起来names
是cellstr
而不是char
数组。如果是这样,使用括号如names(2)
索引到它将返回一个1长的cellstr数组,而不是char数组。当使用任何参数作为cellstr调用strcat
时,它返回一个cellstr。然后xlsread
错误,因为它需要char
,而不是cellstr
。
不是仅在isstr
上调用ischar
或filename
,而是class(filename)
,它会告诉您它是什么。
另一个线索是filename
显示引号。这就是cellstrs的显示方式。如果它是一个char数组,它将显示没有引号。
如果是这种情况,并且names
是一个celltr,则需要使用{}
索引来“弹出”单元格内容。
filename = strcat('Pipeline_BO_2013_',names{2},'_CDBU.xlsx')
或者您可以使用sprintf
,您可能会发现它更具可读性,并且在您开始插入不同类型的多个参数后会更灵活。
filename = sprintf('Pipeline_BO_2013_%s_CDBU.xlsx', names{2})
% An example of more flexibility:
year = 2013;
filename = sprintf('Pipeline_BO_%04d_%s_CDBU.xlsx', year, names{2})