gpt4 book ai didi

matlab - 根据其特定列的排序索引更改矩阵的多列

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:04 24 4
gpt4 key购买 nike

假设我有一个 2 x 9 矩阵。我想根据 a(2,3)a(2,6) 的降序替换此矩阵内的 2 x 3 矩阵a(2,9) 元素。例如:

a =

0.4 0.4 0.5 0.6 0.2 0.2 0.6 0.2 0.6
0.5 0.8 0.9 0.9 0.6 0.6 0.1 0.2 0.8

[b i] = sort(a(2,3:3:end),2,'descend')

b =

0.9 0.8 0.6


i =

1 3 2

所以,我想要以下矩阵:

a = 

0.4 0.4 0.5 0.6 0.2 0.6 0.6 0.2 0.6

0.5 0.8 0.9 0.1 0.2 0.8 0.9 0.6 0.6

最佳答案

首先尝试转换为单元格矩阵,然后使用您的 i 重新排列单元格

[b i] = sort(a(2,3:3:end),2,'descend')

A = mat2cell(a, 2, 3*ones(1,3));
cell2mat(A(i))

如果出于某种原因你不想将整个 a 转换成一个单元格矩阵,你可以通过扩展你的索引向量 i 来索引所有列。在您的情况下,您需要:

I = [1,2,3,7,8,9,4,5,6]

你可以使用循环生成或者使用 bsxfun 来获取

[1  7  4
2 8 5
3 9 6]

然后使用reshape“扁平化”:

I = reshape(bsxfun(@plus, 3*s-2, (0:2)'), 1, [])

然后终于

a(:,I)

关于matlab - 根据其特定列的排序索引更改矩阵的多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27780116/

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