我正在构建一个允许用户打开某些文件的代码。
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);
我只是没有机会选择一个文件。如下图所示,酒窖保持空白。
答案 0 :(得分:1)
MATLAB找不到您选择的文件。您的变量filenames2
仅包含文件的名称,而不包含其完整路径。如果您没有提供importdata
的完整路径,它将搜索您在MATLAB路径上提供的任何文件名,如果找不到它,则会看到错误。
尝试这样的事情 - 我只是为了便于描述而选择单一选项,但你可以通过多种选择做类似的事情。
[fileName, pathName] = uigetfile('*.txt');
fullNameWithPath = fullfile(pathName, fileName);
importdata(fullNameWithPath)
fullfile
非常有用,因为它会在pathName
和fileName
之间插入正确的字符(Windows上为\
,Unix上为/
)。
答案 1 :(得分:1)
您可以尝试添加
pause(0.1);
在uiwait(reference);
对我而言,它有效。事实上,当我们使用uiwait和uigetfile时,我注意到活动窗口发生了变化。