Oop MATLAB-如何高效地使用event.eventData

Oop MATLAB-如何高效地使用event.eventData,oop,matlab,Oop,Matlab,有关我问题的背景信息和背景,请阅读 请注意,在我的dynamiclottercode的updatePlot()方法中,我有点“接触”了DynamicDataset属性,如下所示: function updatePlot(obj, propNum) X = get(obj.LH(propNum), 'XData'); Y = get(obj.LH(propNum), 'YData'); X(end+1) = obj.(dynProps{propNum}).newestDa

有关我问题的背景信息和背景,请阅读

请注意,在我的
dynamiclotter
code的
updatePlot()
方法中,我有点“接触”了
DynamicDataset
属性,如下所示:

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
updatePlot
是一个侦听器回调。我想知道,如果将数据“呈现”给回调函数,是否会更有效,而不是“接触”以获取
最新数据。但我不确定(a)如何使用
event.eventData
(文档中提供的示例我不太清楚),以及(b)这是否会产生更好或更差的性能

所以我想我的主要问题是,
updatePlot()
访问
newestData
的最佳方式是什么,如上面的方法所述:“进入并检索它”或使用
event.eventData
将数据点“发送”到函数以进行绘图


我希望这不是非常模糊。

您首先需要有一个定义事件的类(在MyClass.m中):

然后从您的
obj
中触发事件,并让侦听器收听该事件:

obj = MyClass;
l = addlistener(obj, 'MyEvent', @(evtSrc,evtData)disp(evtData.Data));
notify(obj, 'MyEvent', eventData)
无论何时调用
notify(…)
,侦听器回调中的
evtData
参数都将在其
data
属性中包含您的数据:

>> notify(obj, 'MyEvent', eventData)
    XData: [1 2 3 4 5 6 7 8 9 10]
    YData: [1 2 3 4 5 6 7 8 9 10]
X = 1:10;
Y = 1:10;
data = struct('XData', X, 'YData', Y);
eventData = MyEventData(data);
obj = MyClass;
l = addlistener(obj, 'MyEvent', @(evtSrc,evtData)disp(evtData.Data));
notify(obj, 'MyEvent', eventData)
>> notify(obj, 'MyEvent', eventData)
    XData: [1 2 3 4 5 6 7 8 9 10]
    YData: [1 2 3 4 5 6 7 8 9 10]