Arrays 无法在Matlab中使用uigetfile打开文件
我正在构建一个代码,允许用户打开一些文件Arrays 无法在Matlab中使用uigetfile打开文件,arrays,matlab,cell,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 en
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);
我只是没有机会选择一个文件。该光线保持为空,如下图所示
MATLAB找不到您选择的文件。变量
filenames2
仅包含文件名,而不包含其完整路径。如果您没有提供importdata
的完整路径,它将搜索您在MATLAB路径上提供的任何文件名,如果找不到,它将出错,如您所见
尝试类似的方法-为了便于描述,我只使用单个选择,但是您可以使用多个选择来执行类似的操作
[fileName, pathName] = uigetfile('*.txt');
fullNameWithPath = fullfile(pathName, fileName);
importdata(fullNameWithPath)
fullfile
很有用,因为它在pathName
和fileName
之间插入了正确的字符(Windows上是\
,Unix上是/
)filenames2
仅包含文件名,而不包含其完整路径。如果您没有提供importdata
的完整路径,它将搜索您在MATLAB路径上提供的任何文件名,如果找不到,它将出错,如您所见
尝试类似的方法-为了便于描述,我只使用单个选择,但是您可以使用多个选择来执行类似的操作
[fileName, pathName] = uigetfile('*.txt');
fullNameWithPath = fullfile(pathName, fileName);
importdata(fullNameWithPath)
fullfile
很有用,因为它在pathName
和fileName
之间插入了正确的字符(Windows上是\
,Unix上是/
)您可以尝试添加
pause(0.1);
就在uiwait(参考)之后代码>
对我来说这很有效。事实上,我注意到当我们使用uiwait和uigetfile时,活动窗口发生了变化。您可以尝试添加
pause(0.1);
就在uiwait(参考)之后代码>
对我来说这很有效。事实上,当我们使用uiwait和uigetfile时,我注意到活动窗口发生了变化。在您提供的代码片段中,我看不到任何importdata
?请查看对上一个答案的编辑-检查用户没有在uigetfile
对话框中按cancel
。我不明白为什么这些信息与您的回答相关我的实际问题。我知道在某个时候添加它的意义,但是我自己正在测试它,我没有按下取消按钮。测试是否按下取消的唯一方法是检查filenames2==0。但是,即使我按OK,它也会这样做,这不会给我任何信息。您对uigetfile
有问题。在调试模式下运行,并查看是否获得所选的文件名。首先尝试不使用“MultiSelect”。为什么需要警告对话框?为什么不使用uigetfile
对话框的标题?在您提供的代码段中,我看不到任何importdata
?请查看对上一个答案的编辑-检查用户没有在uigetfile
对话框中按cancel
。我不明白为什么这些信息与我的实际问题相关。我知道在某个时候添加它的意义,但是我自己正在测试它,我没有按下取消按钮。测试是否按下取消的唯一方法是检查filenames2==0。但是,即使我按OK,它也会这样做,这不会给我任何信息。您对uigetfile
有问题。在调试模式下运行,并查看是否获得所选的文件名。首先尝试不使用“MultiSelect”。为什么需要警告对话框?为什么不使用uigetfile
对话框的标题?