2016-06-20 4 views
0

Мне нужно приостановить программу до тех пор, пока не будет создана переменная. Я указываю на файл данных, затем открываю uiimport, чтобы указать диапазон данных. И в этот момент я должен приостановить программу до тех пор, пока не будет создана переменная.Подождите, пока переменная не существует MATLAB

%find file 
[FileName,PathName] = uigetfile({'*.xls;*.xlsx', 'Excel files(*.xls, *.xlsx)'},'Укажите Excel-файл с данными'); 
%open import wizard 
uiimport(strcat(PathName, FileName)); 
% here i need to suspend the program until the variable is created 

ответ

2

При вызове uiimport вы должны указать выходную переменную. Если вы это сделаете, никакие строки после вашего звонка до uiimport не будут выполнены до завершения uiimport (пользователь выбрал данные для импорта или нет).

data = uiimport(fullfile(PathName, FileName)); 

% Do stuff with data 
disp(data.value) 

Если по какой-то причине, вы сделали нужно ждать, пока существует переменная, вы могли бы использовать while петлю в сочетании с exist, но в целом это является маркером плохого дизайна программы.

while ~exist('variablename', 'var') 
    % Do something that may define the variable 
end 

Update

Если вы просто читаете файл Excel, то, вероятно, проще использовать xlsread сделать так:

data = xlsread(filename, -1); 
+0

Но программа продолжает работать сразу же после того, как звоните в uiimport. [ссылка] (http://images.vfl.ru/ii/1466457679/b4bf3cc2/13094222.jpg ) –

+0

@MaximMefodovskiy Ah ok. Да, вы должны указать вывод на 'uiimport', как я показал выше – Suever

+0

Я пытаюсь это сделать. Но у меня другое окно. http://images.vfl.ru/ii/1466458008/56a547ae/13094251.jpg –

Смежные вопросы