Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在matlab中进行GUI编程_Matlab_Matlab Guide - Fatal编程技术网

如何在matlab中进行GUI编程

如何在matlab中进行GUI编程,matlab,matlab-guide,Matlab,Matlab Guide,我正在尝试学习matlab中的GUI编程,为此我正在尝试创建一个简单的乘法计算器。我在没有GUI的情况下用matlab编写了一些程序,但我在理解matlab中的GUI编程时遇到了困难。我已经创建了GUI,但我不知道如何为此进行编程 这是我做的GUI 我以“add”的名称保存了给定的GUI,并创建了add.m。您能告诉我如何为给定的gui进行编程吗。matlab gui编程的基本思想如下: 设置数字 输入消息循环 这两个步骤都是通过使用MatlabGUI编辑器(指南)完成的。重要的是,您将程序流

我正在尝试学习matlab中的GUI编程,为此我正在尝试创建一个简单的乘法计算器。我在没有GUI的情况下用matlab编写了一些程序,但我在理解matlab中的GUI编程时遇到了困难。我已经创建了GUI,但我不知道如何为此进行编程

这是我做的GUI


我以“add”的名称保存了给定的GUI,并创建了add.m。您能告诉我如何为给定的gui进行编程吗。

matlab gui编程的基本思想如下:

  • 设置数字
  • 输入消息循环
  • 这两个步骤都是通过使用MatlabGUI编辑器(指南)完成的。重要的是,您将程序流的控制权交给消息循环。为了完成任务,您可以告诉消息循环在发生任何事情时调用函数

    在gui编辑器中,右键单击按钮并选择“查看回调->回调”。这将在.m文件中自动创建这样一个函数,您可以在其中指定按下按钮时发生的情况

    为了更好地理解,请查看按钮的回调属性。指南将输入类似于
    add('push\u calc\u Callback',hObject,eventdata,guidata(hObject))
    的内容,它调用主函数(add)作为新回调函数的包装。您可以在属性编辑器中自己完成,也可以在启动代码中以编程方式完成

    我想你希望发生以下事情:

  • 获取edit1和edit2的字符串值
  • 将字符串转换为数值
  • 执行计算
  • 将text3的字符串值设置为结果的字符串表示形式
  • 您可以使用第三个函数参数以及get和set函数中可用的句柄来访问gui元素的属性。句柄结构由guide创建,元素的名称与指定的标记相同

    在matlab代码中,这可能如下所示:

    % --- Executes on button press in push_calc.
    function push_calc_Callback(hObject, eventdata, handles)
    % hObject    handle to push_calc (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    x_string = get( handles.edit1, 'String');
    y_string = get( handles.edit2, 'String');
    
    x_numeric = str2num( x_string );
    y_numeric = str2num( y_string );
    
    result_numeric = x_numeric * y_numeric;
    result_string = num2str( result_numeric );
    
    set( handles.result, 'String', result_string);
    
    编辑:问题是什么是handles.edit1等等。 无论何时,当您想使用按钮或文本框等小部件进行操作时,您必须能够准确地告诉matlab您所指的小部件。导游在幕后做了几件事。其中之一是调用,它创建小部件并返回一个随机但唯一的数字。这有点像一个银行账号,因为它是一个可以用来操纵它的资源的密码。在向导中创建新按钮并在属性编辑器中指定标记“clickme”时,向导将创建按钮并将句柄存储在
    句柄中。clickme
    。这为您提供了一种简单的方法来获取您创建的任何小部件的句柄,前提是您仍然能够记住分配给它的标记

    让我们看一下函数的第一行:

    x_string = get( handles.edit1, 'String');
    
    只要它与matlab与edit1小部件关联的数字相同,并且是属性编辑器中的属性名称(在本例中为“字符串”),就不应该关心调用函数的数字。这与在所有窗口元素中单击相同,直到属性编辑器显示“edit1”标记,并且对于该对象,您可以找到名为“String”的属性值


    每当您键入新文本、移动滑块、更改窗口大小等时,属性都会自动更新。反过来也是如此。如果使用
    set(handles.edit1,[20 20 100 30])修改“Position”属性
    ,然后小部件会自动移动并重新调整到指定的位置。

    我想你已经看到了:@0x90我看到了,但仍然很混乱。你能帮我使用上面的gui吗?嘿,谢谢你的代码。我试过了,它工作了。但是你能解释一下代码吗;什么是handles.edit1,handles.edit2和handles.result它做什么我把答案扩大了一点。我希望它不会太混乱。如果是,试着做一些非常简单的事情。绘图,在命令窗口中键入gcf以获取当前图形的控制柄,或键入gca以获取当前轴的控制柄。然后尝试get(gcf),它将生成一个包含所有属性的文本墙。
    x_string = get( handles.edit1, 'String');