在MatLab中基于索引对数据进行合并和排序

j91ykkif  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(239)

我有两个这样的数据集
dataset1(31x1双):

0
32
45
8
...
91

dataset2(40x1双):

5
12
27
10
...
15

我还有dataset1_index(31x1 DOUBLE),它从更大的数据集中索引datset1的值

2
5
6
9
...
58

类似地,我有dataset2_index(40x1 Double),它从相同的较大数据集中索引datset2的值

3
7
8
13
...
62

我想将dataset1dataset2组合成dataset3(71x1双精度),但数据集3中的值的顺序应该遵循dataset1_indexdataset2_index的顺序(从小到大)。有谁能帮忙吗?

vuktfyat

vuktfyat1#

您可以创建一个包含索引和值的71x2矩阵,然后在索引列上创建sortrows(),并获取排序的值列
B = sortrows(A,column)根据向量column中指定的列对A进行排序。例如,sortrows(A,4)根据第四列中的元素按升序对A的行进行排序

dataset1 = [0
32
45
8];

dataset2 = [5
12
27
10];

dataset1_index = [2
5
6
9];

dataset2_index = [3
7
8
13];

tmp = sortrows([dataset1_index dataset1; dataset2_index dataset2], 1);

%    2    0
%    3    5
%    5   32
%    6   45
%    7   12
%    8   27
%    9    8
%   13   10

dataset3 = tmp(:, 2);
dataset3_index = tmp(:, 1);

相关问题