2013-01-20 123 views
2

我想所有目录中的文件保存为一个字符串数组,像这样:MATLAB数组赋值

files = {'hello.gdf'; 'hello2.gdf'...; ... 'etc.gdf'}

因为我有很多目录,我要自动执行此操作。这是我的代码:

gdffiles = dir(fullfile('D:', 'subject', '01', '*.gdf')) 
for i=1:size(gdffiles) 
    files(i) = gdffiles(i).name; 
end 

我要分配给files的GDF文件的名称中,但我得到这个消息:

??? Subscripted assignment dimension mismatch.

Error in ==> getFiles at 3 files(i) = gdffiles(i).name;

我在做什么错误?谢谢!

回答

1

的错误原因:

你尝试分配filesi个地方的字符串(char阵列)gdffiles(i).name。但是,您正在使用数组元素分配(圆括号())。因此,您会收到错误消息:您只能使用files(i)分配单个char

可能的解决方案:

  1. 你应该使用大括号分配给files - 因为filescell数组:

    files{i} = gdffiles(i).name; 
    
  2. 可以达到同样的效果,而不通过环路:

    files = { gdffiles(:).name }; 
    
+0

非常明确和帮助,谢谢! –

1

检查该解决方案

path  = fullfile('D:', 'subject', '01', '*.gdf'); 
files  = dir(path); 
files  = struct2cell(files); 
files  = files(1, 1:end); 
+0

哦,是的,你是对的:d,谢谢:) –

0

你有没有尝试过这样的:

ListOfAllFiles = ls('*.gif') 

希望它可以帮助