文章目录

  • 关于appdesigner
  • 开始制作APP
    • 设计视图
    • 代码视图
      • 修改变量名称
      • 编写初始化函数
      • 按钮回调函数
  • 最终效果演示

关于appdesigner

appdesigner是matlab的app设计工具,由于结合了图形界面与代码界面,其GUI设计要简单不少,matlab预置了许多仪表、控件的图形及相应的代码框架,使得用户在设计自己的GUI时更加方便快捷。配合matlab自身强大的数学功能,使用者可以迅速地打造出一款实现相应功能的app。

相应的,由于使用了大量matlab预置的元素,使得一些更为个性化的独特设计难以在appdesigner上实现。同时,appdesigner生成的app必须要在搭载了matlab的平台上才能运行,即使打包成.exe文件仍然无法脱离matlab,移动端更是无法支持,这也使得appdesigner的使用场景受到限制。

开始制作APP

本篇博客展示的是一个分析简单MOS共源放大器电路静态工作点的APP。

要启动appdesigner,只需要在指令行输入appdesigner即可。

设计视图

在设计视图里,APP设计者可以设计GUI,在这里可以看到最后呈现给用户的效果。同时,可以直接拖动左侧预置的控件放到APP的GUI里,也可以插入文字、图像,实现快速布局:

在右下方的“检查器”中,还能对这些元素做进一步修改:

除此之外,在设计视图里也有诸多辅助功能,譬如对齐、调整间距等,选中自己想要排版的控件即可操作:

代码视图

在设计视图里,只能对GUI进行设计,要真正的实现功能,还是要到代码视图中去。在代码视图中,很明显地划分出白色和灰色两种代码块,灰色是不能直接修改的,而白色则可以由设计者自行编写:

修改变量名称

在设计视图里摆放的控件,在代码试图中都会有对应的变量,这些变量都被罗列在代码的开头:

需要注意的是,在最开始这些变量的名字并不方便阅读,而是诸如"Button123"这样的初始变量名:

这显然对后续的编程工作极不友好,但灰色的代码块又无法直接修改,令人十分头疼。不过,在右侧的组件浏览器,我们可以右键点击对应控件,找到重命名选项进行重命名。而且,重命名后代码会自动更新完成变量名的修改,不需要在代码中修改。

编写初始化函数

在一些时候,我们并不希望所有的数值都要自己输入,而是有一个合理的初始值,同时初始值也能方便编写APP时的调试,不需要每一次启动APP时都重新输入数据。为了实现这个功能,我们需要编写初始化函数,即startupFcn

要新建一个初始化函数,我们要现在右侧组件浏览器中选中整个UI,再在左侧代码浏览器中选择“回调”,点击搜索框右侧的加号,就可以新建一个初始化函数:


在这个函数里,就可以设置一些变量的初值,这些变量都是与输入框对应的。对于分析电路APP来说,就是RL,VS,K,VT,VI这几个变量,我们可以一一设置:

        function startupFcn(app)app.RL.Value=2000;app.VS.Value=9;app.K.Value=0.001;app.VT.Value=1;app.VI.Value=3;end

这样,启动APP后,输入框里就会直接显示设置好的初值:

按钮回调函数

目前为止,这个APP仍然只是一具空壳,无法对用户输入的任何数据有所反应。接下来,才是实现APP功能的核心:按钮回调函数,有了按钮回调函数,用户在按下按钮后才会有各种功能的实现。

新建一个按钮回调函数的过程与初始函数类似,在右侧组件浏览器中选中想要设置函数的按钮,之后在左侧代码浏览器中新建回调函数即可:


至于函数内的内容,根据要实现的功能不同天差地别,而且更多基于matlab与电路的知识,本篇博客不深入探讨,仅贴出代码:

输出直流传输特性图像:

        function PrintImage(app, event)app.SetVI.Value=0;rl=app.RL.Value;vs=app.VS.Value;vt=app.VT.Value;k=app.K.Value;vo=0:0.001:5*vs;x=0:0.001:5*vs;bd=5000*vs+1;for i=1:5000*vs+1vi=(i-1)/1000;if(vi<vt)vo(i)=vs;elseif(vo(i-1)>=vi-vt)vo(i)=vs-k/2*(vi-vt)^2*rl;bd=i;elsevo(i)=(rl*k*(vi-vt)+1-sqrt((rl*k*(vi-vt)+1)^2-2*vs*rl*k))/(rl*k);endendplot(app.UIAxes,x(1:bd*2),vo(1:bd*2));app.DCImage.Value=0;end

绘制图像并标出直流工作点:

        function setVI(app, event)app.DCImage.Value=0;rl=app.RL.Value;vs=app.VS.Value;vt=app.VT.Value;k=app.K.Value;v=app.VI.Value*1000;vo=0:0.001:5*vs;x=0:0.001:5*vs;bd=5000*vs+1;for i=1:max(bd,v)+1vi=(i-1)/1000;if(vi<vt)vo(i)=vs;elseif(vo(i-1)>=vi-vt)vo(i)=vs-k/2*(vi-vt)^2*rl;bd=i;elsevo(i)=(rl*k*(vi-vt)+1-sqrt((rl*k*(vi-vt)+1)^2-2*vs*rl*k))/(rl*k);endendplot(app.UIAxes,x(1:max(v,bd*2)),vo(1:max(v,bd*2)),v/1000,vo(v),'*r');app.VO.Value=num2str(vo(v));app.SetVI.Value=0;end

最终效果演示

这个电路分析APP仍处于最初级的状态,只能分析电路图所示的特定电路,与那些强大的电路分析软件相去甚远,除了作为电路分析课的一次作业,并没有太高实用价值,充其量只是对APP编写的一点初探。而用appdesigner编写的APP正如前言所说,受到诸多限制。只能说,水平有限,求大神轻喷。

绘制直流传输特性图像:

标出静态工作点:

修改参数:

使用matlab的appdesigner制作分析固定简单电路的APP相关推荐

  1. MATLAB使用AppDesigner制作测试界面的入门小案例

    matlab的AppDesigner基本使用 前几天搞了一个matlab的小的界面设计,使用到了其自带的工具AppDesigner,最近再使用有好些都忘记了,把一些基本的使用方式记录在案,如果有一些基 ...

  2. android如何制作出一个简单的聊天app

    初学android没多久,之前学过一些web,所以有一点java基础,想着能不能尽快在android上做出一点东西,就萌生了这个想法,话不多说,直接上干货 思路: HttpURLConnection可 ...

  3. 基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析

    <基于matlab的光学薄膜特性分析>由会员分享,可在线阅读,更多相关<基于matlab的光学薄膜特性分析(17页珍藏版)>请在金锄头文库上搜索. 1.目录1 技术指标 .12 ...

  4. 基于matlab的光学薄膜特性分析,基于matlab的光学薄膜特性分析.doc

    目录 1 技术指标1 2 基本原理1 2.1 单层光学薄膜1 2.2 多层光学薄膜及矩阵理论2 3 基于matlab的光学薄膜特性分析4 4 结论9 5 参考文献9 6 附录:基于matlab的光学薄 ...

  5. msk误码率 matlab仿真,GMSK调制解调的MATLAB仿真与误码率分析.pdf

    GMSK调制解调的MATLAB仿真与误码率分析 67 第34卷 第2期 <新疆师范大学学报>(自然科学版) Vol.34,No.2 2015年6月 Journal of Xinjiang ...

  6. 解扰matlab,数据序列扰乱与解扰MATLAB实现及性能分析—利用m序列.doc

    数据序列扰乱与解扰MATLAB实现及性能分析-利用m序列 <数据序列的扰乱与解扰的MATLAB实现及性能分析-利用17级m序列> 第 PAGE 1页 共20页 数据序列的扰乱与解扰的MAT ...

  7. 基于matlab的齿轮,基于matlab的故障齿轮分析.doc

    基于matlab的故障齿轮分析 基于matlab的故障齿轮分析 摘要 这篇文献,研究了齿轮箱中轮齿裂纹对齿轮振动的响应,及轮齿裂纹对啮合刚度的影响.并在matlab基础上分析了齿轮的裂纹故障.断齿故障 ...

  8. matlab 215卷积码,基于matlab的卷积码的分析与应用

    基于matlab的卷积码的分析与应用 基于MATLAB 的卷积码的分析与应用东北大学本科毕业设计(论文) 毕业设计(论文)任务 书 -I- 毕业设计(论文)任务书 毕业设计(论文)题目: 基于 MAT ...

  9. 灰色关联分析的简单介绍以及使用

    灰色关联分析概述 在许多问题分析当中,哪些是主要因素,哪些是次要因素,哪些因素对发展影响较大,这些都是系统分析中都是人们普遍关心的问题 灰色关联分析的优势 无论样本量的多少和样本有无规律都可以适用 计 ...

  10. 基于MATLAB成绩分析系统设计,基于MATLAB的班级成绩分析.doc

    基于MATLAB的班级成绩分析.doc 基于MATLAB的班级成绩分析 摘要: 本文重点介绍了MATLAB强大的绘图功能.通过应用MATLAB分析班级学生成绩说明其程序的简单,以及程序运行之后的图形显 ...

最新文章

  1. linux nmcli源码,Linux上利用nmcli命令创建网络组(示例代码)
  2. linux通过管道的进程通信,linux 线程或进程之间通过管道通信(pipe)
  3. 远离极限编程 (Don’t do XP)
  4. git push出错 remote: Hook Error: request authorize server: curl error: Couldn't resolve host name
  5. halcon模板匹配测试流程
  6. python爬取京东手机数据_实例解析Python如何实现爬取京东手机图片
  7. Hyperledger Fabric学习笔记(四)- fabric单机部署 solo 版
  8. 创建IOS应用程序通用下的Setting以及读取方式
  9. Android——倒计时跳转+sharedpreferences
  10. Android自定义View研究(六)--View中的原点坐标相关问题
  11. android删除重复照片,android 删除重复文件
  12. 机器学习项目中使用统计学方法的十个例子
  13. Linux Swap机制概述
  14. 微电子科学与工程是否属于计算机类专业,微电子科学与工程专业属于什么学科...
  15. springboot + vue + FastDFS实现文件上传(支持预览)
  16. python文件内容倒序_python倒序读取文件tail方式
  17. Java定义类person_定义一个名为Student的类,它继承Person类,其中定义sno(表示学号)和major(表示专业)两个成员变量...
  18. 研究显示,技术学习成本高已成科学、技术、工程和数学类职业发展最大障碍 | 美通社头条...
  19. IDEA 的Surround With (例如try/catch)快捷键
  20. 武汉理工大学 大数据架构与模式期末复习

热门文章

  1. Support Vector Machine's Large Margin
  2. admin登录 404_Shiro Springboot 集群共享Session (Redis)+单用户登录
  3. 347.前K个高频元素(力扣leetcode) 博主可答疑该问题
  4. java类路径定制_设置Java类路径的注意事项
  5. Codeforces - 102222H - Fight Against Monsters - 贪心
  6. appium移动自动化测试-安装2
  7. 两个异步处理AsyncTask和Handler的优缺点
  8. Form嵌入到Panel里(C#)
  9. 从程序员到项目经理(7):程序员加油站 -- 完美主义也是一种错
  10. 在linux服务器上安装jdk