gpt4 book ai didi

matlab - "Desort"一个矩阵。在 Matlab 中撤消排序

转载 作者:太空宇宙 更新时间:2023-11-03 19:29:37 25 4
gpt4 key购买 nike

这个问题基本上是that question的延伸.

我在 Matlab 中有一个矩阵 A 并且想沿一维对该矩阵进行排序:

A = rand(3,3,5);
[B idx] = 排序(A,3);

现在 idx 是一个包含“已排序”索引的矩阵。如何仅使用 Bidx 返回矩阵 A

The answer不幸的是,原始问题不适用于矩阵。

最佳答案

您需要对索引 idx 进行排序以取回原始索引。其余工作将涉及获取与所有这些 dim-3 索引相对应的格式化行和列索引。实现看起来像这样 -

[~,dim3idx] = sort(idx,3);

[m,n,r] = size(B);
[rowidx,colidx,~] = ndgrid(1:m,1:n,1:r);

Aout = B(sub2ind(size(B),rowidx,colidx,dim3idx))

请注意,为了提高性能,可以使用 sub2ind 或者 bsxfun 生成线性索引。直接来自大小参数,因此也避免了 ndgrid,就像这样 -

Aout = B(bsxfun(@plus,bsxfun(@plus,(1:m)',m*(0:n-1)),m*n*(dim3idx-1)))

关于matlab - "Desort"一个矩阵。在 Matlab 中撤消排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36999155/

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