How to sort a Matrix

2 ビュー (過去 30 日間)
Atinesh Singh
Atinesh Singh 2017 年 3 月 27 日
回答済み: Andrei Bobrov 2017 年 3 月 27 日
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

採用された回答

Andrei Bobrov
Andrei Bobrov 2017 年 3 月 27 日
p = 4;
data = [P.Cost]';
[~,ii] = sort(data);
out = P(ii(1:p));

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeManage Products についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by