%{
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Copyright (C) [2023] [HPC2H2]
%}
function Calculator
%% 全局变量
global GUI
% 计算器待运算的字符串
global strPendingEvaluation
% 上一次运算的结果
global previousCalculationResult
% 模式转换三状态
% displayPrecision 输出结果的时候用
% complexFormat 在输出值为复数的时候用
% angularUnit 极直互换的时候用
global displayPrecision complexFormat angularUnit
% 控制工程存储的用户输入
global upperG lowerG upperH lowerH parameterPID
% 画图类型选择
global plotLineOrFunctionChosed
%画折线图 数据与x的个数
global xDataLine yDataLine xCountLine
% 画函数图 表达式与坐标轴范围
global funcGraphExpression xLimFunc yLimFunc
% 积分
global intUpperLimit intLowerLimit intKindChosed
% 求导
global derivativedExpression
% 定位多状态过程运行节点
% 模式转换进行到哪步了 max:(3)
global modeChoosingState
% 控制工程进行到哪一步了 max:(7)
global controlSystemsimulatingState
% 画图到哪一步了 max:(4/3)
global plottingState
% 求根到哪一步了 max:(2)
global findRootState
% 积分和求导进行到哪一步了 max:(4/3,4)
global intState diffState
% 极坐标和直角坐标的互换进行到哪一步了 max:(2)
global polState recState
% 初始化全局变量
strPendingEvaluation = '0'; previousCalculationResult = '0';
modeChoosingState = 0;
displayPrecision = 1; complexFormat = 1; angularUnit = 1;
controlSystemsimulatingState = 0;
upperG = 1;lowerG = [1 10];upperH = 1;lowerH = 1;
parameterPID = [1 0 0];
plottingState = 0;
plotLineOrFunctionChosed = 2;% 画折线图
xDataLine = []; yDataLine = []; xCountLine = 0;
xLimFunc = []; yLimFunc = [];
findRootState = 0;
intState = 0;
intUpperLimit = inf; intLowerLimit = -inf;
intKindChosed = 1;% 定积分
diffState = 0;
derivativedExpression = '';
polState = 0; recState = 0;
%% 计算器figure界面参数
fhHeight = 1100;
fhWidth = 600;
fhLeft = 1200;
fhBottom = 90;
GUI.fh = figure('units','pixels',...
'position',[fhLeft fhBottom fhWidth fhHeight],...
'menubar','none',...
'name','Calculator','NumberTitle','off');
% 计算器布局: 按钮9行5列,显示屏占3行5列的距离
% 大多数(最小)按钮大小 宽*高 = 108*88
% 各相对距离
btnWidth = 0.18; % 按钮宽度
btnHeight = 0.08; % 按钮高度
btnHorDis = (1 - 5*btnWidth)/6; % 两个按钮之间的水平距离
btnVerDis = (1 - 12*btnHeight)/11; % 两个按钮之间的竖直距离
btnInitLeft = btnHorDis;% 按钮离左边框的基准距离
btnInitBottom = btnVerDis;% 按钮离底边框的基准距离
%% 按钮布局
% Position 按钮位置 [left bottom width height]
% 数字按键 digit组
GUI.button0 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom btnWidth btnHeight], ...
'Style','pushbutton',...
'String','0', ...
'FontUnits','normalized', ...% 字体大小随窗口变化
'FontSize',0.5,...
'callback',{@processDigit,'0'},...
'UserData', 'digit');
GUI.button1 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom ...
+ (btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','1', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'1'},...
'UserData', 'digit');
GUI.button2 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
+ (btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','2', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'2'},...
'UserData', 'digit');
GUI.button3 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + 2*(btnWidth + btnHorDis) btnInitBottom ...
+ (btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','3', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'3'},...
'UserData', 'digit');
GUI.button4 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom ...
+ 2*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','4', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'4'},...
'UserData', 'digit');
GUI.button5 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
+ 2*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','5', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'5'},...
'UserData', 'digit');
GUI.button6 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + 2*(btnWidth + btnHorDis) btnInitBottom ...
+ 2*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','6', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'6'},...
'UserData', 'digit');
GUI.button7 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft btnInitBottom ...
+ 3*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','7', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'7'},...
'UserData', 'digit');
GUI.button8 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
+ 3*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','8', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'8'},...
'UserData', 'digit');
GUI.button9 = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + 2*(btnWidth + btnHorDis) btnInitBottom ...
+ 3*(btnHeight + btnVerDis) btnWidth btnHeight], ...
'Style','pushbutton',...
'String','9', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@processDigit,'9'},...
'UserData', 'digit');
% 小数点、倒数运算、等于号、加减乘除按键
% Equal 在求导与积分、画图、模式转换、求根、控制工程复用为"下一步"
% 除了选择模式情况之外都能用,属于 basic1 组
% 除了选择模式和输入数据的情况之外都能用,属于 basic2 组
% Equal(下一步)在任何情况下都能用,属于 essential 组
GUI.buttonDot = uicontrol('Parent',GUI.fh, ...
'Units','normalized',...
'Position',[btnInitLeft + (btnWidth + btnHorDis) btnInitBottom ...
btnWidth btnHeight], ...
'Style','pushbutton',...
'String','.', ...
'FontUnits','normalized', ...
'FontSize',0.5,...
'callback',{@executeBasicOperation,'.'},...
'UserData', 'basic1');
GUI.buttonReciprocal = uicontrol('Parent',GUI.fh, ...
没有合适的资源?快使用搜索试试~ 我知道了~
基于matlab的画图课设(免费提供全部源码)
共3个文件
md:1个
m:1个
license:1个
需积分: 5 0 下载量 53 浏览量
2024-06-23
01:56:48
上传
评论
收藏 24KB ZIP 举报
温馨提示
基于MATLAB的画图课设是一个教学项目,旨在帮助学生学习和掌握MATLAB的绘图功能。MATLAB以其强大的数学计算和数据可视化能力,被广泛应用于工程和科学领域。该项目免费提供全部源码,便于学生下载、学习和实践。 项目介绍 基于MATLAB的画图课设项目,涵盖了从基本绘图到高级图形处理的多个方面,帮助学生全面理解MATLAB的绘图工具和技术。通过实际操作,学生可以学会如何在MATLAB中创建、修改和优化各种图形和图表。 功能特点 基础绘图:包括二维图形(如折线图、柱状图、散点图)和三维图形(如表面图、曲面图)。 数据处理:通过数据预处理和分析,实现数据的可视化展示,如数据拟合、插值和滤波。 高级图形:涵盖动画制作、多图层绘图、图像处理与分析等高级功能。 用户交互:实现图形界面的交互功能,如鼠标点击、缩放和拖动,增强用户体验。 自定义样式:支持自定义图形样式、颜色、标注和标签,创建专业的图表。
资源推荐
资源详情
资源评论
收起资源包目录
基于matlab的画图课设(免费提供全部源码).zip (3个子文件)
readme1.md 6B
MathBuddyGUI-main
Calculator_AdvancedFunctionality.m 75KB
LICENSE 34KB
共 3 条
- 1
资源评论
阿吉的呓语
- 粉丝: 2592
- 资源: 479
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Vue和HTML的JsPang快餐管理Demo设计源码学习指南
- 基于Vue和卖座电影网的仿站电影票网站设计源码
- 基于Objective-C的WeChatTweak-macOS微信防撤回设计源码
- 基于树莓派的Python语音识别机器人设计源码
- 2024 北森图形推理题(带解析136页).pdf
- 基于微信小程序的浴室预约功能设计源码
- 基于uniapp的短视频电商小程序/APP/服务端全栈解决方案设计源码
- 基于Vue框架的Scriptis数据分析Web工具设计源码
- 基于Vue和JavaScript的HTML花店网站设计源码
- 基于Java、Vue的仿饿了么外卖平台手机端+后台管理+API服务设计源码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功