For a class object with a property that is an array of class objects, how to find the element in that array with highest property value

4 Ansichten (letzte 30 Tage)
I have a class object, where one of the properties of the object is an array of objects of a different class. So ClassA has a property called 'population' which is an array of ClassB objects. ClassB has a property called 'fitness'. I want to find the element in the 'population' that has the highest fitness.
classdef ClassA < handle
properties
population ClassB
end
methods
function obj = ClassA(target, popSize)
n = 1;
while n <= popSize
obj.population(n) = ClassB(target);
n = n + 1;
end
end
end
classdef ClassB < handle
properties
genes
fitness
end
end
The ClassA constructor works. I'm able to fill the array with ClassB objects, each of them having a unique value for ClassB.fitness. I've tried the max() function, as seen below:
target = 'Hello!';
popSize = 100;
obj = Population(target,popSize);
[M, I] = max(obj.population.fitness)
But, to no avail. Any suggestions on how to find the max fitness without using a loop?
Thank you!

Akzeptierte Antwort

Richard Brown
Richard Brown am 5 Nov. 2019
Your
obj.population.fitness
line returns comma separated values, not an array. So just enclose it in brackets:
[M, I] = max([obj.population.fitness])

Weitere Antworten (0)

Community Treasure Hunt

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

Start Hunting!

Translated by