DynamicPlot: An example of handle semantics with MATLAB classes

版本 1.0.0.1 (5.5 KB) 作者: Gautam Vallabha
A MATLAB class that implements an automatically-updated display with pause and resume.
9.5K 次下载
更新时间 2016/9/1

查看许可证

obj = dynamicplot(genFcn, T)
creates a figure that is automatically updated (by calling a generator function genFcn) every T seconds. obj is a handle to the created object.

E.g.: d = dynamicplot(@() randn(1,100), 0.5);
-------------------------------------

The DYNAMICPLOT class demonstrates how to get reference (aka. handle) semantics using MATLAB classes. Typically when one modifies a MATLAB object, it needs be returned to the caller:
obj = set(obj, 'myParameter', 10.0);
But with handle semantics, you can simply do this:
set(obj, 'myParameter', 10.0);

Handle semantics is especially useful with objects that need to be updated autonomously (e.g., acquiring data from a data aquisition device or an instrument).

The handle semantics were accomplished as follows.
(1) the constructor defines the instance variables and
(2) returns a set of function handles to access these instance variables.
(3) Other methods use only the function handles to access and modify the data.

Detailed example of handle semantics:

d = dynamicplot(@() randn(1,100), 0.5);
getdata(d) % try this several times
setUpdatePeriod(d, 0.2)
getNumUpdates(d) % try several times
setLineStyle(d,'color','r');

% Object assignment respects the
% handle semantics. d and d2 refer
% to the same object.
d2 = d;
pauseDisplay(d);
resumeDisplay(d2);

% Validity checks can be built into
% the object itself
delete(d);
getdata(d) % will generate an error
getdata(d2) % generates error also

% It is possible to have multiple
% objects without any clashes

d1 = dynamicplot(@() randn(1,100), 0.1);
d2 = dynamicplot(@() rand(1,100), 0.1);
pauseDisplay(d1);
getNumUpdates(d1)
getNumUpdates(d2)
resumeDisplay(d1);
delete(d1);

--------------------------------------

NOTE: The primary purpose of the DYNAMICPLOT class is to demonstrate how to get handle semantics with MATLAB classes. Feel free to improve or extend the functionality.

引用格式

Gautam Vallabha (2024). DynamicPlot: An example of handle semantics with MATLAB classes (https://www.mathworks.com/matlabcentral/fileexchange/17240-dynamicplot-an-example-of-handle-semantics-with-matlab-classes), MATLAB Central File Exchange. 检索来源 .

MATLAB 版本兼容性
创建方式 R2007b
兼容任何版本
平台兼容性
Windows macOS Linux
类别
Help CenterMATLAB Answers 中查找有关 Graphics Object Programming 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!
版本 已发布 发行说明
1.0.0.1

Updated license

1.0.0.0