无法在Matlab中使用uigetfile打开文件

时间:2013-04-25 14:07:46

标签: arrays matlab cell

我正在构建一个允许用户打开某些文件的代码。

reference = warndlg('Choose the files for analysis.');
uiwait(reference);
filenames2 = uigetfile('./*.txt','MultiSelect', 'on');
if ~iscell(filenames2)
    filenames2 = {filenames2};    % force it to be a cell array of strings
end
numberOfFiles = numel(filenames2);

data = importdata(filenames2{i},delimiterIn,headerlinesIn);

当我运行代码时,提示出现,我按OK,然后没有任何反应。代码停止了,告诉我:

Error using importdata (line 137)
Unable to open file.

Error in FreqVSChampB_no_spec (line 119)
data=importdata(filenames2{1},delimiterIn,headerlinesIn);

我只是没有机会选择一个文件。如下图所示,酒窖保持空白。

Empty cell array

2 个答案:

答案 0 :(得分:1)

MATLAB找不到您选择的文件。您的变量filenames2仅包含文件的名称,而不包含其完整路径。如果您没有提供importdata的完整路径,它将搜索您在MATLAB路径上提供的任何文件名,如果找不到它,则会看到错误。

尝试这样的事情 - 我只是为了便于描述而选择单一选项,但你可以通过多种选择做类似的事情。

[fileName, pathName] = uigetfile('*.txt');
fullNameWithPath = fullfile(pathName, fileName);
importdata(fullNameWithPath)

fullfile非常有用,因为它会在pathNamefileName之间插入正确的字符(Windows上为\,Unix上为/)。

答案 1 :(得分:1)

您可以尝试添加

pause(0.1);

uiwait(reference);

之后

对我而言,它有效。事实上,当我们使用uiwait和uigetfile时,我注意到活动窗口发生了变化。