gpt4 book ai didi

arrays - 在 MATLAB 中为数组提供与另一个数组相同的排序

转载 作者:行者123 更新时间:2023-12-02 06:55:10 25 4
gpt4 key购买 nike

我有两个向量,ab,长度相同,每个向量都有一些随机顺序。我希望 a 具有相同的顺序,并让 b 根据 a 排序。

例如:

a = [5 4 1 2]
b = [7 8 9 6]

现在我希望b的最高值位于a最高值的位置,以及b的第二最高值> 处于a第二高值的位置,等等;即:

b = [9 8 6 7]

我已经尝试过

[~, indices] = sort(a)
b(indices)

但这会产生

ans = [9 6 8 7]

这显然是不对的。

有什么建议吗?

最佳答案

你几乎是对的。您需要对两个结果进行排序,并使用indicessorted 向量b 建立索引。您还需要使用 'descend' 标志首先将值从最高到最低排序。

所以这样做:

a = [5 4 1 2];
b = [7 8 9 6];

[~,indices] = sort(a,'descend');
bsort = sort(b,'descend');
bsort(indices)
在这种情况下,

indices 将为您提供 a 中每个值以降序排列的形式出现的位置。如果您想要对齐 b 的值,使它们符合与 a 相同的顺序,则需要按降序对 b 进行排序也进行排序以使值对齐,然后使用 indices 索引到 b 的排序版本以完成任务。

我们得到:

ans =

9 8 6 7

关于arrays - 在 MATLAB 中为数组提供与另一个数组相同的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28904816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com