我正在使用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'))
任何建议都会很棒!
提前感谢您的帮助。
答案 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';