matlab数组赋值

时间:2013-01-20 16:42:03

标签: arrays 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;

我做错了什么?谢谢!

3 个答案:

答案 0 :(得分:1)

检查此解决方案

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

答案 1 :(得分:1)

错误原因:

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

可能的解决方案:

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

    files{i} = gdffiles(i).name;
    
  2. 您可以通过以下方式获得相同的结果:

    files = { gdffiles(:).name };
    

答案 2 :(得分:0)

你试过这个:

ListOfAllFiles = ls('*.gif')

希望有所帮助