2016-12-03 4 views
0

私はMatlab 2013bを使用しています。私はディレクトリにExcelファイルのリストを持っており、ループ内で選択したものを開いてデータを読みたいと思っています。 私は、ただし、各ファイル名の先頭を知っていますが、終わりではありません。私はファイル名(ファイル番号)の特定部分を提供する数字のベクトルを持っており、Excelファイルを1つずつループして開き、データを抽出して閉じていきたいと考えています。 アスタリスクの最初のセットはマイファイル番号で、アスタリスクの2番目のセットは不明ですが、img _ **** ff *******。xlsxの各ファイルが500個あります。Matlabのファイル名の一部しかわからないときに、xlsxファイルをいくつ開くのですか?

はこれまでのところ、私が使用してディレクトリにあるものリスト試してみました:

list=dir('E:\processed\Img*'); 
filenames={list.name} 

これは完全なファイル名を持つとともに提供します。 私は存在して私が知っているファイル名の一部を作成するために、ループ内で、次に試した:私は、私は上記の「ファイル名」構造での私の私のファイル名の一部/文字列を探すために、「検索」を使用できると思っていた

x = sprintf('Img_%d_FF_',img(1,1)); 

。私はしかし、私はこのデータ型の正しいコードを持っているとは思わない:

index = find(strcmp({list.name}, x)==1) 

答えて

3

は、あなたは非常に近いですが、問題はstrcmp文字列全体を比較して、あなただけの冒頭部分を持っているためということで、それを一致するつもりはありません。 strncmpを使用して、文字列の最初のn文字のみを比較します。文字列xの長さに基づいて、nが何であるかを判断することができます。

matches = strncmp({list.name}, x, numel(x)); 
thisfile = list(matches).name; 
+0

これは完璧に機能しました。ありがとう、 – new2matlab

関連する問題