本系列文章是我在学习matlab app编程过程重点经验总结,供参考,如有错误请指正。

本系列文章会从创建app开始,逐步介绍一款数据处理软件的编程过程。

本文章使用的是matlab2025a版本。

新建项目

打开matlab,在左上角切换到APP页面,选择“设计App”。

在设计App的新建页面有三个选择,我们选择“空白App”,这样可以按照我们的需求设计App的样式,如果需求跟“两栏式app”或“三栏式app”吻合,可自行选择。

完成选择后,进入app设计界面,如下图。

上侧是菜单栏。

左侧是“组件库”,组件库是系统提供的,通过拖动即可添加到我们的设计中。

中间是设计区,分为“设计视图”和“代码试图”两个页面,这两个页面是app编程的可视化表达和代码表达,内容是一致匹配的。

右侧是“组件浏览器“区域,“组件浏览器“上侧是我们建立的组件目录,下侧是当前选择的组件的属性,常用属性都可以在这里设置。

通过刚才的新建动作,在“组件浏览器“中会自动生成一个对象:app.UIFigure,该对象是app的可视化根对象,是系统自动建立的,可以不用过多处理。该对象有几个属性需要我们注意:

WindowStyle

表达了当app打开时的状态:

normal:按设计时Position给的尺寸显示;

maximized:按最大化显示;如果Position给的尺寸不合适当前显示器,可以设置为maximized,让其全屏显示,显示效果不受Position设置影响;

minimized:按最小化显示;

fullscreen:按全屏显示。

Position

表达了app的开始位置和尺寸,默认是按像素设置,在UI Figure的属性Unit中可以设置为其他方式,这里不做介绍。

Position有四个参数:[x,y,width,height],表达了appUIfigure的左下角起始位置(x,y),图窗appUIfigure的宽度和高度。其实际的表达方式是数组[x,y,width,height]。

我们的第一个app就按照这个数组来设置[10,60,1520,860],这个尺寸的设置在1920*1080的屏幕上是在全屏的基础上有一圈小间隙。

 

Name

name是修改app的名称,即当app运行时,在左上角显示的名称。如:第一个app。

Icon

icon可以设计app的图标,即左上角显示的图标。icon支持的格式是。需要将图片所在路径添加到matlab路径或者将图片放到app文件夹(或下属文件夹)才能使用。

其他参数按照系统默认即可,后续熟悉了app编程再自行修改。

保存app,将其命名为app_01.mlapp。

点击运行按钮,得到如下效果。

代码结构

点击代码视图。可以查看到系统自动生成和我们修改设置生成的代码。

由代码可知,app建立后,系统自动生成了一个类(class):app_01,这个类是继承自matlab.apps.AppBase类。类下面包括了三种对象:

properties (Access = public)

这种对象是:公共属性。类自身的对象、function可以访问,外部对象也可以访问。

properties 内有一个系统自带的对象:appUIFigure  matlab.ui.Figure

appUIFigure是对象名称,matlab.ui.Figure是对象类型。

methods (Access = private)

这种对象是:私有函数。只有app_01的内部对象和函数和访问。

有一个函数:function createComponents(app),我们所有新建的组件都会再这个函数种,且对组件的属性设置也会再这里。

app.appUIFigure = uifigure('Visible', 'off');
app.appUIFigure.Position = [10 60 1520 860];
app.appUIFigure.Name = '第一个app';
app.appUIFigure.Icon = fullfile(pathToMLAPP, 'icon01.png');

matlab中通过“.”来修改属性,如:app.appUIFigure.Name = '第一个app';Name属性是字符属性,所有赋值要给字符或者字符串,即用单引号或者双引号括起来。Position属性是数组属性,所有要用方括号括起来。

函数中还有一行代码,代码中有两个函数,我们可以熟悉,后续会用到。分别是:fileparts和mfilename。

pathToMLAPP = fileparts(mfilename('fullpath'));

mfilename函数用于获取当前运行代码的文件名,可以使用"fullpath" 或 "class" 作为参数调用,fullpath用于获取完整带路径的文件名,class用户获取它的类。

fileparts函数用户获取文件名中的路径、短文件名、扩展名。语法如下:

[filepath,name,ext] = fileparts(filename)

其中,filepath是路径,name是文件名,ext是扩展名。 该函数的返回值可以是[filepath,name,ext]、[filepath,name]、filepath,使用时等号左边的数组元素个数决定了返回值的多少。

methods (Access = public)

这种对象是:公共函数。app_01或者外部的代码都可以访问。

本节完整的代码如下:

classdef app_01 < matlab.apps.AppBase

    % Properties that correspond to app components
    properties (Access = public)
        appUIFigure  matlab.ui.Figure
    end

    % Component initialization
    methods (Access = private)

        % Create UIFigure and components
        function createComponents(app)

            % Get the file path for locating images
            pathToMLAPP = fileparts(mfilename('fullpath'));

            % Create appUIFigure and hide until all components are created
            app.appUIFigure = uifigure('Visible', 'off');
            app.appUIFigure.Position = [10 60 1520 860];
            app.appUIFigure.Name = '第一个app';
            app.appUIFigure.Icon = fullfile(pathToMLAPP, 'icon01.png');

            % Show the figure after all components are created
            app.appUIFigure.Visible = 'on';
        end
    end

    % App creation and deletion
    methods (Access = public)

        % Construct app
        function app = app_01

            % Create UIFigure and components
            createComponents(app)

            % Register the app with App Designer
            registerApp(app, app.appUIFigure)

            if nargout == 0
                clear app
            end
        end

        % Code that executes before app deletion
        function delete(app)

            % Delete UIFigure when app is deleted
            delete(app.appUIFigure)
        end
    end
end

    Logo

    魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

    更多推荐