calling method (and sum'ing answer) on every class instance in a matrix
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi, I asked a very similar question to this this morning for getting the sum of class properties in a matrix (cheers Daniel for the answer) but now I need to get the sum of method return values.
If I make a simple class;
MATLAB code
classdef ExampleClass < handle
methods
function obj = GetTotal(this)
%In real life this is a calculation that returns a value.
obj = 5;
end
end
end
And I make a collection of them;
MATLAB code
myCollection=[ExampleClass1; ExampleClass2; ExampleClass3; ExampleClass4];
Is there an easy way to get the sum of the GetTotal methods please? ie,
MATLAB code
sum([myCollection.GetTotal])
...would give 20?
Is it possible without making the method a dependent property?
Thanks for any help,
Tom.
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (1)
Daniel Shub
am 30 Nov. 2011
Welcome to the joys of MATLAB OOP. While TMW will tell you that the array nature of the OOP system is a real plus, I find it a real pain to work with. Your options are to either limit your class to scalars (i.e., not allowing myCollection) or to write your own subsref. Something like:
function varargout = subsref(obj, S)
for ii = 1:numel(obj)
varargout{ii} = builtin('subsref', obj(ii), S);
end
end
is a reasonable starting point, but it quickly gets more complicated.
0 Kommentare
Siehe auch
Kategorien
Mehr zu Whos finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!