【问题标题】:Inputting/Accessing data for GUI MATLAB为 GUI MATLAB 输入/访问数据
【发布时间】:2014-10-29 20:28:27
【问题描述】:

我希望用滑块绘制一个简单的数据图表,以更改 y 轴数据的系数。我从快速开始创建了我的 GUI 界面,带有绘图和滑块。我现在希望编写代码(我相信simpleguide_OpeningFcn 部分)来导入我的数据集。我的数据集是 5 个不同的 300x1 向量,我目前使用名为 importfile2.m 的导入函数将它们导入到普通 MATLAB 文件中。

对于如何为我的简单plot(x,y) 将这些数据导入 GUI 的任何帮助将不胜感激。干杯

【问题讨论】:

    标签: matlab user-interface import matlab-figure


    【解决方案1】:

    另一种方法是使用 setappdatagetappdata 从 GUI 中的任意位置获取数据。

    例如,在importfile2.m 的末尾,您可以使用 setappdata 将数据存储在某个变量中。第一个参数告诉 MATLAB 在哪个工作区中保存它。例如,您可以使用 GUI 界面本身或使用可从任何地方访问的基本工作区。这是最通用的方式:

    setappdata(0,'FancyName',YourData); %// The 0 is for the base workspace,i.e. the 'root'.
    %//YourData is the actual data and 'FancyName' is whatever name you give them. It does not have to be the same name as the variable in your function. The important thing is to use the same name in getappdata as below.
    

    如果您只想将数据与 GUI 图相关联,您可以使用以下内容:

    setappdata(handles.YourFigure_Tag,'FancyName',YourData);
    

    要在 GUI 中获取数据,请在其打开函数(或任何您想要的回调)中使用 getappdata,然后您就可以开始了:

    Data_inGUI = getappdata(0,'FancyName'):
    

    更稳健的方法是将数据直接存储在 GUI 的句柄结构中,以便可以从每个回调中访问:

    handles.Data_inGUI = getappdata(0,'FancyName'):
    guidata(hObject,handles); %// Update handles structure; important!
    

    应该这样做。希望对您有所帮助!

    EDIT 我认为另一种解决方案是在导入函数的末尾保存一个.mat 文件并将其加载到GUI 的OpeningFcn 中。比可能更简单/更快。

    编辑 2 根据您在下面的评论,我会这样做:

    1) 在GUI的OpeningFcn中,导入数据。

    [Date,OutAirTemp,SupAirtemp] = importfile3('AHU7Oct.csv')
    

    然后你就可以把所有东西都存储在handles结构中了:

    handles.Data = Date;
    handles.OutAirTemp = OutAirTemp;
    handles.SupAirtemp = SupAirtemp;
    guidata(hObject,handles); %// Update handles structure.
    

    然后在 GUI 的其他地方(即其他回调),您可以正常获取数据,即使用例如:

    NewDate = handles.Date - 4 %// or whatever.
    

    是不是清楚一点?

    【讨论】:

    • 谢谢。不过,我必须在星期一好好看看这个,才能接受这个答案。干杯
    • 我会选择第二个选项,使用“AllData”。然后您应该能够单独获取每个数据(日期、OutAirTemp、SupAirtemp)。请看我编辑的答案,我会尽量让它更清楚。
    • 不客气! guidata 实际上是在您对句柄结构中的数据存储进行更改时使用的,因此它用于在回调之间更新它。您可能想查看此链接以获取更多信息,这应该会使事情更清楚。乐意效劳! mathworks.com/help/matlab/ref/guidata.html
    • 哦,我看到了你关于滑块的新问题;我忘了提到你可以在回调结束时使用一次 guidata(...),因为在回调中,MATLAB 知道变量已经改变,所以每次变量改变时都不需要更新它;最后只有一次。
    • 非常感谢。我会看看这个改变是否有助于解决我的滑块问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多