matlab画动态线条代码,MATLAB - 动态更新线的最佳方法是处理'XData和YData?

我正在收集数据并实时绘制这些数据。数据由动作捕捉系统生成。我有一个DynamicDataset类,它只是一个包含2列矩阵的包装(尽管它比这更细致),并且增加了新数据的事件通知器;另一个类DynamicPlotter,用于侦听添加数据的事件并动态更新绘图。适当的代码片段:

classdef DynamicDataset < handle

properties

newestData = [];

data = []

end

events

DataAdded

end

methods

function append(obj, val)

obj.data(end+1,:) = val;

obj.newestData = val;

notify(obj, 'DataAdded');

end

end

end

classdef DynamicPlotter < dynamicprops

properties

FH %# figure handle

AH %# axes handle

LH %# array of line handles - may have multiple lines on the plot

dynProps = {} %# cell array of dynamic property names -

%# use to access individual datasets

end

methods

function obj = DynamicPlotter(props) %# props is a cell array of dynamic

%# properties to store information

for i = 1:length(props)

addprop(obj, props{i});

obj.(props{i}) = DynamicDataset;

obj.dynProps = [obj.dynProps props{i}];

addlistener(obj.(props{i}), 'DataAdded', @obj.updatePlot(i));

end

obj.createBlankPlot();

end

function createBlankPlot(obj)

obj.FH = figure;

obj.AH = axes;

hold all;

for i = 1:length(obj.dynProps)

obj.LH(i) = plot(nan); %# only used to produce a line handle

set(obj.LH(i), 'XData', [], 'YData', []);

end

end

function updatePlot(obj, propNum)

X = get(obj.LH(propNum), 'XData');

Y = get(obj.LH(propNum), 'YData');

X(end+1) = obj.(dynProps{propNum}).newestData(1);

Y(end+1) = obj.(dynProps{propNum}).newestData(2);

set(obj.LH(propNum), 'XData', X, 'YData', Y);

end

end

end基于MATLAB代码配置文件,updatePlot()中的set命令相当昂贵。我想知道是否有更好的方式来绘制个人点,因为他们来了?理想情况下,我会将单点推入XData和YData,并只画出该点,但我不知道这是否可行。

请注意,可能有多个线条系列对象(即同一图上有多个图形); plot()将轴手柄作为参数,所以它不会考虑先前绘制的线手柄的属性(或者是否有办法让它这样做?);我以为只是在做plot(x,y);hold all;,但每次都会给我不同的线条句柄,每个句柄都对应一个点。

可能是因为无法更快地绘制入球点,但我想我会问。

编辑:更新OP与我正在使用的实际代码,而不是使用一个通用的例子,误解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值