2015-04-28 123 views
0

我正在开发一个图形用户界面,我希望用户以文本或Excel格式输入。当他点击我的GUI上的“上传文件”按钮时,文件浏览器将打开,他将选择文本文件。一旦他点击打开文件应该在工作区,所以我的下一个代码将采取值给结果。在Matlab中加载数据GUI

我所做的是:有按钮

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

下此代码现在的浏览器打开时,我可以选择的有4列和2000行数据的.txt文件。但是当我回到工作空间时,我看不到任何工作空间,但是在命令窗口中的第二列中的所有值!

+0

如果你想在GUI中显示一些东西在工作区中显示,你必须使用'assignin('base','you_choose_name_for_var_in_workspace',var_name_in_GUI)',其中'var_name_in_GUI'实际上应该是你的'句柄。 '。查看更多这里:http://www.mathworks.com/help/matlab/ref/assignin.html – scmg

回答

0

您可以使用setappdata和关联的getappdata来存储应用程序定义的数据,并从其他位置(例如从GUI或基本工作区)中检索它。

对于您的情况,您可以将AB,CD存储在基工作区中,以便它们可以从其他脚本中使用。如果需要,您还可以存储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访问您的数据。