Matlab的GUI的slider滑动条和edit动态文本框联合使用例程

2023-05-16

代码链接:https://download.csdn.net/download/benchuspx/12404653

今天想用matlab的plot画个函数的曲线图,函数有一个参数a可以调,不同的a对应不同的曲线图。为了方便观察a的改变对曲线的影响,我想做一个简单的GUI用户界面,通过界面上的slider滑动条拖动改变a,或者从动态文本框输入a,这样可以实时观察曲线图的变化。

结果网上找了一堆资料全都零零散散,连这么简单的功能都没个完整的教程。于是根据自己学的写一个。

以y=ax的plot为例,效果如下。这里用到的代码可以在我的资源里下载。
链接地址点这
MATLAB版本为2018b

在这里插入图片描述

gifcam是个好东西,动图都靠它

操作如下:

新建GUI窗口

命令行输入guide,可以进入matlab的GUI功能。后面如果要修改GUI窗口的属性,也可以这样输入guide,然后打开现有GUI。
下面新建一个GUI。
在这里插入图片描述
然后就是傻瓜操作,画布大小可以改。把作图区、动态文本框拖进去,修改identifier(它的代号,后面编辑的时候是它的名字),字号字体,初始文本。也可以都不用改。
在这里插入图片描述

slider也是一样,拖进去,改参数。比如最大最小值什么的。

在这里插入图片描述
这里有些小技巧,比如动态文本框的MAX一般为1,就是只能输入一行,输入完了按回车就可以完事。如果MAX设置2,就可以输入两行哦。如果想把滑动条设置成竖着的,只需要鼠标调整它的大小变成竖着的就行了。

GUI建好了,可以保存,关闭。后面如果还想修改上面这些东西,可以命令行敲guide,打开改。
这时候matlab的编辑区会产生这个figure的源代码。下面实现GUI的功能全靠写代码。

写代码实现功能

下面先来看看它默认生成的文件是个什么意思

function varargout = untitled1(varargin)
% UNTITLED1 MATLAB code for untitled1.fig
%      UNTITLED1, by itself, creates a new UNTITLED1 or raises the existing
%      singleton*.
%
%      H = UNTITLED1 returns the handle to a new UNTITLED1 or the handle to
%      the existing singleton*.
%
%      UNTITLED1('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in UNTITLED1.M with the given input arguments.
%
%      UNTITLED1('Property','Value',...) creates a new UNTITLED1 or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before untitled1_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to untitled1_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help untitled1

% Last Modified by GUIDE v2.5 09-May-2020 21:22:10

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @untitled1_OpeningFcn, ...
                   'gui_OutputFcn',  @untitled1_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before untitled1 is made visible.
function untitled1_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to untitled1 (see VARARGIN)

% Choose default command line output for untitled1
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes untitled1 wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = untitled1_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;



function edit1_Callback(hObject, eventdata, handles)
% hObject    handle to edit1 (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 edit1 as text
%        str2double(get(hObject,'String')) returns contents of edit1 as a double


% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to edit1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end


% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject    handle to slider1 (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,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider


% --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end

反正就是大段的注释,看看就好。可以写代码加入自己想要的功能。

  1. 第一个function是untitiled1,是文件的一些初始设置。里面都不用管。第二个类似,也不用管。

  2. 第三个是OutputFcn,里面本来的代码不用动,把我们想写的初始代码写这。比如窗口一打开,就画个初始的图y=ax,a先取1。

  3. edit1_Callback函数
    这个是动态文本框的响应函数,就是你在窗口中操作动态文本框,它就会运行下面的程序。如果你的动态文本框给的identifier名字是edit2,那这个函数名也与之对应。有两句常用的代码。注意如果这两句代码用在edit1_Callback函数下,可以用hObject获取句柄。如果想在别的function中这些代码改变edit1的文本,则需要用handles.edit1获取句柄。

    editdata = get(hObject,'String');   %得到输入的字符串,如果要得到数字,还需要用str2num
    set(handles.edit1,'string',‘我要输入的文本’);  %这句代码可以改变文本框中的文本。 
  1. edit1_CreateFcn函数
    动态文本框的初始函数。GUI界面一打开,这个函数下的代码就运行一下。可以设置文本框的初值。比如我设置文本框初始显示1
	set(hObject,'string',1);
  1. slider1_Callback函数
    滑动条slider1的响应函数,记住以下两句话
     sliderdata = get(hObject,'Value');  %得到滑动条的值
     set(handles.slider1,'value',a);  % 设置滑动条的值,设置的是数值,value类型
  1. slider1_CreateFcn函数
    滑动条slider1的初始函数。GUI刚打开的时候运行下面这个,可以设置滑动条初始位置。比如设置为1
 set(hObject,'Value',1);   

也可以根据自己的需要新写一些function,方便引用
为了实现文初提到的功能–文本框和滑动条同时可以调节a值,并实时绘图y=ax。可以在edit1
的响应函数下写

global a;
    global x;
    input = str2num(get(hObject,'String'));
    if input<=10
        a = input;
        y = a*x;
        plot(x,y);
        ylim([0,100]);
        set(handles.slider1,'Value',a); %使得滑动条和输入框保持一致
    else
        msgbox('invalid value','warning','warn'); %error message window
    end    

注意同一全局变量在所有被用到的地方都应该先申明global,不然就当局部变量处理了。

同理,slider1的响应函数可以写入:

global a;
    global x;
    input = get(hObject,'Value');
    a = input;
    y = a*x;
    plot(x,y);
    ylim([0,100]);
    set(handles.edit1,'String',num2str(a)); %使得输入框edit1和滑动条保持一致

打开GUI的初始程序untitled1_OutputFcn可以如下(直接加在对应function里面):

global a ;
global x ;
a=1;
x = 0:10;
y = a*x;
plot(x,y);
ylim([0,100]);

% Get default command line output from handles structure
varargout{1} = handles.output;

这样就可以啦!
如文初,点击运行程序,可以跳出想要的GUI,调节a值,曲线图也变化。
如果调的过程中有bug,可以评论让大家都知道。

这里用到的代码可以在我的资源里下载。如下
https://download.csdn.net/download/benchuspx/12404653

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Matlab的GUI的slider滑动条和edit动态文本框联合使用例程 的相关文章

  • 长文图解工业HART总线协议

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 在AIOT蓬勃发展的今天 xff0c 也掀起传统工业设备IOT革新的浪潮 那么需要对工业设备进行IOT改造 xff0c 除了直接开发具有IOT互联协议的新型设备 xff0c 对原有总线设
  • RS-485总线,这篇很详细

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 大家好 xff0c 我是逸珺 xff0c 前面一篇文章总结了一下工业HART总线 xff0c 今天来聊聊RS 485总线 RS 485也是应用非常广泛的一种通信接口 xff0c 本文来讨
  • 图文详解Modbus-RTU协议

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 大家好 xff0c 我是逸珺 xff0c 前面总结了一下RS 485的一些要点 xff0c 今天来总结一下Modbus RTU协议 xff0c 原本想把实现思路也一起发出来 xff0c
  • 【干货】用FreeRTOS搭建Event-Driven应用框架

    关注 星标嵌入式客栈 xff0c 精彩及时送达 导读 大家好 xff0c 我是逸珺 今天来分享一下 xff0c 之前项目中使用FreeRTOS搭建的Event Driven事件驱动框架 什么是Event Driven xff1f Event
  • 【Spring Boot】1.解决IDEA中springboot整合mybatis中出现的Invalid bound statement(not found)的问题

    最近学习springboot的开发 xff0c 中间磕磕碰碰也是遇到了诸多问题 xff0c 以前编写java IDE都是用的eclipse xff0c 现在换成idea了倒有点不适应了 xff0c 中间遇到了一个让人很郁闷的问题 xff0c
  • (数据结构与算法分析 一)------快速求幂算法,Java递归实现

    快速求幂算法 xff0c 递归实现 xff0c 其实算法的思想很简单 xff0c 但是感觉非常经典 xff0c 这个也是我开始看数据结构与算法分析这本书的开始把 xff0c 大学期间感觉就得深究一下算法 xff0c 课堂学习的太肤浅 xff
  • 永磁同步电机PMSM负载状态估计(龙伯格观测器,各种卡尔曼滤波器)矢量控制,坐标变换

    永磁同步电机PMSM负载状态估计 xff08 龙伯格观测器 xff0c 各种卡尔曼滤波器 xff09 矢量控制 xff0c 坐标变换 xff0c 英文复现 xff0c 含中文报告 xff0c 可作为结课作业 仿真原理图结果对比完全一致 另外
  • 分享信号处理相关的几部名著

    导读 大家好 xff0c 我是逸珺 数字信号处理还是比较难的 xff0c 我也只是会一些简单的 但是一直对这个有兴趣 xff0c 曾经有朋友问我看什么书籍比较好 xff0c 今天分享几本我经常看的数字信号处理书籍给大家 数字信号导论 书有点
  • 钓鱼累了,写下断言怎么用

    导读 大家好 xff0c 我是逸珺 今天来分享整理如何正确的使用断言 何为断言 断言一般是用于检测在某个程序位置程序必须满足某些条件的宏 一般用的多的可以分两种种情况 xff1a 前置条件 xff1a 在某个程度点开始的地方后置条件 xff
  • 手把手带你写一个中断输入设备驱动

    导读 大家好 xff0c 我是逸珺 首先说声抱歉 xff0c 最近迷上钓鱼了 xff0c 有时候晚上出去夜钓大板鲫了 xff0c 停更了一段时间 来几张鱼获图片 xff1a 技术还是不太到家 xff0c 遇到几次大鲤鱼都给溜了 xff0c
  • STM32的SPI外设片选只有一个怎么破?

    导读 大家好 xff0c 我是逸珺 之前用STM32的SPI需要控制很多外部芯片 xff0c 可是一个SPI的外设只有一个片选 xff0c 要实现独立片选一主多从 xff0c 怎么实现呢 xff1f SPI总线拓扑 一般地 xff0c SP
  • Java compareTo()方法

    Java compare To 方法 xff08 Java String类 xff09 xff1a 1 用途 xff1a 按字典序比较两个字符串 2 语法 xff1a int compareTo String anotherString 3
  • C语言函数如何正确的输入和返回数组(一维和二维)

    对于一维数组而言有两种方法 xff1a 1 函数外 xff08 主函数内 xff09 初始化数组 xff0c 相当于已经分配好了一块固定的内存 xff0c 然后将其地址传入函数 xff0c 经过一番操作 xff0c 再将地址返回 2 函数内
  • 将以-1结束的整数存储到字符型数组中去

    代码如下 xff1a xff08 在求整数长度的时候注意0的存在 xff09 xff08 注意字符型数组中存储的是acsii码 xff0c 比如说要将整数1存到字符型数组arr 100 中 xff0c 则是arr i 61 1 43 39
  • C语言数组的结尾字符

    对于整数型数组来说 xff0c 结尾字符为整数 对于字符型数组来说 xff0c 结尾字符为 0 xff0c 占一个空间 所以当输出字符串数组时 xff0c 若要整体输出 xff08 printf 34 s 34 s xff0c 则要在数组末
  • 含有字符串数组的结构体的赋值、输入、字符串比较

    1 之所以用到结构体 xff0c 是因为一个物体有多个属性 xff0c 此时使用结构体简单些 2 对字符串进行整体操作时 xff0c 需要添加头文件 include lt string h gt 1 字符串赋值需要使用strcpy char
  • JavaWeb

    JavaWeb Maven amp MyBatis xff1a https cyborg2077 github io 2022 08 11 JavaWeb01 JavaWeb HTML amp CSS xff1a https cyborg2
  • Ubuntu20.04+eclipse+jlink(openocd+SWD)+arm-none-eabi-gcc+STM32开发

    Ubuntu20 04 43 eclipse 43 jlink openocd 43 SWD 43 arm none eabi gcc 43 STM32开发环境搭建 1 文件准备 安装Eclipse IDE for C C 43 43 De
  • Java中类型转换

    1 char int int output 61 temp charAt 0 39 0 39 2 int char int a 61 1 char b 61 a 43 39 0 39 3 String int 将字符串转换为整数 int o
  • JAVA中int和char类型的相互转化

    预备知识 xff1a 1 int类型长度为4个字节 xff0c char类型长度为2个字节 所以char int为自动转换 xff0c int char为强制转换 xff08 因为可能有数据丢失风险 xff09 2 Java中设计char的

随机推荐

  • stm32的一些简单注意点

    下面说的这些只是一些关于 xff1a MiniSTM32f103系列的开发板 xff0c 以下皆是参考stm32中的手册 xff0c 只是博主的一些愚见 大家都知道 xff0c 我们是通过usb线连接我们的开发板和电脑 xff0c 我们用电
  • C++ vector用法(详解!!函数,实现)

    xff11 xff0c 简述一下vector的基本操作 xff0c 它的 xff53 xff49 xff5a xff45 xff0c capacity xff08 xff09 xff0c xff43 xff4c xff45 xff41 xf
  • 为什么很多公司都是用PADS和orCAD的组合来设计硬件呢?

    请问为什么要选用ORCAD画原理图 xff0c PADS画PCB呢 xff1f 两个不同的软件 ORCAD画原理图比较方便 xff0c 而PADS画PCB画PCB比较强大 xff0c 许多中小公司都这么干 这是各区二者所长 因为ORCAD的
  • XCOM V2.6串口助手

    XCOM V2 6 串口下载 链接 xff1a https pan baidu com s 1hMkNY zq0nqxfFnH4VRbDQ 提取码 xff1a 5bzm
  • STM32中文参考手册_V10

    STM32中文参考手册 V10 链接 xff1a https pan baidu com s 1AZXyanPyiazpVvVrJwXvRg 提取码 xff1a uwi5
  • 200SMART通信问题及解决方案

    今天在试运行S7 200SMART PLC 以太网通信 遇到以下问题 xff1a 连接时通信接口无选项如下图 解决办法如下操作 xff1a xff08 本人win10 xff09 1 打开任务管理器 xff08 在任务右击选中任务管理器即可
  • 快速创建一个scrapy爬虫

    如何快速创建一个scrapy爬虫 如下操作 xff1a 1 首先创建一个scrapy文件 在pycharm中的Terminal 中输入scrapy startproject myspider 2 快速生成一个爬虫 先进入生成后scrapy文
  • Codesys配置电子凸轮连接虚轴

    外接编码器通过电子凸轮连接虚轴 1 创建编码器和虚轴 xff08 Encoder为编码器 xff0c 该编码器是4000脉冲为一转 xff0c AXIS1为虚轴 xff09 2 配置编码器参数如下 3 配置虚轴参数如下 4 测试用了以下功能
  • Matlab的plot的线形、marker的形状、颜色

    Line StyleDescription Solid line default Dashed line Dotted line Dash dot line MarkerDescriptionoCircle 43 Plus sign Ast
  • 电脑操作用户不小心被禁用,千万不要着急。

    不小心将电脑用户禁用导致无法使用电脑 xff0c 该怎么解决 1 常见的用户禁用情况2 非常见情况 xff0c 按F8进去安全模式出现密码弹窗 记住密码的 3 极端情况 xff0c 电脑用户被禁用 xff0c 安全模式的密码不知道 有可能忘
  • Laravel框架源码解析

    一 请求 响应篇 1 程序启动准备 1 1 服务容器实例化 index php入口文件包含了 app 61 require once DIR 39 bootstrap app php 39 这一行代码 xff0c app php会返回框架的
  • 【转】MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

    转自 xff1a http www matlabsky com thread 10308 1 1 html 一 基本知识 xff1a 转 1 二进制文件与文本文件的区别 xff1a 将文件看作是由一个一个字节 byte 组成的 xff0c
  • vscode开发ROS(5)-ROS工程目录结构

    ROS工程目录结构 ROS工程整体结构图package文件夹devel文件夹 vscode文件夹 ROS工程整体结构图 1 ROS工程整体结构图如下 2 对应到之前创建的test工程 如下 3 ROS工程总目就是整个工程的根文件夹 对应这里
  • vscode开发ROS(19)-ros与arduino串口通信(c++)

    ros与arduino串口通信c 43 43 写在最前安装serial库编写arduino串口通信程序编写ros节点端口号配置配置CMakeLists txt文件编译整个ROS工程运行节点后记 写在最前 串口通信在嵌入式领域的重要性我也就不
  • 无人机开发套件

    一 产品介绍 我们现在有完善的仿真环境开发视频教程和系列硬件学习平台 xff0c 可以帮助学生实现飞控开发的入门和提成 xff0c 帮助项目实现原型的搭建和开发的迅捷 xff0c 辅助老师实现无人机的教学 科研便捷 xff0c 可以帮助学习
  • 无人机基于Matlab/Simulink的模型开发(连载一)

    一切可以被控制的对象 xff0c 都需要被数学量化 这是笔者从事多年研发工作得出的道理 xff0c 无论是车辆控制 xff0c 机器人控制 xff0c 飞机控制 xff0c 还是无人机控制 xff0c 所有和机械运动相关的控制 xff0c
  • 无人系统路径规划开发流程(避障方向)含代码

    有很多同学在我们微信群和我们阿木实验室论坛提问 xff0c 无人机 无人车的路径规划和避障应该怎么入手 随着无人系统的发展 xff0c 无人系统的路径规划的研究也越来热 生活中无人机器系统也越来越多的出现 xff0c 从无人机 xff0c
  • 双旋翼Falcon无人机背后技术之PX4混控器

    最近被零零科技的矢量动力双旋翼Falcon无人机刷屏了 xff0c 其50分钟的续航让行业惊艳 感谢零零科技为无人机行业带来了创新的正能量 xff01 可能很多人会有疑惑 xff1f 为什么四旋翼无人机可以变身双旋翼无人机 xff0c 背后
  • PX4-Vision 自主无人机开发平台测评

    对于目前的自主无人机开发平台上 xff0c 国内的用户除了我们阿木实验室出品的自主无人机开发平台上 xff0c 又多了一种选择 xff0c 就是这个 PX4 Vision 自主无人机开发平台 硬件上是 pixhawk 4 一个 UP Boa
  • Matlab的GUI的slider滑动条和edit动态文本框联合使用例程

    代码链接 xff1a https download csdn net download benchuspx 12404653 今天想用matlab的plot画个函数的曲线图 xff0c 函数有一个参数a可以调 xff0c 不同的a对应不同的