assign the same vector to be the same cell
显示 更早的评论
Let's say, I have the matrix:
A=[x,y]=[1 2;1.1 2;1.2 2;1 3;1.1 3;1.2 3;1 4;1.1 4;1.2 4];

If i wanna group all vector having the same value of y coordinate. How can I do that?
Example, the result like that:
Cell1=[1 2
1.1 2
1.2 2]
Cell2=[1 3
1.1 3
1.2 3]
Cell3=[1 4
1.1 4
1.2 4]
2 个评论
madhan ravi
2018-11-23
People here put some efforts to help you and you mercilessly close the question without clarifying how rude
ha ha
2018-11-24
采纳的回答
更多回答(2 个)
Andrei Bobrov
2018-11-21
0 个投票
Cell = mat2cell(A,accumarray(findgroups(A(:,2)),1),size(A,2));
Can be done easily with findgroups (or the older unique) and splitapply (or the older accumarray), in just one line:
A = [1 2;1.1 2;1.2 2;1 3;1.1 3;1.2 3;1 4;1.1 4;1.2 4];
C = splitapply(@(rows) {A(rows, :)}, (1:size(A, 1))', findgroups(A(:, 2)));
celldisp(C)
with unique and accumarray, you need two lines as you need the 3rd return value of unique:
A = [1 2;1.1 2;1.2 2;1 3;1.1 3;1.2 3;1 4;1.1 4;1.2 4];
[~, ~, id] = unique(A(:, 2));
C = accumarray(id, (1:size(A, 1))', [], @(rows) {A(rows, :)});
celldisp(C)
类别
在 帮助中心 和 File Exchange 中查找有关 Data Exploration 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!