indexing groups of elements in a vector in a certain way
2 次查看(过去 30 天)
显示 更早的评论
Hi all,
I have two vectors A and B where they look like the following:
%vector A
A = [1 1
4 1
5 1
6 1
5 2
6 2
7 2
3 3
4 3
5 3
3 3];
%vector B
B = [12 2
34 3
23 3
56 2
34 1
54 1
14 3
76 2
45 1
76 1
65 1];
The second column of each of these vectors corresponds to the index of each row. As can be seen, vector A has 3 main "groups". For each of these groups, there are 2 groups that corrspond to them in vector B. For example, for group 1 in vector A there are two groups 2 and 3 in vector B, and so on do forth.
It can be seen that in total vector B has 6 main groups. And here where I need help!
I want to reindex the rows of vector B without changing its elements order so that it contains 6 gorups and looks like:
%vector C
C = [12 1
34 2
23 2
56 1
34 3
54 3
14 4
76 5
45 6
76 6
65 6];
In this way, group 1 in vector A, has groups 1 and 2 in the new vector C. Group 2 in vectorA has groups 3 and 4 in vectro C. Group 3 in vector A has groups 5 and 6 in vector C.
Any help would be appreicted.
Thanks.
0 个评论
采纳的回答
Voss
2024-7-23
%matrix A
A = [1 1
4 1
5 1
6 1
5 2
6 2
7 2
3 3
4 3
5 3
3 3];
%matrix B
B = [12 2
34 3
23 3
56 2
34 1
54 1
14 3
76 2
45 1
76 1
65 1];
[~,~,idx] = unique([A(:,2),B(:,2)],'rows','stable');
%matrix C
C = [B(:,1) idx];
disp(C)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Resizing and Reshaping Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!