Hi
I have a class inheriting from the "handle" class, which means (correct me if I'm wrong) it will have reference semantics. I use an instance of the class in a simulation loop and I'd like to save a sanpshot of the object in every iteration. Is there a way to dereference the handle object and pass it by value to store it in a cell array?
Thanks for your replies in advance

 Akzeptierte Antwort

Steven Lord
Steven Lord am 13 Jul. 2021

0 Stimmen

Have your class inherit from matlab.mixin.Copyable as described on this documentation page.

Weitere Antworten (1)

Yongjian Feng
Yongjian Feng am 13 Jul. 2021

0 Stimmen

You don't need to.
classdef aclass < handle
properties
a
end
end
l={}
a = aclass();
a.a = 10;
l{end+1} = a;
a = aclass();
a.a = 20;
l{end+1} = a;
l{1}
l{2}

2 Kommentare

mahdi Babayi semiromi
mahdi Babayi semiromi am 13 Jul. 2021
Bearbeitet: mahdi Babayi semiromi am 13 Jul. 2021
Thank you very much for your reply
This is different from the application that I have in mind. my case is like the following:
classdef aClass < handle
properties
a
end
end
aClassInstance = aClass;
l = {};
for i = 1:2
aClassInstance.a = i;
% here I want to save the variable aClassInstance by value, so that I
% have it in its current state. If I just assign it to a cell array,
% like:
l{end+1} = aClassInstance;
% then l{end+1} will only hold a pointer to the variable aClassInstance
% and when I exit the loop, I'll only have access to the latest state
% of the variable
end
Can you just move the initialization line inside the for loop?
classdef aClass < handle
properties
a
end
end
l = {};
for i = 1:2
aClassInstance = aClass;
aClassInstance.a = i;
% here I want to save the variable aClassInstance by value, so that I
% have it in its current state. If I just assign it to a cell array,
% like:
l{end+1} = aClassInstance;
% then l{end+1} will only hold a pointer to the variable aClassInstance
% and when I exit the loop, I'll only have access to the latest state
% of the variable
end

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by