0

'hello'に一致するディレクトリ内のすべてのファイルを検索しようとしています。私は次のコードを持っています:

fileData = dir();   
m_file_idx = 1;
fileNames = {fileData.name};  
index = regexp(filenames,'\w*hello\w*','match') ;
inFiles = fileNames(~cellfun(@isempty,index));

元。ディレクトリにhelloという単語が含まれるファイルが3つある場合、inFilesは私を返します

inFiles = 

    [1x23 char]    [1x26 char]    [1x25 char]

代わりに、inFilesにファイルの名前を返してもらいたいのですが、ex thisishello.m、hiandhello.txtどうすれば簡単にこれを行うことができますか?

4

2 に答える 2

2

このコード:

fileData = dir();
fileNames = {fileData.name};

disp('The full directory...')
disp(fileNames)

index = regexp(fileNames,'\w*hello\w*','match');
inFiles = fileNames(~cellfun(@isempty,index));

disp('Print out the file names')
inFiles{:}

この出力を生成します:

>> script
The full directory...
  Columns 1 through 6

    '.'    '..'    'andsevenyears.txt'    'fourscore.txt'    'hello1.txt'    'hello2.txt'

  Column 7

    'script.m'

Print out the file names

ans =

hello1.txt


ans =

hello2.txt

私には、セル配列の理解に問題があるように見えます。 これは、 mを介して機能する特定のチュートリアルです。(jeradのリンクも良いリソースのように見えます)

于 2012-12-12T22:14:30.107 に答える
1

ここで起こっていることは、セル配列の要素が特定の長さより長い場合(文字列の場合は19文字のように見える)、matlabは実際の要素を出力せず、代わりにコンテンツの説明を出力することだと思います(この場合、「[1x23char]」)。

例えば:

>> names = {'1234567890123456789' 'bar' 'car'}
names = 
    '1234567890123456789'    'bar'    'car'
>> names = {'12345678901234567890' 'bar' 'car'}
names = 
    [1x20 char]    'bar'    'car'

celldispあなたの状況に適しているかもしれません:

>> celldisp(names)
names{1} =
12345678901234567890
names{2} =
bar
names{3} =
car
于 2012-12-12T22:09:44.527 に答える