试图从粒子。最佳保存10个最佳结果(较小的结果更好)到matlab中另一个名为BestPositionMatrix的矩阵中。 有没有更好或更短的方法来编写相同的代码?
layoutAttributesForElements(in: rect)
获得5个最佳结果的BestPositionMatrix是 BestPositonsMatrix =
[~, n]=sort([particle.Cost]);
BCostIndexes= n(1:10);
BestPositonsMatrix=[[particle(BCostIndexes(1)).Position];[particle(BCostIndexes(2)).Position]...
;[particle(BCostIndexes(3)).Position];[particle(BCostIndexes(4)).Position];[particle(BCostIndexes(5)).Position];
[particle(BCostIndexes(6)).Position];[particle(BCostIndexes(7)).Position];[particle(BCostIndexes(8)).Position]...
;[particle(BCostIndexes(9)).Position];[particle(BCostIndexes(10)).Position];[particle(BCostIndexes(11)).Position]];
每个粒子的位置是一个向量
答案 0 :(得分:0)
是的,当Position
是n×1向量时,可以使用:
[~,I] = sort([particle.Cost]);
BestPositonsMatrix = [particle(I(1:m)).Position].'; % transpose to make vector
使用m
要保留的最佳结果数。
当Position
是1×n向量时,您将不得不进行整形以获得m×n矩阵:
BestPositonsMatrix = reshape([particle(I(1:m)).Position], n, m).';