matlab—app

作者 : admin 本文共1748个字,预计阅读时间需要5分钟 发布时间: 2024-06-9 共1人阅读

一 基础

标签和信号灯没有回调函数

clc,clear,close all   %清理命令区、工作区,关闭显示图形
warning off           %消除警告
feature jit off       %加速代码运行
ysw{i}=i              %循环赋值
celldisp(ysw)         %显示元胞数组

ysw.y1{1}=[1,2]       
disp(ysw)             %显示结构体

matlab—app插图

matlab—app插图(1)

matlab—app插图(2)

matlab—app插图(3)

matlab—app插图(4)

 

二 解决办法

1 实时显示数据时用plot画图,添加drawnow后不能立即停止,不添加则停止。数据画图卡顿解决如下:

app.avgHeight.YLim = [0 2.5];
app.Heigh.YLim = [0 2.5];
app.dHeight.YLim = [-1 1];
axis(app.image,'off');    
app.i_plot=plot(app.Heigh,NaN);    %创建一个plot
app.m_plot=plot(app.avgHeight,NaN); 
app.d_plot=plot(app.dHeight,NaN); 
line(app.dHeight,1:100, repmat(app.fallThresh,[1,100]),'linestyle','-','color','r');

% 瞬时高度
%         plot(app.Heigh,app.xAxies ,app.instant);  
        set(app.i_plot,'XData',app.xAxies,'YData',app.instant);
   % 平均高度
%         plot(app.avgHeight,app.xAxies ,app.mH);
         set(app.m_plot,'XData',app.xAxies,'YData',app.mH);
   % detal 高度
%         plot(app.dHeight,app.xAxies ,app.dH);  
        set(app.d_plot,'XData',app.xAxies,'YData',app.dH);

2 matlab的mod存在0,若作为索引值使用,则会出现错误,解决方法如下:

index = mod(i, 100) + 1;
value(index )=i;
%结束之后翻转数组
circshift(value,-1)

%mod后减1的情况




%mod后减50的情况

3 数组转成十六进制显示(与串口显示一致),十进制显示

% 十六进制
des = fliplr(des);
%adata = [des  dat1(9)  dat1(10)  dat1(11)  dat1(12) dat1(13)  dat1(14) dat1(15) dat1(16)];
adata = [des  version  totalPacketLen  numTarget  fallDetecteFlage  checksum];
str1 = '';
for m=1:length(adata)
    str1 = [str1,dec2hex(adata(m),2),' ',];   % 2是2位显示
end
string1 = sprintf('%s', str1);    % 将数据格式化为字符串或字符向量
string1 = sprintf('%s
',string1);

%十进制
str3 = [des version totalPacketLen numTarget fallDetecteFlage checksum];
str3 = num2str(str3); 
string3 = sprintf('%s',str3);
string3 = sprintf('%s
',string3);  %换行

% 在文本框滚动显示
app.cellArrayText = horzcat(app.cellArrayText,string1);
app.TextArea.Value = app.cellArrayText;
scroll(app.TextArea,"bottom");

%清空数据
app.cellArrayText = [];
app.TextArea.Value = ' ';

4 串口有字节触发回调函数,每次读取的字节数量不同,解析出一个完整的tlv的帧数不是从1开始,这时使用帧数作为后续计算参数,会出现错误结果。python中通过读取一定字节数进行解析,数据不够解析时就读入需要的字节数,从而保证每帧数据都用起来,断电之后的帧数从1开始,使用帧数作为后续计算参数也不会出错。下面1为matlab字节触发的程序,2为python读取字节的程序。

1

2

 

 

本站无任何商业行为
个人在线分享 » matlab—app
E-->