Я думаю, вы можете быть озадачены синтаксисом нескольких «выходных аргументов» функции.В отличие от большинства языков программирования, 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
Похоже, что оба выхода равны 0, если uigetfile
отменено.Таким образом, вы можете сделать это:
[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