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_enableposition=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_enableposition=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.mzph.cn/pingmian/7053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中Math函数与舍入

立方根 console.log(Math.sqrt(25)); //数学方式25平方根 console.log(25 ** (1 / 2)); //25的0.5次方 console.log(8 ** (1 / 3)); //8的1/3次方计算最大最小值 console.log(Math.max(1, 5, 88, 22, 132)); //返回最大值 console.log(Math.max(1, 5, 88, 22, 132)); //…

SpringBoot中阿里OSS简单使用

官方文档:Java跨域设置实现跨域访问_对象存储(OSS)-阿里云帮助中心 1.pom中引入依赖 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.15.1</version> </dependency> 如…

基于Spring Boot的大学生社团活动平台设计与实现

基于Spring Boot的大学生社团活动平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页功能界面图&#xff0c;学生在大学生社团…

模拟电路设计与分析——电流

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 原子电流的产生电流的单位电流的方向直流电交流电直流&交流对比开路&闭路 原子 世界万物都是由原子构成&#xff0c;那么…

跨领域精英汇聚,驱动ATFX加速迈向行业巅峰

人才是企业发展的第一资源&#xff0c;企业间的竞争归根结底是人才的竞争。若想实现高质量发展目标&#xff0c;需要高端复合型人才队伍作支撑。面对日益激烈的市场竞争&#xff0c;作为行业头牌品牌&#xff0c;ATFX展现其强大的品牌魅力与前瞻战略布局&#xff0c;近半年来在…

深入理解回溯算法

大家好&#xff0c;我是 方圆&#xff0c;本篇我们来讲回溯。回溯相当于穷举搜索&#xff0c;它会尝试各种可能的情况直到找到一个满足约束条件的解&#xff0c;寻找解的手段一般通过 DFS 实现&#xff0c;是一个 增量构造答案 的过程。回溯法适用于解决能够将原问题拆分成子问…

【linuxC语言】守护进程

文章目录 前言一、守护进程的介绍二、开启守护进程总结 前言 在Linux系统中&#xff0c;守护进程是在后台运行的进程&#xff0c;通常以服务的形式提供某种功能&#xff0c;如网络服务、系统监控等。守护进程的特点是在启动时脱离终端并且在后台运行&#xff0c;它们通常不与用…

【Linux】冯·诺依曼体系结构

要想谈进程&#xff0c;我们就不能只谈进程&#xff0c;我们如果想搞清楚什么是进程&#xff0c;就要从操作系统讲起。我们现在的不管是Linux或是Windows或是安卓等操作系统&#xff0c;它们都有一个相同点&#xff0c;那就是遵循冯诺依曼体系结构&#xff0c;我们看一下冯诺依…

多用户商城系统思维导图

多用户商城系统思维导图之退换货商品计算情况&#xff1a; 这是多用户商城系统思维导图的子图&#xff0c;总图可参考&#xff1a;

C语言知识点补充——操作符详解

1、计算幂次数和平方根 使用<math.h>数学库 pow()函数计算幂次数&#xff1b;sqrt()函数计算平方根。 注&#xff1a;sqrt()输入同样的数字&#xff0c;计算出来的数值&#xff0c;可能不相等&#xff0c;因为输出double数&#xff0c;小数点后面的数值不一定一致。 2…

mysql数据库(排序与分页)

目录 一. 排序数据 1.1 排序规则 1.2 单列排序 1.我们也可以使用列的别名&#xff0c;给别名进行排序 2.列的别名只能在 ODER BY 中使用&#xff0c; 不能在WHERE中使用。 3.强调格式&#xff1a;WHERE 需要在 FROM 后&#xff0c; ORDER BY 之前 1.3 二级排序&…

【考研数学】武忠祥「基础篇」如何衔接进入强化?

如果基础篇已经做完&#xff0c;并且讲义上的例题也都做完了&#xff0c; 那下一步就是该做题了 这个时候&#xff0c;不能盲目做题&#xff0c;做什么题很重要&#xff01;我当初考研之前&#xff0c;基础也很差&#xff0c;所以考研的时候选了错误的题集&#xff0c;做起来就…

1078 字符串压缩与解压

solution 输入的字符串含空格&#xff0c;可以先吸收换行符再用getline()解压时&#xff0c;字符数可能不止是各位数字&#xff0c;存在多位数的情况压缩时&#xff0c;别漏了最后一组字符 #include<iostream> #include<string> using namespace std; int main()…

SpringBoot自动连接数据库的解决方案

在一次学习设计模式的时候&#xff0c;沿用一个旧的boot项目&#xff0c;想着简单&#xff0c;就把数据库给关掉了&#xff0c;结果报错 Consider the following: If you want an embedded database (H2, HSQL or Derby), please put it on the classpath. 没有数据库的需…

一款开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验

Snap.Hutao 胡桃工具箱是一款以 MIT 协议开源的原神工具箱&#xff0c;专为现代化 Windows 平台设计&#xff0c;旨在改善桌面端玩家的游戏体验。通过将既有的官方资源与开发团队设计的全新功能相结合&#xff0c;提供了一套完整且实用的工具集&#xff0c;且无需依赖任何移动设…

ICode国际青少年编程竞赛- Python-1级训练场-变量入门

ICode国际青少年编程竞赛- Python-1级训练场-变量入门 1、 a 4 Dev.turnRight() Dev.step(a)2、 a 4 Spaceship.step(a) Dev.step(a)3、 a 4 Dev.step(a) Dev.turnLeft() Dev.step(a)4、 a 5 Dev.step(a) Spaceship.step(a) Dev.step(a)5、 a 3 Dev.step(a) Dev.tur…

【如此简单!数据库入门系列】之存储设备简介

文章目录 1 前言2 存储设备分类3 主存层次结构4 磁盘结构5 RAID6 总结7 系列文章 1 前言 没有存储&#xff0c;就没有数据&#xff01; 如果说ER模型和数据库规范化是数据库概念模式的技术和方法&#xff0c;那么存储设备就是数据库物理模式的基础。 物理存储设备包含哪些类型…

风扇开启执行逻辑

执行流程 public static void businessExecutionWork(){//以下为业务逻辑部分System.out.println("1、根据电池包控制风扇服务执行 开始!");//1、获取电池包电压、电流、环境温度//获取电池包电压、电流、环境温度ObtainBatteryDataService obtainBatteryDataServic…

【目标检测】Deformable DETR

一、前言 论文&#xff1a; Deformable DETR: Deformable Transformers for End-to-End Object Detection 作者&#xff1a; SenseTime Research 代码&#xff1a; Deformable DETR 特点&#xff1a; 提出多尺度可变形注意力 (Multi-scale Deformable Attention) 解决DETR收敛…

柯桥西语培训之在西班牙旅游点菜哪些坑不能踩?

Por muy bien que se coma en Espaa —que es mucho— hay una cosa innegable: lo que pasa en la cocina se queda en la cocina. No todos los alimentos son igualmente seguros o sabrosos cuando se encuentran fuera de la comodidad de nuestra propia casa. Ya sea po…