【实验】实验六 MATLAB APP的设计与实现20211125

本文仅供学习和复习使用。 题目源于岑冠军老师,答案参考自相关课件,另外借以markdown排版成此文。由于本人水平有限且时间不够充裕,故难免有错漏或不当之处,如有建议或批评还请联系penguinpi@163.com,谢谢!

实验六 MATLAB APP的设计与实现

@Copyright 华南农业大学 数学与信息学院 数学系 主讲与制作:岑冠军


一、实验目的

  • 掌握基于MATLAB的面向对象的编程;
  • 熟悉MATLAB基本类的定义;
  • 熟悉MATLAB uifigure 的编程;
  • 掌握MATLAB APP的图形化设计。

二、实验原理

  • 基本概念:MATLAB 类,属性、方法、事件,回调函数,value类、handle类;
  • uifigure编程:uifigure、uibutton、uiaxes;
  • APP设计:图形化设计工具的使用。

三、实验内容

  1. 编写一个类实现计算 a 2 + b 2 \sqrt{a^2 + b^2} a2+b2
% classdef Sol
%     properties 
%         a;
%         b;
%         result;
%     end
%     methods
%         function obj = Sol(a, b)
%             obj.a = a;
%             obj.b = b;
%             obj.result = sqrt(a^2 + b^2);
%         end
%         function show(obj)
%             fprintf("result: %f", obj.result);
%         end
%     end
% end
  1. 有如下的图形用户界面,用户点击按钮Mesh、Surf和Contour3在坐标轴对象中分别绘制列表框对象所列函数的三维网格曲面图、三维曲面图和三维等高线图:
    第二题图1
    试着运用APP设计工具开发一个APP实现上述界面和功能,要求:
    (1) 请将标题设置为“实验六 学生姓名APP开发”,学生姓名为你的姓名;
    (2) 选择列表框中的函数,通过按钮可以绘制相应函数的三种图形;
    (3) 列表框中函数参看实验三,其中Sinc函数为 sin ⁡ ( x 2 + y 2 ) x 2 + y 2 ( − 8 ≤ x , y ≤ 8 ) \frac{\sin(\sqrt{x^2 + y^2})}{\sqrt{x^2 + y^2}} (-8 \leq x, y \leq 8) x2+y2 sin(x2+y2 )(8x,y8);
    (4) 请将你自己加入或编辑的属性、方法、回调函数注释的方式写在实验报告中,其次将APP运行中的截图插入到实验报告中。
%     properties (Access = private)
%         SelFunc = ''; % 选择函数
%         X;
%         Y;
%         Z;
%     end
%     
%     methods (Access = private)
%         % 选择绘图函数
%         function app = ackley(app)
%             f = @(x, y) -20 * exp(-0.2 * sqrt(0.5*(x.^2 + y.^2))) - exp(0.5 * (cos(2*pi*x) + cos(2*pi*y))) + 22.71282;
%             x = linspace(-8, 8, 100);
%             y = linspace(-8, 8, 100);
%             [app.X, app.Y] = meshgrid(x, y);
%             app.Z = real(f(app.X, app.Y));
%         end
%         function app = rastrigin(app)
%             f = @(x, y) 20 + x.^2 + y.^2 - 10*(cos(2*pi*x) + cos(2*pi*y));
%             x = linspace(-8, 8, 100);
%             y = linspace(-8, 8, 100);
%             [app.X, app.Y] = meshgrid(x, y);
%             app.Z = real(f(app.X, app.Y));
%         end
%         function app = sinc(app)
%             f = @(x, y) sin(sqrt(x.^2 + y.^2)) ./ sqrt(x.^2 + y.^2);
%             x = linspace(-8, 8, 100);
%             y = linspace(-8, 8, 100);
%             [app.X, app.Y] = meshgrid(x, y);
%             app.Z = real(f(app.X, app.Y));
%         end
%     end

%     % Callbacks that handle component events
%     methods (Access = private)
% 
%         % Value changed function: ListBox
%         function ListBoxValueChanged(app, event)
%             value = app.ListBox.Value;
%             switch value
%                 case 'Ackley'
%                     app.SelFunc = 'Ackley';
%                     ackley(app);
%                     title(app.UIAxes, "可视化图像--Ackley");
%                 case 'Rastrigin'
%                     app.SelFunc = 'Rastrigin';
%                     rastrigin(app);
%                     title(app.UIAxes, "可视化图像--Rastrigin");
%                 case 'Sinc'
%                     app.SelFunc = 'Sinc';
%                     sinc(app);
%                     title(app.UIAxes, "可视化图像--Sinc");
%             end
%         end
% 
%         % Button pushed function: MeshButton
%         function MeshButtonPushed(app, event)
%             mesh(app.UIAxes, app.X, app.Y, app.Z);
%         end
% 
%         % Button pushed function: SurfButton
%         function SurfButtonPushed(app, event)
%             surf(app.UIAxes, app.X, app.Y, app.Z);
%         end
% 
%         % Button pushed function: Contour3Button
%         function Contour3ButtonPushed(app, event)
%             contour3(app.UIAxes, app.X, app.Y, app.Z);
%         end
%     end

第2题图2

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值