matlab 画图串联_MATLAB串口通信与动态绘图

本文介绍了如何在MATLAB中进行串口通信和动态绘图。通过示例代码展示了如何新建串口对象,读取串口数据,并实现动态曲线和动态点坐标的绘制,提供了一种类似心电图的实时更新效果。对于动态点坐标,通过clf命令解决了不需连线的散点显示问题。
摘要由CSDN通过智能技术生成

MATLAB串口通信

MATLAB本身是支持Serial Port Devices,即串口设备。通过自带的一些函数可以操作串口(读取、写入等)

官方英文教程

然而在实际使用中,我的和官方给出的例子有一些不同。

下面给出一个完整的串口读取的例子:

%新建串口对象

s1=serial('COM15','BaudRate',9600);

%尝试代开串口

try

fopen(s1); %打开串口对象

catch err

fclose(instrfind); %关闭被占用的串口

error('请确认选择了正确的串口'); %输出错误提示

end

a=fscanf(s1,'%d'); %读取数据

fclose(s1); %关闭串口

动态绘图

要实现读取一个数据,然后实时更新图像。而不是已知所有点坐标再进行绘图。

动态曲线

h = animatedline; %创建空白动态曲线

axis([0 40 5 30]) %设置坐标系范围

x = linspace(0,40,800);

xlabel('时间');

ylabel('距离');

for k = 1:length(x)

y = (fscanf(arduino,'%d')/100.0);

addpoints(h,x(k),y);

drawnow

end

可以实现从串口实时读取数据并进行显示。最终效果类似心电图。

动态点坐标

这个挺头疼的。因为我不需要两点之间连线,而是类似随机的散点。

最终用clf的命令解决了问题。代码如下

n = 500;

for i=1:n

clf; %清空

a = (fscanf(s1,'%d')/100.0);

b = (fscanf(s2,'%d')/100.0);

plot(px,py,'or','MarkerSize',5,'MarkerFaceColor','r');

axis([0 40 0 40]);

drawnow;

end

还有其他动态绘图的方法,比如comet()函数、hold on等用法。可以自行百度。但我之所以不采用这些方法的原因是因为它们的坐标系是会变化的,不固定。

MATLAB初学者,若有不足,请指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值