arrays - 在 Matlab 中重新排序向量?

标签 arrays matlab

我在 Matlab 中有一个矢量 B维度 nx1包含来自 1 的整数至 n以某种顺序,例如n=6 B=(2;4;5;1;6;3) .

我有一个矢量 A维度 mx1m>1包含按升序排列的相同整数,每个整数重复任意次数,例如m=13 A=(1;1;1;2;3;3;3;4;5;5;5;5;6) .

我想得到 C维度 mx1其中 A 中的整数按照 B 中的顺序重新排序.在示例中,C=(2;4;5;5;5;5;1;1;1;6;3;3;3)

最佳答案

ismembersort 的一种方法 -

[~,idx] = ismember(A,B)
[~,sorted_idx] = sort(idx)
C = B(idx(sorted_idx))

如果您喜欢单行,那么使用 bsxfun 的另一行-

C = B(nonzeros(bsxfun(@times,bsxfun(@eq,A,B.'),1:numel(B))))

关于arrays - 在 Matlab 中重新排序向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29817300/

相关文章:

java - ArrayIndexOutOfBoundsException 的原因

matlab - 在同一个图表中绘制许多水平条形图

matlab - MATLAB中如何计算像素的变化率

matlab - 如何使用 matlab 根据索引数组创建 k 矩阵?

c - 扫雷游戏

c - 在 C 中使用 fscanf,得到奇怪的输出

R的信号包的滤波器与Matlab的滤波器功能不匹配

matlab - 如何通过 Matlab 中的帧索引读取特定视频帧?

java - 高尔顿箱;打印直方图

php - 将 mysql 数据分类到单独的 html 表中?