我对以下代码有疑问。
[name file] = uigetfile('*', 'Select an image');
if [name file] ~= 0
%file found
end
有没有办法说[名称文件]可以分配给数组?例如,Filepath[2] = ui.getfile..
(这不起作用)。
当我尝试以下代码时,我只获取文件名而不是路径。我宣布这个阵列错了吗?
Filepath{2} = uigetfile({'*.wav;*.mp3;*.aac;*.ogg'}, 'Select a file');
%Filepath{2} = uigetfile('*', 'Select an image');
%noFile = Filepath(0);
%if Filepath[1]~= 0
%if Filepath ~= 0
disp('Loading signal');
disp(Filepath);
%disp(Filepath{0});
disp('Filepath{1}');
disp(Filepath{1});
disp('Filepath{2}');
disp(Filepath{2});
答案 0 :(得分:2)
MATLAB中的数组访问使用括号表示“普通”数组,或使用cell arrays的大括号。 “普通”数组只能保存数值,因此您必须使用单元格数组 - 所以请尝试Filepath{2} = uigetfile(...)
。
答案 1 :(得分:2)
我认为你可能会对函数的多个“输出参数”的语法感到困惑。与大多数编程语言不同,MATLAB允许函数具有多个返回值;这些被称为输出参数。当你有一个函数[a b] = foo(x)
时,最好将其视为将第一个输出发送到名为a
的变量并将第二个输出发送到名为b
的变量的语法。即使语法[a b]
看起来像一个数组,最好不要这样想。
以下是uigetfile
:
[filename, pathname] = uigetfile('*.m', 'Select a file');
分别在名为filename
和pathname
的变量中提供所选文件的文件名和路径。
filename =
foo.m
pathname =
/home/tobin/
但我不明白的是,如果它被取消,这个方法返回零,如果成功,则返回填充数组。那么如何检查零(文件未找到)?
为什么不尝试一下?
> [filename, pathname] = uigetfile('*', 'Select a file')
filename =
0
pathname =
0
如果取消uigetfile
,则两个输出均为0。所以你可以这样做:
[filename, pathname] = uigetfile('*', 'Select a file');
fullname = horzcat(pathname, filename);
if filename == 0
fprintf('uigetfile was cancelled.\n');
else
fprintf('user selected "%s".\n', fullname);
end