classdef AgentAlgorithm < handle properties (GetAccess = 'public', SetAccess = 'private') Detections = [] State = [] Tracks = [] end properties (GetAccess = 'public', SetAccess = 'private') %PROTECTED
Batch; %Used to store previous states and properties
%Batch(1) = T-1 state, Batch(2) = T-2 state, so on so forth
end properties (Hidden, Constant) MaxBatchLength = 5; end methods %Constructor of Agent
function Agent = AgentAlgorithm(State) Agent.State = State; NewBatch = Agent.CreateBatch([], [], []); Agent.Batch = NewBatch; end %New State & Detections initilizer for Agent
function Agent = AgentUpdate(Agent, NewState, NewDetections) %Create last state Batch
NewBatch = Agent.CreateBatch(Agent.Detections, Agent.Tracks, Agent.State); %If Batch is empty (Not initilized yet)
if isempty(Agent.Batch(1).State) Obj.Batch = NewBatch; else Obj.Batch = [NewBatch Agent.Batch]; end %Update with new parameters
Obj.State = NewState; Obj.Detections = NewDetections; Agent = Obj; end end methods (Static, Access = 'private') %Creates a new batch with given parameters
function NewBatch = CreateBatch(Detections, Tracks, State) NewBatch = struct('Detections', Detections,... 'Tracks', Tracks, 'State', State); end end end
Question: When I call this object as follows:
AAA = AgentAlgorithm(1) methods(AAA) Methods for class AgentAlgorithm: AgentAlgorithm delete findprop isvalid ne AgentUpdate eq ge le notify addlistener findobj gt lt AAA = AAA.AgentUpdate(2,3)methods(AAA) Methods for class struct: amd ctranspose fieldnames ichol linsolve permute struct2cell cholinc display fields ilu luinc reshape transpose
My problem is how can I use AgentUpdate(x,y) function such that at the end of I use this function, I still have the updated version of AAA object with all methods (AgentAlgorithm, AgentUpdate) after constructor called instead of a new AAA object w/o any user defined methods left. I used handle, did not work as I expected as you can see.
Best Answer