2015-04-28 2 views
0

Я разрабатываю графический интерфейс, где я хочу, чтобы пользовательский текст вводил текст или Excel. Когда он нажмет кнопку «Загрузить файл» из моего графического интерфейса, откроется браузер файлов, и он выберет текстовый файл. Как только он щелкнет, файл должен находиться в рабочем пространстве, поэтому мой следующий код примет значение, дающее результаты.Загрузить данные в графическом интерфейсе Matlab

То, что я сделал это: этот код под кнопкой

[filename,pathname] = uigetfile('*.txt') 
loaddata = fullfile(pathname,filename) 
data = load(loaddata) 
A = data(:,1) 
B = data(:,2) 
C = data(:,3) 
D = data(:,4) 
handles.input1 = A; 
handles.input2 = B; 
handles.input3 = C; 
handles.input4 = D; 

Теперь, когда открывается браузер, я могу выбрать файл .txt, который, имеющий 4 столбцов и 2000 строк данных. Но когда я возвращаюсь в рабочее пространство, я ничего не вижу в рабочей области, кроме всех значений из 2-го столбца в окне команд!

+0

Если вы хотите, чтобы что-то из GUI отображалось в рабочей области, вы должны использовать 'assignin ('base', 'you_choose_name_for_var_in_workspace', var_name_in_GUI)', где 'var_name_in_GUI' на самом деле должно быть вашим' handle. ??? '. Подробнее см. Здесь: http://www.mathworks.com/help/matlab/ref/assignin.html – scmg

ответ

0

Вы можете использовать setappdata и связанные с ними getappdata для хранения данных, определенных приложением, и получить их из других источников, например, из графического интерфейса или базовой рабочей области.

В вашем случае, вы можете хранить A, B, C и D в основном рабочее пространство, так что они будут доступны с другими сценариев. Вы также можете сохранить структуру handles, если хотите.

В качестве примера, ваш код в GUI может выглядеть следующим образом:

[filename,pathname] = uigetfile('*.txt') 
loaddata = fullfile(pathname,filename) 
data = load(loaddata) 

%// Store in the base workspace (i.e. the "0") 
setappdata(0,'AllData',data); 

Обратите внимание, что вы можете написать все, что вы хотите, как имя, до тех пор, как вы получить переменную с тем же именем, используя getappdata , Здесь я использовал AllData, но вы можете оставить это как data так же хорошо.

Таким образом, в другом сценарии вы работаете, используйте getappdata так:

DataInScript = getappdata(0,'AllData'); 

    A = AllData(:,1) 
    B = AllData(:,2) 
    C = AllData(:,3) 
    D = AllData(:,4) 

Так что теперь, в зависимости от того, уже назначены A, B, C и D вы можете получить доступ к данным непосредственно из AllData ,

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