MATLAB: Retrieving/storing the state of a handle

handleoop

Hi,
Is it possible to retrieve the old state of a modified handle object? more concretely, suppose a have a class such as
classdef myclass < handle
...
end
and I create an instance of myclass, e.g. h0=myclass(varargin) and create a copy h=h0; I understand that if I modify h0, then h will also be modified. My problem is that I would like to pass h0 through a function that modifies it randomly and I need to repeat the exercise several times and see how the results differ. In order to be able to do that, I need the original state h.
Is there anyway to achieve this?
Thanks,

Best Answer

You could make your class a value class rather than a handle class or you could make your class Copyable. By subclassing matlab.mixin.Copyable the class inherits a copy method that:
  • Copies data without calling class constructors or property set functions and therefore produces no side effects.
  • Enables subclasses to customize the copy behavior
When you need to make random changes to the object that won't affect the "main" instance of your object, pass a copy. When you want to have two instances that have normal handle semantics (changing one changes the other) use non-indexed assignment to create the second instance.