将最佳结果从主矩阵保存到另一个矩阵

时间:2019-06-08 11:41:18

标签: matlab

试图从粒子。最佳保存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]];

每个粒子的位置是一个向量

1 个答案:

答案 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).';