Matlab APP Designer

devtools/2025/1/16 9:49:25/

我想给聚类的代码加一个图形化界面,需要输入一些数据和一些参数并输出聚类后的图像和一些评价指标的值。

gpt说 可以用 app designer

界面元素设计

在 设计视图 中直接拖动即可

如图1,我拖进去一个 按钮 ,图2 红色部分 出现一行 Button

图1
图2

怎么传参 是个问题

首先要把 现有的代码 封装成一个函数 方便传入参数和返回参数

然后放一个 按钮 点击按钮时 调用函数

1 输入

可以 根据需要 拖  编辑字段(数值)或 编辑字段(文本)

如果需要输入 文件  或 文件路径 可以 加一个按钮 并为按钮设置 回调函数,如下:

[fileName, path] = uigetfile('*.mat', 'Select Data File');
if fileName ~= 0app.DatabaseFile.Value = fullfile(path, fileName);
end

 app.DatabaseFile 是 接收文件或文件路径 的 编辑字段(文本)

!另:对于 编辑字段(数值)如果要求是整数可以包一个 round()四舍五入,增强鲁棒性,没有要求就不用加了,eg:

% 获取用户输入的参数
databaseFile = app.DatabaseFile.Value;
m = round(app.ResamplePoints.Value);
% .Value就是对应组件的值
2 输出

对于聚类结果,输出有两种:

1)聚类后的可视化图像

2)聚类结果的评价指标

想把代码里的结果传回GUI 可以在聚类函数的参数的最后 加一个 app,eg:

trackAnalysis(databaseFile, m, a, imgFolder, centerSize, numComponent, epsilon, minPts, app);

 

比如想返回评价指标,可以拖一个 编辑字段(数值),在聚类函数中加一行

app.DBI.Value = dbi_eval.CriterionValues;
% 把dbi_eval.CriterionValues赋给app.DBI.Value

这样,GUI中的DBI组件就是显示对应的值

对于聚类后的图像  说是图像,其实就是在坐标区域做的图

比如我想放一个2D聚类结果,可以拖一个 坐标区 命名为 fig2D

然后在聚类代码中

% 用
hold(app.fig2D, 'on'); % 在同一个图中叠加绘制
% 代替
figure;
hold on; % Hold the plot to overlay all clusters% 加app.fig2D
plot3(app.fig2D, trajectory(:, 1), trajectory(:, 2), trajectory(:, 3), 'Color', colors(i, :));% 设置坐标区属性
title(app.fig2D, '2D');
xlabel(app.fig2D, 'X/m');
ylabel(app.fig2D, 'Y/m');
zlabel(app.fig2D, 'Z/m');
hold(app.fig2D, 'off'); % 释放当前图形对象
grid(app.fig2D, 'off');

最后的最后

在代码结尾处 end 前  加

% 返回图像和指标值
return

运行,输入参数,就成功喽

不成功也别灰心,控制变量看看是哪有问题

加油


http://www.ppmy.cn/devtools/150300.html

相关文章

贪心算法汇总

1.贪心算法 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 如何能看出局部最优是否能推出整体最优 靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。 如何验证可不可以…

CentOS下安装Docker

Docker 必须要在Linux环境下才能运行,windows下运行也是安装虚拟机后才能下载安装运行,菜鸟教程 下载安装 linux 依次执行下边步骤 更新 yum yum update 卸载旧的Docker yum remove docker docker-client docker-client-latest docker-common doc…

(STM32笔记)十二、DMA的基础知识与用法 第三部分

我用的是正点的STM32F103来进行学习,板子和教程是野火的指南者。 之后的这个系列笔记开头未标明的话,用的也是这个板子和教程。 DMA的基础知识与用法 三、DMA程序验证1、DMA 存储器到存储器模式实验(1)DMA结构体解释(2…

QT c++ 样式 设置 按钮(QPushButton)的渐变色美化

上一篇文章中描述了标签的渐变色美化,本文描述按钮的渐变色美化。 1.头文件 #ifndef WIDGET_H #define WIDGET_H #include <QWidget> //#include "CustomButton.h"#include <QVBoxLayout> #include <QLinearGradient> #include <QPushButton&…

Maven在不同操作系统上如何安装?

大家好&#xff0c;我是袁庭新。Maven是一个重要的工具&#xff0c;还有很多初学者竟然不知道如何安装Maven&#xff1f;这篇文章将系统介绍如何在Windows、macOS、Linux操作系统上安装Maven。 Maven是一个基于Java的项目管理工具。因此&#xff0c;最基本的要求是在计算机上安…

uniapp使用sm4加密

安装&#xff1a;npm install sm-crypto --save 1、在utils下新建crypto.js文件 // sm4 加密 export function encryption(params) {const SM4 require("sm-crypto").sm4const key 0123456789abcdeffedcba9876543212; // 提供的密钥const iv fedcba9876543210012…

Android studio gradle与gradle插件

最终换gradle版本&#xff0c;糊成一坨。 记录一下 Android studio里有两个容易搞混&#xff0c;记载一下。 build.gradle文件中的为插件版本&#xff1a; classpath "com.android.tools.build:gradle:3.5.0" gradle.properties里的才是gradle版本。 distributio…

[云原生之旅] K8s-Portforward的另类用法, 立省两个端口

前言 此方法适用于Pod不需要大量连接的情况: 有多个pod在执行任务, 偶尔需要连接其中一个pod查看进度/日志;对pod执行一个脚本/命令; 不适用于大量连接建立的情况: pod启的数据库服务;pod启的Api服务;pod启的前端服务;pod启的Oss服务; Portforward简介 Portforward就是端…