0

我正在构建一个代码,让用户打开一些文件。

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);

我只是没有机会选择文件。单元阵列保持为空,如下图所示。

空元胞数组

4

2 回答 2

2

MATLAB 找不到您选择的文件。您的变量filenames2仅包含文件的名称,而不是其完整路径。如果您不提供 的完整路径importdata,它将搜索您在 MATLAB 路径上提供的任何文件名,如果找不到,它将如您所见那样出错。

尝试这样的事情 - 为了便于描述,我只是用单选来做,但你可以用多选做类似的事情。

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

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

于 2013-04-25T14:37:32.007 回答
1

您可以尝试添加

pause(0.1);

刚过uiwait(reference);

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

于 2014-01-07T16:42:10.547 回答