玖叶教程网

前端编程开发入门

matlab2022的 appdesigner设的GUI中的数据存储功能

本例程实现在matlab app,其实在matlab中也可以实现同样的存储功能,存储在excel中。但是大多数的存储都是在不同的sheet中,随着sheet的增加,回读和查看都比较麻烦。我这个程序可以把数据存储在一个sheet中,每一列存储所有数据,并且一列中可以存储不同的格式,可以实现循环存储,对于不同格式的数据不但能够避开存储sheet过多的问题,回读也较为方便。

首先定义一个自变量:num_k=1;

对于采集到的数据,我们假设为X,Y,他们可以是单个数据,也可以是数组类型。

在存储时候可以定义当前存储的日期,代码是:

Tdata =datestr(now,'yyyy-mm-dd HH:MM:SS'); %获取当前时间

Save_data= [X,Y];%把X,Y放到一个数组中存储,注意对于数组X,Y维度应该一致; 由于excel中是26进制数,因此需要由十进制转换为26进制;

在app中我们可以这样调用函数:num2abc2(num_k)的函数定义在最下方。

Num_m=app.num2abc2(num_k);

A_num = [Num_m,'1']; %控制excel中每一列的第一个单元格A1;

B_num = [Num_m,'2']; %控制excel中每一列的从第二到其余的单元格A2;

%把时间存储在第一个单元格;

writematrix(Tdata,"C:\Users\caixu\Desktop\测量曲线.xlsx", "Sheet",1, "Range", A_num);

%把X Y的值存储在每列的从第二个单元格开始

writematrix(Save_data,"C:\Users\caixu\Desktop\测量曲线.xlsx","Sheet",1, "Range",B_num);

num_k = num_k+1; %把A_num和B_num变为B和B;即存储变为第二列

得到的最终结果如图,在循环的存储中,每一列存储一次数据,第一个单元是时间,第二个是X,单个数,从第二个到第10个单元格式数组Y。

%将10进制转换为26进制字母的函数

function str_=num2abc2(app,num)

string={'A','B','C','D','E','F','G',...

'H','I','J','K','L','M','N','O',...

'P','Q','R','S','T','U','V','W','X','Y','Z'};

str_=[];

while num>0

m=mod(num,26);

if m==0

m=26;

end

str_=[str_ string{m}];

num=(num-m)/26;

end

str_=fliplr(str_);

end

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言