如何使用uigetfile和importdata在matlab中导入多个文件?

时间:2014-05-20 12:30:44

标签: matlab loops user-interface import

我想选择多个文件,从文件中导入数据并在GUI程序中使用它们 我用来获取多个文件的代码可以很好地运行:

[FileName,PathName,FilterIndex] = uigetfile('*.txt*','Study Files','MultiSelect','on')

Cols = size(FileName,2);
numfiles = Cols;


for i = 1:numfiles
    FileName(i)

    entirefile =fullfile(PathName,FileName(i))
end   

我的问题是当我尝试打开entire file时。我尝试使用的方法适用于单个文件,但不适用于此。当循环中的代码为:

for i = 1:numfiles
    FileName(i)

    entirefile =fullfile(PathName,FileName(i))

 A = [];
 fid = fopen(entirefile);

 tline = fgets(fid);
 while ischar(tline)
     parts = textscan(tline, '%f;');
     if numel(parts{1}) > 0
         A = [ A ; parts{:}' ];
      end
     tline = fgets(fid);

 end  
end  
  

使用fopen时出错第一个输入必须是char类型的文件名,或者a   double类型的文件标识符。

     

多选中出错(第14行)fid = fopen(wholefile);

它也只给我选择的第一个和最后一个文件,然后只给出第一个选定文件的entirefile

有关我如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

问题是如何访问单元格数组FileName的元素。如果使用常规括号访问它,则输出将是单元素单元格数组,因此fullfile也将输出单元格数组。您需要使用大括号(例如FileName{i}

)来访问它

这应该有效:

[FileName,PathName,FilterIndex] = uigetfile('*.txt*','MultiSelect','on');

numfiles = size(FileName,2);

for ii = 1:numfiles
    FileName{ii}

    entirefile =fullfile(PathName,FileName{ii})

    fid = fopen(entirefile);
    % your code

    fclose(fid);

end