gpt4 book ai didi

matlab - 为什么 strcat() 在 Matlab 中不返回字符串?

转载 作者:行者123 更新时间:2023-12-04 04:59:25 27 4
gpt4 key购买 nike

我正在尝试在 for 循环中访问多个文件,如下所示:

年龄 = xlsread(strcat('Pipeline_BO_2013_',names(2),'_CDBU.xlsx'), '数据', 'H:I')

它返回一个错误文件名必须是字符串。所以我做了以下测试:

filename = strcat('Pipeline_BO_2013_',names(2),'_CDBU.xlsx')



文件名 =
'Pipeline_BO_2013_0107_CDBU.xlsx'

isstr(filename)



答案=
 0

这太奇怪了。任何人都可以帮助我吗?非常感谢。

最佳答案

看起来像 namescellstr而不是 char大批。如果是这样,请使用 names(2) 之类的括号对其进行索引将返回一个 1 长的 cellstr 数组,而不是 char 数组。当strcat用它的任何参数作为 cellstr 调用,它返回一个 cellstr。然后xlsread错误,因为它需要 char ,而不是 cellstr .

而不是仅仅调用 isstrischarfilename , 做 class(filename)它会告诉你它是什么。

另一个线索是 filename用引号显示。这就是 cellstr 的显示方式。如果它是一个 char 数组,它将不带引号显示。

如果是这种情况,names是一个cellstr,你需要使用{}索引以“弹出”单元格内容。

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})

关于matlab - 为什么 strcat() 在 Matlab 中不返回字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16328887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com