Назначить массив в MATLAB - PullRequest
       1

Назначить массив в MATLAB

0 голосов
/ 24 октября 2011

У меня вопрос по поводу следующего кода.

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

Ответы [ 2 ]

2 голосов
/ 07 ноября 2011

Я думаю, вы можете быть озадачены синтаксисом нескольких «выходных аргументов» функции.В отличие от большинства языков программирования, 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
2 голосов
/ 24 октября 2011

Доступ к массиву в MATLAB использует скобки для «нормальных» массивов или фигурные скобки для массивов ячеек . «Нормальный» массив может содержать только числовые значения, поэтому вам придется использовать массив ячеек - поэтому попробуйте Filepath{2} = uigetfile(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...