matlab---app

一 基础

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

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

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

af14dc164107410aabcf6a41e7387ab0.png

e24d6ce733204f54a777b12b47476e35.png

15d62236d0b64e11b269b1e9b1caac1a.png

1e9e8190d5b947939fba02d54a01a8d4.png

231c0eae3c6d41c792796c9a5ad1ce94.png

 

二 解决办法

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\n',string1);

%十进制
str3 = [des version totalPacketLen numTarget fallDetecteFlage checksum];
str3 = num2str(str3); 
string3 = sprintf('%s',str3);
string3 = sprintf('%s\n',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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值