Matlab:如何将变量从GUI中的编辑文本框传递到另一个m文件?

时间:2015-04-11 22:53:21

标签: user-interface matlab-guide matlab

我正在使用GUIDE创建MATLAB GUI。 GUI具有单选按钮,弹出菜单,可编辑文本框和按钮。我使用单选按钮和弹出菜单很好。但是,我想从可编辑文本框(用户输入)中获取值,并将其分配给变量nu。然后,我想在用户按下按钮时从GUI调用的另一个m文件中使用此值nu,以便进行必要的计算(计算代码在m中) -file)。

当我尝试将nu的值从GUI(用户输入的)传递到m文件时出现问题。

可编辑文本框回调的代码如下:

function etxt_freq_Callback(hObject, eventdata, handles)

% hObject    handle to etxt_freq (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of etxt_freq as text
%        str2double(get(hObject,'String')) returns contents of etxt_freq as a double

% input = str2double(get(hObject,'string'));
% if isnan(input)
%  errordlg('You must enter a numeric value between 0 and 1','Invalid Input','modal')
%  uicontrol(hObject)
%  return
% else
%  display(input);
% end
% handles.nu = str2num(get(hObject, 'string'))
% guidata( hObject, handles );

nu = str2num(get(hObject, 'string'))

任何建议都会很棒!

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为你需要在按钮回调函数中编写代码,如果你想在按下按钮时操作外部m文件功能。

喜欢..

nu = str2num(get(handles.etxt_freq, 'String'));

我认为它可以是一个使用输入参数创建函数的解决方案 以下是我的例子,它对我有用。

我创建了一个类似下面的函数,并将它放在我的GUI文件的相同目录中(.fig / .m)

function [ double_nu ] = make_value_double( nu )
% make_value_double function get a value from argument.
% And return a value that two times of nu.

    double_nu = nu * 2;

end

和GUI代码

function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to send_etxt (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

nu = str2num(get(handles.etxt_freq, 'String'));
nu1 = make_value_double(nu);
set(handles.text1, 'String', nu1);

我制作了静态文本框来检查功能是否有效 当我按下按钮时,
1.'按钮1'得到一个' String'价值并使其成为数字 2.此号码分配给' 3.' nu'成为我职能的论据。 (make_value_double
我的函数对外部文件进行计算。 (make_value_double.m)
5.将计算值分配给nu1,并将其打印到静态文本框。(handles.text1)

----------------------------------------------- -------------------
或者如何使用save&加载功能?
制作' nu'到' nu.mat'并加载' nu.mat'在另一个程序中。

在GUI中     function pushbutton1_Callback(hObject,eventdata,handles)     pushbutton1的%hObject句柄(参见GCBO)     保留%eventdata - 将在MATLAB的未来版本中定义     %处理带句柄和用户数据的结构(参见GUIDATA)

nu = str2num(get(handles.etxt_freq, 'String'));

% save(filename, variable)
save('nu.mat', 'nu');

在您的simulink代码中,键入load('nu.mat');命令将使变量' nu'你的simulink代码的工作区。然后使用它。

或者,您可以CloseRequestFcn删除' nu.mat'。通过这样做,当您关闭图形/ GUI时,' nu.mat'也删了。然后,您的simulink功能无法使用' nu.mat' GUI已关闭。

% --- Executes when user attempts to close figure1.
function figure1_CloseRequestFcn(hObject, eventdata, handles)
% hObject    handle to figure1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hint: delete(hObject) closes the figure
delete(hObject);

% delete 'nu.mat' in your working directory
delete 'nu.mat';