【问题标题】:How to import multiple files in matlab, using uigetfile and importdata?如何在matlab中导入多个文件,使用uigetfile和importdata?
【发布时间】:2014-07-08 17:19:34
【问题描述】:

我想选择多个文件,从文件中导入数据并在 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 类型的文件名,或者 双精度类型的文件标识符。

多选错误(第 14 行)fid = fopen(entirefile);

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

有人对我如何解决此问题有任何建议吗?

【问题讨论】:

  • 这是有意的:fid = fopen(file)?还是应该是fopen(entirefile)
  • 抱歉,应该只在问题中编辑 fopen(entirefile) 以避免混淆。 @吉格

标签: matlab loops user-interface import


【解决方案1】:

问题在于如何访问元胞数组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  

【讨论】:

  • 你能帮我进一步吗?我想将entire file 保存到数组矩阵中,这样我就可以处理每个文件。我试过使用entirefile = []; for i = 1:numfiles entirefile =fullfile(PathName,FileName{i}); end ,但是当我尝试查看整个文件中的内容时,我得到 0 或只是 wholefile = [] 。任何帮助将不胜感激。
  • @user3580436 此站点上的最佳做法通常是一次问一个问题。但简而言之,从entirefile 中创建一个单元数组,如下所示:entirefile{ii}=fullfile(PathName,FileName{ii}) 并再次访问它:fid = fopen(entirefile{ii})
  • 谢谢,但是当我尝试这个时它不起作用,它产生了错误:未定义的函数或变量'ii'。多选错误(第 8 行)整个文件{ii} =fullfile(PathName,FileName{ii});
  • @user3580436 ...您在代码中使用了i而不是ii...
猜你喜欢
  • 1970-01-01
  • 2014-07-02
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
相关资源
最近更新 更多