如何在MATLAB中从gui中获取空间分隔双数组

时间:2014-08-21 02:22:17

标签: user-interface matlab matlab-figure matlab-guide

您好我有一个Matlab GUI,它采用空格分隔数组(双或整数),当点击GUI按钮时,我需要将这些数据传递到同一目录中的另一个单独的.m文件。在button_cal_Callback中,我尝试检索数据。

function button_cal_Callback(hObject, eventdata, handles)

我尝试了几种方法,但我失败了以下代码是我的尝试。 S是我为分配数据而创建的新变量,edit_S是编辑文本标签标记值。

S = guidata(handles.edit_S,'array');
S = get(hObject,'edit_S');
S = str2double(get(handles.edit_S,'string'));

以上代码中没有一个对我有用,请告诉我如何从前端获取此值......

输入的示例值>> S = 1638 1500 1688 1688 1688 1688 1688 1713 1738 1763 1788 1819 如何传递给第二个M文件>> [1638 1500 1688 1688 1688 1688 1688 1713 1738 1763 1788 1819]

1 个答案:

答案 0 :(得分:1)

ThusharaK - 我将试着描述为什么上述每一次尝试都没有真正做到你想要的。

S = guidata(handles.edit_S,'array');

查看guidata的文档。此函数仅用于使用用户定义的GUI数据获取或设置(更新)句柄结构。默认情况下, handle 包括GUI小部件的所有句柄,以及您决定添加的所有数据。上面的代码行是尝试使用编辑文本小部件的句柄保存字符串'array'。这实际上会覆盖所有句柄数据!

S = get(hObject,'edit_S');

这里, hObject 是按钮句柄,因此与编辑文本小部件无关。 get(hObject,'someField')从hObject获取someField属性。如果它不存在(如本例所示),则会生成错误。

S = str2double(get(handles.edit_S,'string'));

这几乎就是你想要的。使用 edit_S 句柄,您尝试获取与文本编辑小部件中写入的文本相关联的 String 数据。但它可能作为单元格返回,因此您必须在 str2num (或 str2double )之前从单元格数组转换为字符数组

numericData = str2num(char(get(handles.edit_S,'string')));

这应该生成您现在可以传递给下一个函数的值数组。试试这个,看看会发生什么!