2

次のように、for ループで複数のファイルにアクセスしようとしています。

age = xlsread(strcat('Pipeline_BO_2013_',names(2),'_CDBU.xlsx'), 'データ', 'H:I')

ファイル名は文字列でなければならないというエラーを返します。だから私は次のテストを行いました:

ファイル名 = strcat('Pipeline_BO_2013_',names(2),'_CDBU.xlsx')

ファイル名 =

'Pipeline_BO_2013_0107_CDBU.xlsx'

isstr(ファイル名)

ans =

 0

これはとても奇妙です。誰でも私を助けることができますか?どうもありがとう。

4

1 に答える 1

3

配列ではないようnamesです。その場合、そのように括弧でインデックスを付けると、char 配列ではなく、長さ 1 の cellstr 配列が返されます。引数のいずれかを cellstr として を呼び出すと、cellstr が返されます。ではなくが必要なため、エラーが発生します。cellstrcharnames(2)strcatxlsreadcharcellstr

isstrorischarを呼び出すだけでなくfilename、実行するclass(filename)と、それが何であるかがわかります。

別の手がかりはfilename、引用符で表示されることです。これは cellstrs の表示方法です。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})
于 2013-05-02T03:25:32.290 に答える