MATLAB App Designer:表格功能代码与简介

    今天分享一下如何在matlab appdesigner中创建表格并编写代码实现常用的功能,希望能帮助大家快速上手matlab appdesigner。使用appdesigner的起因是我做一个长期项目的时候,想着自己毕业了留给师弟,让他们零代码基础也能立刻接手,不过写完了发现还是有功能实现不了(悲),表格功能的实现前期参考来自https://www.52txr.cn/2021/matlab_table.html,后面参考的都是官方文档了。

    首先简单解释一下appdesigner的基本概念,appdesigner分为设计视图和代码视图,向设计视图中拖入各种组件来设计软件的外部界面,而在代码视图添加回调、函数、属性等实现软件的内置功能。

    回调:软件对使用者在界面上的操作(如鼠标点击等)返回的响应,一次操作可以有多种响应且响应总是在操作之后。

    函数:内置在软件中的功能函数,对应matlab的自定义函数。

    属性:可以理解为C语言的全局变量,定义在代码视图的开头部分,可以在各个回调中保持一致;而在回调中定义的变量则均为局部变量,在各个回调中是不同的。这意味着在不同回调中可以定义相同名称的局部变量而互不影响(不推荐)。在这里,我先定义属性t用于接下来暂时存放表格中的数据。

    好啦,知道以上这些,就可以开始编写属于自己的小软件啦!(当然本文只介绍表格的不同功能和实现:)

    1.从组件库中拖动表格到设计视图中,拖入后,代码视图中会自动生成表格相关的定义代码。点击表格,可以在右侧编辑表格的外观,当然也在代码视图中使用代码进行编辑。本文设计的表格功能是导入坐标点压力值并显示云图,所以修改ColumnName中的值为xyz坐标和压力。

1.创建表格

    2.接下来拖入需要的按钮组件并重命名,为了提升代码的可读性,可以在组件浏览器中修改组件的变量名。

2.重命名 3.添加回调

    3.右击设计视图中的按钮、表格或视图浏览器中的变量名添加不同回调来实现响应的功能。代码如下:

保存按钮回调

[importfile, importpath] = uigetfile({'*.xlsx';'*.xls';'*.csv';'*.*'},'导入数据');

if importfile~=0        

  excelfull = strcat(importpath,importfile);

  temptable= readmatrix(excelfull);%临时变量temptable存放原始数据

  app.t(:,1)=temptable(:,2);%赋值给属性t

  app.t(:,2)=temptable(:,3);

  app.t(:,3)=temptable(:,4);

  app.t(:,4)=temptable(:,1);

  app.exptable.Data=app.t;%赋值给表格

end

导出按钮回调

[exportfile,exportpath]=uiputfile({'*.xlsx';'*.xls';'*.*'},'导出数据');

if exportfile~=0

   excelfull=strcat(exportpath,exportfile);

   A1D1=["坐标x(m)","坐标y(m)","坐标z(m)","压力(pa)"];

   writematrix(A1D1,excelfull,"Range",'A1:D1');

   writematrix(app.exptable.Data,excelfull,"Range",'A2');

end

%若保存csv格式,则writematrix不适用

添加一行数据按钮回调

nr=table('Size',[1,4],'VariableTypes',{'double','double','double','double'});

app.exptable.Data=[app.exptable.Data;nr];    

app.t=app.exptable.Data;  

删除一行数据回调

    在创建该回调之前,需要创建一个cellselection回调,用于返回鼠标点击的表格所在行列数,若未点击任意一行,则删除最底下一行;为了其他回调能调用该回调返回的输出,需要创建3个属性:mouse_ind、mouse_ind2、tf,分别存放行数、列数和“选择命令”的逻辑数。

cellselection回调代码如下:

indices = event.Indices;

app.tf=isempty(indices);

if app.tf==0

   app.mouse_ind=indices(1);

   app.mouse_ind2=indices(2);

end

    在得到鼠标信息后,就能够实现删除选定行数的功能了,代码如下:

[rownum,~]=size(app.exptable.Data);

if rownum>0

   if app.mouse_ind~=0              

       app.exptable.Data(app.mouse_ind,:)=[];

       app.t=app.exptable.Data;

       app.mouse_ind=0;

   else

       app.exptable.Data(rownum,:)=[];

   end

end

编辑表格数据回调    

4.勾选表格可编辑

    为了能够编辑表格数据,需要把表格列值可编辑先勾选上,然后添加Celledit回调,代码如下:

indices = event.Indices;

newdata=event.NewData;

app.exptable.Data{indices(1),indices(2)}=newdata;

app.t=app.exptable.Data;

最后对绘图按钮添加ButtonPushed回调,加入绘制云图功能,这个小app的代码部分就完成啦。

5.绘图

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空