我正在尝试查找目录中与'hello'匹配的所有文件。我有以下代码:
fileData = dir();
m_file_idx = 1;
fileNames = {fileData.name};
index = regexp(filenames,'\w*hello\w*','match') ;
inFiles = fileNames(~cellfun(@isempty,index));
实施例。如果我的目录中有3个文件,其中包含单词hello,inFiles会返回
inFiles =
[1x23 char] [1x26 char] [1x25 char]
而我希望inFiles返回文件的名称,ex thisishello.m,hiandhello.txt 我怎么能以一种简单的方式做到这一点?
答案 0 :(得分: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
对我来说,看起来你在理解单元格数组时遇到了一些问题。 Here's a specific tutorial that works through the米。 (jerad的链接看起来也是一个很好的资源)
答案 1 :(得分:1)
我认为这里发生的事情是,当一个单元格数组的元素超过一定长度时(字符串看起来是19个字符),matlab不打印实际元素,它会打印出内容的描述相反(在这种情况下,“[1x23 char]”)。
例如:
>> 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