Matlab 手写板设计

1、介绍 

    MATLAB手写板可以作为一个很好的数据输入口,其可以获取该手写板上任意字母、数字,甚至可以制作样本数据。具体用途体现在如下几方面:

  1. 数学公式输入:手写板允许用户直接用手写方式输入复杂的数学公式,这对于使用键盘输入困难的公式尤其有用。

  2. 图形绘制:在进行图形学研究或需要绘制精确图形时,手写板可以提供更直观和精确的绘图方式。

  3. 交互式演示:在教学或演示中,手写板可以用于实时绘制图形、图表或数学表达式,增强互动性和演示效果。

  4. 数据标记和注释:在分析数据和结果时,手写板可以用来在图形上直接添加注释或标记重点。

  5. 个性化界面:一些用户可能会发现使用手写板比传统的鼠标和键盘更符合个人习惯,从而提高工作效率。

  6. 快速原型设计:在进行算法或模型的快速原型设计时,手写板可以快速记录和测试初步想法。

  7. 辅助工具:对于有特殊需要的用户,如行动不便或更喜欢手写输入的用户,手写板可以作为一个辅助工具。

    2、制作方法

     在matlab中,可以在其GUI界面中,制作写字板。具体过程如下:

2.1 创建GUI界面

      在命令行窗口中,输入“guide”命令,回车,弹出“GUIDE快速入门”,创建一个空白GUI界面即可。

2.2 GUI界面控件布设

     制作GUI界面时,需要3类控件:坐标轴、按钮组、按钮。其中坐标轴是手写区域,按钮组主要为了美观,提示用于该区域的功能,两个按钮:“重置”、“保存”,分别用于清空手写区域,以及对手写区域图片进行保存。再按钮组、按钮上名字进行修改,便于用于理解,具体布设如下图所示:

   由于axes默认室友刻度线的,因此需要对其属性进行设置,将刻度线删除掉。分别为:

xcolor、ycolor设置成白色

xticklabel、yticklabel里的刻度删掉。

2.3 代码添加

在创建好GUI界面后,再根据需要撰写代码即可。其中,不选中控件,右击进行添加代码。

(1)获取鼠标位置:

% --- Executes on mouse press over figure background, over a disabled or
% --- inactive control, or over an axes background.
function figure1_WindowButtonDownFcn(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)
global draw_enable;
global x;
global y;
set(handles.axes1,'XLim',[0,1],'YLim',[0,1]);%防止开始时鼠标乱动
draw_enable=1;
if draw_enable
    position=get(gca,'currentpoint');
    x(1)=position(1);
    y(1)=position(3);
end

(2)更新鼠标位置并画线(鼠标在按下的情况下运动)

% --- Executes on mouse motion over figure - except title and menu.
function figure1_WindowButtonMotionFcn(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)
global draw_enable;
global x;
global y;
if draw_enable
    position=get(gca,'currentpoint');
    x(2)=position(1);
    y(2)=position(3);
    line(x,y,'EraseMode','xor','LineWidth',5,'color','b');
    x(1)=x(2);
    y(1)=y(2);
end

(3)鼠标放下后停止画线

% --- Executes on mouse press over figure background, over a disabled or
% --- inactive control, or over an axes background.
function figure1_WindowButtonUpFcn(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)
global draw_enable
draw_enable=0;

(4)重置按钮

重置是为了将axes中内容清空,代码如下:

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
axes(handles.axes3);
cla reset;
set(handles.axes3,'xtick',[]);
set(handles.axes3,'ytick',[]);
set(handles.axes3,'xcolor','w');
set(handles.axes3,'ycolor','w');

(5)保存按钮

保存按钮是将写字板中内容进行保存。

% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
h=getframe(handles.axes3);
[filename,pathname,fileindex]=uiputfile('*.bmp','图片另存为');
file_path=[pathname filename];
imwrite(h.cdata,file_path,'bmp');
cla(handles.axes3);

3、实验结果

测试结果如下,可以发现本程序可以实现手写输入、图片保存与手写板清空。

GUI界面手写字母a手写字母b
重置图片保存保存图片打开

4、源代码使用教程

若不想自己手写代码,可以直接下载源代码,下载链接:https://download.csdn.net/download/qq_32867925/89272940

包括两个文件:m文件与fig文件,如下:

  要想运行该程序,在matlab命令行窗口中输入“guide”,在弹出的对话框中选择“writeboard.fig”。

  点击绿色三角形,即可进行运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/595508.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电子书制作神器,简单操作

​随着数字化时代的到来,电子书籍越来越受到人们的喜爱。而一款优秀的电子翻页书制作软件,则能够帮助你轻松制作出专业级的电子书,让你的阅读体验更加丰富多彩。 今天,我们就来为大家推荐一款优秀的电子翻页书制作软件——FLBOOK在…

Burp和Proxifier抓包微信小程序

1、Burp设置代理 2、浏览器下载证书 3、安装证书 4、Proxifier设置代理 5、Proxifier设置Proxification Rule 6、Burp查看抓包数据 打开一个小程序,可以看到WeChatAppEx的流量先经过Proxifier,再经过127.0.0.1:8080到Burp

如何使用ArcGIS Pro进行选房分析

无论是研究城市规划布局还是寻找理想的住房,都需要综合考虑购物、医疗、教育和休闲等多方面因素,此时我们的GIS软件就可以派上用场了,这里为大家介绍一下如何使用 ArcGIS Pro 进行选房分析,希望能对你有所帮助。 数据来源 教程所…

性能优化 | el-table中内嵌大量el-input控件导致渲染卡顿的问题

场景 项目中有一个应用场景,用户需要在表单中大量使用选择框以及输入框填写数据(每一行大概有三十几个输入框),当选择框与输入框达到一定数量的时候,页面会出现输入不连续、卡顿的现象,如下图:…

LoRa无线通讯入门

本文图片来自于深入浅出讲解LoRa通信技术,LoRa技术介绍,LoRa开发与应用,物联网学习必备知识点!_哔哩哔哩_bilibili LoRa无线通讯 LoRa(Long Range)是一种低功耗广域网(LPWAN)技术&a…

【春招特供】Unity面试题总结 | Unity基础篇

物体发生碰撞的必要条件? 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体,而且必须是运动的物体带有Rigidbody脚本才能检测到碰撞。 2. Unity3d中的碰撞器和触发器的区别? 碰…

颠覆传统?「一束光子,两种频率」的量子纠缠!

在最新的研究中,科学家们开发了一种革命性的量子纠缠方式——“频域光子数路纠缠”(frequency-domain photon number-path entanglement)。这一量子物理学的重大进展涉及到一个创新性的工具:频率分束器(frequency beam…

B2985A是德科技B2985A高阻计

181/2461/8938产品概述: B2985A 静电计/高阻表 描述 B2985A 静电计/高阻表是全球少有具有图形显示功能的静电计,可凭借 0.01 fA(0.01 x 10-15 A)的分辨率帮助您可靠测量弱电流,并可测量高达 10 PΩ(10 x 1…

[leetcode] 62. 不同路径

文章目录 题目描述解题方法方法一:动态规划java代码复杂度分析 方法二:排列组合java代码复杂度分析 相似题目 题目描述 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右…

毕业设计:《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》

前言 《基于 Prometheus 和 ELK 的基础平台监控系统设计与实现》,这是我在本科阶段的毕业设计,通过引入 Prometheus 和 ELK 架构实现企业对指标与日志的全方位监控。并且基于云原生,使用容器化持续集成部署的开发方式,通过 Sprin…

开源模型应用落地-CodeQwen模型小试-SQL专家测试(二)

一、前言 代码专家模型是基于人工智能的先进技术,它能够自动分析和理解大量的代码库,并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议,帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&…

使用Bandzip分卷压缩文件

需求 部分文件太大,例如超过10G,就不能使用企业微信等传输,如果可以把一个10G的文件分割成为10个1G的文件就可以方便传输了。 实现方式 使用bandzip,把超过10G的文件分卷压缩成为多个小的zip文件。 把生成的多个文件放在同一目…

网红隋总揭秘:高效实施人力RPO项目的秘诀

随着企业对于招聘流程效率和专业性的追求日益提升,RPO(招聘流程外包)项目逐渐成为人力资源领域的热门话题。隋总凭借丰富的行业经验和独特的视角,分享了关于如何高效实施人力RPO项目的秘诀。 一、明确目标,找准定位 在启动RPO项目之前&#x…

零基础入门篇④ 初识Python(注释、编码规范、关键字...)

Python从入门到精通系列专栏面向零基础以及需要进阶的读者倾心打造,9.9元订阅即可享受付费专栏权益,一个专栏带你吃透Python,专栏分为零基础入门篇、模块篇、网络爬虫篇、Web开发篇、办公自动化篇、数据分析篇…学习不断,持续更新,火热订阅中🔥专栏订阅地址 👉Python从…

【挑战30天首通《谷粒商城》】-【第一天】01、简介-项目介绍

文章目录 课程介绍一、 项目介绍1、项目背景A、电商模式1、B2B 模式2、B2C 模式3、C2B 模式4、C2C 模式5、O2O 模式 1.2、项目架构图1.3、项目技术 & 特色1.4、项目前置要求二、分布式基础概念(略)三、环境撘建(略) one more thing 课程介绍 1.分布式基础(全栈开发篇)2.分…

UE5 audio capture 回声问题 ||在安卓上有爆鸣声

参考视频 0.基本步骤 【UE4_蓝图】录制麦克风声音/系统声音并输出保存WAV文件_ue4录音-CSDN博客 1.步骤 1.创建Sound Submix A 2. 右键新建Sound Submix B 3.把B的两个参数调为-96 4.audio capture的Base Submix,把前面提到的A赋值进去 5.开始录制输出和完成录制…

【Unity 协程】

Unity中的协程(Coroutine)是一种编程结构,它允许你以一种看似同步的方式编写可能需要异步执行的代码。协程特别适用于需要在一定时间后执行操作,或者在循环执行某段代码直到某个条件满足时的场景。 协程使用IEnumerator委托来实现…

30天精通 Δ-Σ ADC 设计

在现代电子工程和信号处理领域,模拟-数字转换器(ADC)是实现信号精确转换的核心组件。ADC技术正经历革新,拓展了其在多个前沿技术领域的应用范围。 **首先,**ADC的采样率和分辨率是衡量其性能的关键指标。随着技术工艺…

海外网安同行们面对当下的就业环境,也破防了。。。

问:漂亮国的安全行业就业市场怎么样? 答:初级岗位挺好找的,如果你有一个硕士学位并且还有10年工作经验的话。 0x00 我之前在分析海外的就业环境的时候[海外安全行业工资水平怎么样?],一度以为外国的月亮就…

分布式光伏管理系统和一般的光伏管理系统相比有什么区别?

随着全球对可再生能源的关注度日益提高,光伏技术作为其中的佼佼者,已经得到了广泛的应用。在光伏技术中,管理系统扮演着至关重要的角色,它关乎着光伏电站的运行效率、能源产出以及运维成本等多个方面。其中,分布式光伏…
最新文章