【课设大报告】 基于matlab gui设计的三极管学习系统

news2024/12/23 18:26:58

目录

设计背景

1.1设计目的

2.设计方法

2.1使用软件工具

  2.2设计流程

3.模块界面设计及代码分析

3.1登录

3.2注册

3.3主菜单

3.4三极管介绍

3.5进制转换

3.6单位换算

3.7绘图

4.不足和改善

5.总结


  1. 设计背景

1.1设计目的

本程序旨在帮助为了帮助学生了解三极管的工作原理,输入输出特性并解决其中遇到的一些问题,为此我们还提供一点工具。

2.设计方法

2.1使用软件工具

Matlab2021

  2.2设计流程

3.模块界面设计及代码分析

3.1登录

3.1.1登录界面

3.1.2登录代码分析

设置背景图片

ha=axes('units','normalized','pos',[0 0 1 1]);

uistack(ha,'down');

ii=imread('background.jpg');

image(ii);

colormap gray

set(ha,'handlevisibility','off','visible','on');

登录

accnum=get(handles.edit1,'string');

root=get(handles.edit2,'string');

fid=fopen('land.txt','r'); %打开文件

line=fgetl(fid); %获取文件中的一行

    while ischar(line) %如果这一行中有字符

    s=regexp(line,' ','split'); %将这一行以空格为界拆分为数组

    a=cell2mat(s(1));

    b=cell2mat(s(2));

    if strcmp(a,accnum) == 1 && strcmp(b,root)==1 %如果账号密码都对

        close(spf); %关闭页面

        run(main); %打开主界面

        break

    end

    if strcmp(a,accnum)==1 && strcmp(b,root)==0%如果账号对,密码错误

        msgbox('密码错误!','提示','warn');

        break

    end

    if strcmp(a,accnum)==0 && strcmp(b,root)==1%如果账号错误

        msgbox('用户名未注册!','提示','warn');

        break

    end

    line=fgetl(fid); %获取下一行

end

清除功能

set(handles.edit1,'string',' '); %将空格输入编辑框中

set(handles.edit2,'string',' ');

关闭功能

close(spf)

3.2注册

3.2.1注册界面

3.2.2注册代码分析

accnum=get(handles.edit1,'string');

root=get(handles.edit2,'string');

fid=fopen('land.txt','a+'); %以追加的方式打开文件

fprintf(fid,'%s ',accnum); %将账号和一个空格符写入文件

fprintf(fid,'%s\n',root);%将密码写入文件

h=dialog('name','关于...','position',[500 500 200 70]);%定义提示框



uicontrol('parent',h,'style','text','string','注册成功!','position',[50 40 120 20],'fontsize',12);

uicontrol('parent',h,'style','pushbutton','position',...

   [80 10 50 20],'string','确定','callback','delete(gcbf)');

close(spf_01);

run(spf);

3.3主菜单

3.3.1主菜单界面

3.3.2主菜单代码分析

工具栏按钮:返回

close(main)

按钮组:切换到下一个gui界面

close(main)

run (其他界面)

3.4三极管介绍

3.4.1介绍界面

3.4.2代码分析

进入坐标系的创造函数

imshow(imread('sjg.png')); %插入图片

3.5进制转换

3.5.1进制转换界面

3.5.2进制转换代码分析

num=get(handles.edit1,'string');

num10=bin2dec(num); %二进制转十进制

set(handles.edit2,'string',num2str(num10));



num=get(handles.edit1,'string');

num10=bin2dec(num); %二进制转十进制

num8=dec2base(num10,8); %十进制转八进制

set(handles.edit2,'string',num2str(num8));



num=get(handles.edit1,'string');

num10=bin2dec(num); %二进制转十进制

num16=dec2hex(num10); %十进制转十六进制

set(handles.edit2,'string',num2str(num16));



num=get(handles.edit1,'string');

num10=base2dec(num,16); %十六进制转十进制

num8=dec2base(num10,8); %十进制转八进制

set(handles.edit2,'string',num2str(num8));

3.6单位换算

3.6.1单位换算界面

3.6.2单位换算代码分析

长度

table=[1,1000,10000,0.53996]; %单位换算表

a=get(handles.edit1,'string');

b=str2num(a); %类型转换

c(1)=b/table(1);

for i=1:4%根据单位个数设置循环数

    c(i)=c(1)*table(i); %计算

    b=num2str(c(i)); %赋值

    set(handles.(['edit' num2str(i)]),'string',b);

    guidata(hObject,handles); %实时更新与保存

end

面积

table=[1,1e2,1e6,1e10]; %单位换算表

a=get(handles.edit1,'string');

b=str2num(a); %类型转换

c(1)=b/table(1);

for i=1:4%根据单位个数设置循环数

    c(i)=c(1)*table(i); %计算

    b=num2str(c(i)); %赋值

    set(handles.(['edit' num2str(i)]),'string',b);

    guidata(hObject,handles); %实时更新与保存



end

体积

table=[1,1e3,1e9]; %单位换算表

a=get(handles.edit1,'string');

b=str2num(a);

c(1)=b/table(1); %类型转换

for i=1:3%根据单位个数设置循环数

    c(i)=c(1)*table(i); %计算

    b=num2str(c(i));

    set(handles.(['edit'%赋值 num2str(i)]),'string',b);

    guidata(hObject,handles); %实时更新与保存

end

3.7绘图

3.7.1绘图界面

3.7.2绘图界面代码分析

初始定义

t=0:0.01:2*pi; %在列表框的创造函数中定义t

canshu1=sin(t);

canshu2=cos(t);

canshu3=sin(t)+cos(t);

CS={canshu1,canshu2,canshu3};

handles.CS=CS;

guidata(hObject,handles)%进行更新和保存

提取x轴

selected_index=get (handles.listbox1,'value');

str=get (handles. listbox1, 'string'); %将string的所有文字保存在str中

set(handles.edit1,'string',str{selected_index})

x=handles.CS{selected_index};%把x储存在handles.x

handles.x=x;

guidata(hObject,handles) %进行更新和保存

提取y轴

selected_index=get (handles.listbox1,'value');

str=get (handles. listbox1, 'string'); %将string的所有文字保存在str中

set(handles.edit2,'string',str{selected_index})

y=handles.CS{selected_index};

handles.y=y; %把y储存在handles.y

guidata(hObject,handles) %进行更新和保存

绘图

axes(handles.axes1) %将这个图表至于当前

h=plot(handles.x,handles.y);

handles.h=h;

guidata(hObject,handles) %实时更新与保存

axis equal %使其坐标系等价

4.不足和改善

在本次用matlab的gui设计界面时,还有一些不足的地方,如单位换算界面不能实现随机一个输入框都可以换算,输入的数字只会在第一个数据框中显示然后换算到其他数据框,不是非常人性化,还有在进制转换中十进制转二进制,二进制显示有问题,而且十进制两位数转二进制会分开显示,我不知道怎么更改。以上大概就是这次设计的一些问题。除此之外,此次设计还是挺顺利的。

5.总结

在本次设计过程中,我了解matlab的gui设计界面的一些基本应用,例如语句的赋值,图片的插入,界面背景的使用。这次的matlab实习设计让我得到了很大的提升。通过matlab的gui界面可以把许多复杂的程序设计简单化,可以大大节约时间和人力。接下来我也会多多练习matlab加强自身编程能力。

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

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

相关文章

借助文档控件Aspose.Words,在 C# 中比较两个 PDF 文件

在当今的数字世界中,管理和比较文档是一项至关重要的任务,尤其是在商业和法律领域。在 C# 中处理 PDF 文档时,Aspose.Words for .NET 提供了用于比较 PDF 文档的强大解决方案。在这篇博文中,我们将探讨如何在 C# 应用程序中比较 P…

笔记64:Bahdanau 注意力

本地笔记地址:D:\work_file\(4)DeepLearning_Learning\03_个人笔记\3.循环神经网络\第10章:动手学深度学习~注意力机制 a a a a a a a a a a a

联想SR660V2服务器重置BMC后无法设置BMC管理IP

之前登录后台显示BMC账号密码不对,然后把BMC重置了,重置以后发现无法设置IP地址 联想官方的回复是: 1. 机器AC上电后,需等待7分钟左右, 再开机,让bmc完全启动。 2. 在UEFI及系统下配置bmc网络,需等待3分钟…

人工智能 - 目标检测:发展历史、技术全解与实战

目录 一、早期方法:滑动窗口和特征提取滑动窗口机制工作原理 特征提取方法HOG(Histogram of Oriented Gradients)SIFT(Scale-Invariant Feature Transform) 二、深度学习的兴起:CNN在目标检测中的应用CNN的…

基于单片机设计的激光测距仪(采用XKC-Kl200模块)

一、前言 随着科技的不断进步和应用需求的增加,测距仪成为了许多领域必备的工具之一。传统的测距仪价格昂贵、体积庞大,使用起来不够方便。本项目采用STC89C52单片机作为主控芯片,结合XKC-KL200激光测距模块和LCD1602显示器,实现…

长沙电信大楼火灾调查报告发布:系烟头引发。FIS来护航安全

近日,长沙电信大楼的火灾调查报告引起广泛关注。调查发现,火灾是由未熄灭的烟头引发,烟头点燃了室外平台的易燃物,迅速蔓延至整个建筑。这起悲剧再次提醒我们,小小的疏忽可能酿成大灾难。但如果我们能及时发现并处理这…

LeetCode刷题---打家劫舍问题

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C/C》 《LeedCode刷题》 键盘敲烂,年薪百万! 一、打家劫舍 题目链接:打家劫舍 题目描述 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定…

Git——使用Git进行程序开发

主要介绍个人开发提交记录的主要流程,包括以下内容: 索引- 提交的暂存区。查看工作的状态和内部变更。如何读取用于描述变更的已扩展统一diff格式。支持查询和交互的提交,修改提交。创建、显示和选择(切换)分支。切换…

FIORI /N/UI2/FLP 始终在IE浏览器中打开 无法在缺省浏览器中打开

在使用/N/UI2/FLP 打开fiori 启动面板的时候,总是会在IE浏览器中打开,无法在缺省浏览器打开 并且URL中包含myssocntl 无法正常打开 启动面板 这种情况可以取消激活ICF节点/sap/public/myssocntl

(项目已开源)社区求助 哪位大佬能不能帮我 将box1 audio 和 box2 slider滑块 和 box3 歌词滚动区域 进行联动

(项目已开源)社区求助 哪位大佬能不能帮我 将box1 audio 和 box2 slider滑块 和 box3 歌词滚动区域 进行联动 链接&#xff1a;https://pan.baidu.com/s/16lpEW6L5jrHfhsG7EXocLw?pwdkryy 提取码&#xff1a;kryy <!--社区求助 哪位大佬能不能帮我 将box1 audio 和 box2 s…

拒绝烂尾,Arm二期持续更新中,Arm二期Roadmap

感谢大家的支持&#xff0c;感谢大家一直以来的鼓励。更感谢大家的包容。近期又更新了很多课程&#xff0c;这次都是总线和协议相关的&#xff0c;适合软件同学基础扫盲。 硬件的同学请自行考虑&#xff0c;相信你们研究的比我这深。同时呢也在规划一些直播讨论交流课&#xff…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《基于分布鲁棒优化的广义共享储能容量配置方法》

这个标题涉及到储能系统的容量配置方法&#xff0c;具体而言&#xff0c;是一种基于分布鲁棒优化的广义共享储能容量配置方法。让我们逐步解读&#xff1a; 基于分布鲁棒优化&#xff1a; 这表明该方法采用了一种优化技术&#xff0c;即分布鲁棒优化。分布鲁棒优化通常是指在考…

Git常用命令#merge分支合并

要查看所有分支&#xff0c;包括本地和远程仓库的分支&#xff0c;可以使用以下命令&#xff1a; 1.查看分支 1.1 查看本地分支 git branch这个命令会列出本地所有的分支&#xff0c;当前所在的分支会有 * 标记。 1.2 查看远程分支 git branch -r这个命令会列出远程仓库的分…

2023_Spark_实验二十三:Kafka的安装与基本操作

Kafka的安装与基本操作 一、前提工作 二、Kafka安装 三、Kafka基本操作 一、前提工作 必须安装了zookeeper 单机可参考&#xff1a;zookeeper单机安装与配置 集群可参考&#xff1a;zookeeper的集群安装 二、Kafka安装 上传kafka_2.11-2.4.1.tgz到/tools目录下 解压安装到…

vue使用el-select el-option失效 不显示名称 还是显示原数据

<el-form-item label"生效标记" prop"enableSign" label-width"17rem"><el-select v-model"dialog.elForm.enableSign" placeholder"请选择内容"><el-option v-for"item in enableSignList":key&q…

SpringBoot+Redis获取电脑信息

获取电脑信息 测试 System.getProperties(); System: 是Java中的一个内置类&#xff0c;用于提供与系统相关的功能和信息。这个类中包含了一些静态方法和常量&#xff0c;可以让您方便地访问和操作系统级别的资源。 getProperties(): 是一个静态方法&#xff0c;它返回一个表示…

Linux:理解文件重定向

文章目录 文件内核对象fd的分配问题重定向的现象dup2 重定向的使用标准输出和标准错误 前面对于文件有了基本的认知&#xff0c;那么基于前面的认知&#xff0c;本篇总结的是文件重定向的含义极其本质 文件内核对象 首先理解一下file内核对象是什么&#xff0c;回顾一下下面这…

菜鸟学习日记(Python)——基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值&#xff0c;变量赋值以后该变量才会被创建。 在 Python 中&#xff0c;变量就是变量&#xff0c;它没有类型&#xff0c;我们所说的"类型"是变量所指的内存中对象的类型。 等号&#xff08;&#xff09;用来…

Netty Review - 探索Channel和Pipeline的内部机制

文章目录 概念Channel Pipeline实现原理分析详解 Inbound事件和Outbound事件演示Code 概念 Netty中的Channel和Pipeline是其核心概念&#xff0c;它们在构建高性能网络应用程序时起着重要作用。 Channel&#xff1a; 在Netty中&#xff0c;Channel表示一个开放的连接&#xff…

【VScode】超详细图片讲解下载安装、环境配置、编译执行、调试

这里是目录 VScode是什么&#xff1f;VScode的下载和安装环境介绍安装中文插件 配置VScodeC/C开发环境下载和配置MinGW-w64 编译器套件下载&#xff1a;配置&#xff1a; 安装C/C插件在VScode上编写代码设置C/C编译选项创建执行任务编译执行如果想写其他代码在同一个文件夹在不…