How to sort a Matrix
1 view (last 30 days)
Show older comments
Atinesh Singh
on 27 Mar 2017
Answered: Andrei Bobrov
on 27 Mar 2017
In below code we have a population 'P' of size 'NP' which has two fields 'Position' and 'Cost'. I need to sort the entire population 'P' with respect to field 'Cost' and select top p elements (say p = 4).
clc; clear all;
varMin = -5;
varMax = 5;
D = 3; % Dimension
VarSize = [1 D]; % Decision Variables Matrix Size
NP = 10; % Population size
empty_individual.Position = []; % Field 1
empty_individual.Cost = []; % Field 2
P = repmat(empty_individual, NP, 1); % Population
CostFunction = @(x) sphere(x);
%%Generating random population
for i = 1:NP
P(i).Position = unifrnd(varMin, varMax, VarSize);
P(i).Cost = CostFunction(P(i).Position);
end
% add Code here
sphere.m
function ret = sphere(x)
ret = sum(x.^2);
end
0 Comments
Accepted Answer
Andrei Bobrov
on 27 Mar 2017
p = 4;
data = [P.Cost]';
[~,ii] = sort(data);
out = P(ii(1:p));
0 Comments
More Answers (0)
See Also
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!