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
getNumUpdates(d) % try several times
% Object assignment respects the
% handle semantics. d and d2 refer
% to the same object.
d2 = d;
% Validity checks can be built into
% the object itself
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);
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 (2021). 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. Retrieved .
A nice tool and a clever idea to explore what MATLAB can do.
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!