【问题标题】:How can I save the edit box data in the GUI Guide?如何在 GUI 指南中保存编辑框数据?
【发布时间】:2012-07-28 12:01:54
【问题描述】:

我正在制作一个带有多行编辑框的 GUI。

用户必须在此编辑框中一次输入 3 个 x-y 坐标:

[345.567 123.123] 
[390.567 178.098]
[378.000 125.987]

通过单击按钮,我希望这些坐标以 矩阵 的形式在 Matlab GUI 工作区中“保存”,然后单击另一个按钮 从工作区“重新加载”,以便将来使用。

我该怎么做?

有人可以指导我吗?帮助将不胜感激!

【问题讨论】:

    标签: matlab user-interface matlab-guide editbox


    【解决方案1】:

    在 GUIDE 生成的 GUI 中有多种方法可以manage data。最简单的 IMO 是使用guidata

    例如在“保存”按钮回调中,您将访问编辑框字符串内容,将其解析为数字矩阵并将其保存在 handles 结构中。

    function pushbuttonSave_Callback(hObject, eventdata, handles)
        handles.M = str2num(get(handles.edit1, 'String'));
        guidata(hObject, handles);
    end
    

    接下来在“加载”按钮中,我们做相反的事情,通过从handles结构加载矩阵,将其转换为字符串,并设置编辑框内容:

    function pushbuttonLoad_Callback(hObject, eventdata, handles)
        s = num2str(handles.M, '%.3f %.3f\n');
        set(handles.edit1, 'String',s)
    end
    

    如果您想从“工作区”导出/导入数据,可以使用 ASSIGNIN/EVALIN 函数:

    assignin('base','M',handles.M);
    

    handles.M = evalin('base','M');
    

    【讨论】:

    • 感谢 Amro 的帮助,但我所做的是:function savepoint_Callback(hObject, eventdata, handles) user_entry = getappdata(handles.edit1 , 'yourVariable'); v = get(handles.edit1,'String'); matrix= str2num(v); assignin('base','a',matrix); 这个变量 'a' 以矩阵的形式存储在工作区中,例如:a = 0.3170 0.1272 0.2849 0.2467 0.3419 0.3609 但是我无法对“a”执行更多操作。我怎样才能进一步使用????我该怎么做 w1= a(1,2)+a(2,2) ???请帮帮我!
    【解决方案2】:

    保存数据:

    setappdata(h,'name',value) 
    

    加载数据:

    value = getappdata(h,'name')
    values = getappdata(h)
    

    其中 h 是您存储数据的句柄,name 是数据的变量,value 是实际数据。

    【讨论】:

    • Xurtio!我的变量“a”存储在工作区中。但我无法对该变量执行进一步的操作。我该怎么做 w1= a(1,2)+a(2,2)???
    • 这听起来更像是范围问题,但您现在好像在问一个不同的问题?如果是这样,您应该为新主题加注星标并在此处关注您的原始问题。
    猜你喜欢
    • 2018-04-25
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    相关资源
    最近更新 更多