在Matlab GUI中加载数据

时间:2015-04-28 05:18:27

标签: matlab user-interface load

我正在开发一个GUI,我希望用户以文本或excel格式输入。当他点击"上传文件"从我的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文件。但是当我回到工作区时,我无法在工作空间中看到任何内容,但在命令窗口中显示第二列的所有值!

1 个答案:

答案 0 :(得分:0)

您可以使用setappdata和关联的getappdata来存储应用程序定义的数据,并从其他地方检索,例如从GUI或基础工作区检索。

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