当前位置: 首页 > 知识库问答 >
问题:

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

诸新霁
2023-03-14

我正在创建一个MATLAB GUI使用指南。GUI有单选按钮、弹出菜单、可编辑文本框和按钮。我很好与单选按钮和弹出菜单的工作。但是,我希望从可编辑文本框(用户输入)中获取值,并将其赋给变量nu。然后,我希望在用户按下按钮时从GUI调用的另一个M文件中使用nu值,以便进行必要的计算(用于计算的代码在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个答案

白浩荡
2023-03-14

我认为你需要在一个按钮回调函数中编写代码,如果你想在你按下按钮时操作外部的M-文件函数。

就像..

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

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

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
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。'pushbutton1'获取'string'值并将其设置为number.
2。此编号分配给'NU'。
3。“Nu”变成了我功能的一个论点。(make_value_double)
4。我的函数对外部文件进行计算。(make_value_double.m)
5。将计算值赋给nu1,并将其打印到静态文本框中。(handles.text1)

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在GUI中,函数pushbutton1_Callback(hObject,eventdata,handles)%hObject handle to pushbutton1(参见GCBO)%eventdata reserved--将在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'也被删除了。然后,当GUI关闭时,您的simulink函数不能使用'nu.mat'。

% --- 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';
 类似资料:
  • 问题内容: 我有两个 newAccessLevels.java ,它有两个按钮“ Level 1”,“ Level 2”和 newAccessPanel.java。 我需要获取用户选择“ 1或2”的级别,以便可以在标题中显示它。 accessPanel.java, 例如访问级别1,访问级别2。如何完成此操作。下面是示例代码,因此,如果单击级别1,则将打开标题为* ACCESS LEVEL 1 的n

  • 我想在按下按钮时将一个活动中编辑文本的值传递给另一个活动,并在我的代码中使用该值。然而,在这些活动之间还有一个活动,我不想在其中使用该值 我的活动1包括: 用户从Activity1转到Activity2 活动2 用户从Activity2转到Activity3 活动3 在这里,我想将该值用作字符串。

  • 我的视图文件夹中有两个EJ,我创建了非常简单的EJ,看看是否可以将变量从一个EJ发送到另一个EJ。 a、 vews文件中的ejs b.ejs有 在我的节点js这是什么我做const表达式=要求('Express'); const body Parser=要求('body-parser'); 我想邮报必须在这里做点什么...

  • 问题内容: 我正在尝试将变量从一个包含文件传递到另一个。除非我在第二个包含文件中将变量声明为全局变量,否则此方法不起作用。但是,我不需要在调用第一个include的文件中将其声明为全局文件。例如: front.inc: index.php: 输出:詹姆斯 end.inc: 输出:无 如果我在end.inc中回显$ name之前声明了全局$name,那么它将正常工作。 我正在使用Apache服务器。

  • 问题内容: 我刚开始使用快速语言,并且知道这个问题是重复的。我发现了几个类似的问题和答案,但我无法弄清这个问题。 我想将ScandString变量的值从ScanViewController传递给ResultViewController。 ScanViewcontroller如下: ResultViewController如下: println(detectedString)没有给我任何结果。问题是

  • 我有两个表单,我想从form1中获取text box1的值并将其显示为form2中text box2的值。我还希望text box2中的文本以相同的形式(form2)出现在text box3中,但是当我运行程序时,这些值不会显示在text box3上。我希望你明白逻辑,因为它真的很混乱,我不能再简单了。这是我正在尝试做的代码: 我想获取textbox2的值并将其显示在textbox3上(两者都在同