grouping numbers in matrix
3 ビュー (過去 30 日間)
古いコメントを表示
Hi, I have 2 matrices
A = [ 1, 2, 3, 2, 2, 3, 3, 1, 1]
B = [34, 20, 23, 31, 30, 33, 44, 22, 28]
and would like to group them according to their numbers in A. The answer should be a 3 x 3 matrix (A corresponds to column number).
Thank you! :)
0 件のコメント
採用された回答
Akira Agata
2019 年 10 月 23 日
More generalized solution would be:
C = splitapply(@(x){x'}, B, A);
If each group has the same number of elements, the following can generate 2D matrix.
B2 = cell2mat(C);
2 件のコメント
Akira Agata
2019 年 10 月 23 日
Hi Charms-san,
Thank you for your response.
Yes, splitapply is somehow "tricky" function. But, at the same time, this is quite useful and powerful function. So I would recommend accessing the following documentation page. I believe the "Example" section will be useful to uderstand how splitapply works!
Regarding the second question, I believe padding with 'NaN' or something will be needed to adjust number of elements for each group and make the 2D matrix, when they do not have the same number of elements.
その他の回答 (1 件)
Daniel M
2019 年 10 月 23 日
This is not a generalized solution, and assumes that there will always be three entries of each number (1, 2, 3) in A.
[~,sortOrder] = sort(A);
B2 = reshape(B(sortOrder),3,3)';
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Shifting and Sorting Matrices についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!