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 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Antonio Rubio
il 5 Nov 2019
Commentato: Antonio Rubio
il 5 Nov 2019
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!
0 Commenti
Risposta accettata
Richard Brown
il 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])
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Classification Trees in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!