assign the same vector to be the same cell
    3 views (last 30 days)
  
       Show older comments
    
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 Comments
  madhan ravi
      
      
 on 23 Nov 2018
				People here put some efforts to help you and you mercilessly close the question without clarifying how rude
Accepted Answer
  madhan ravi
      
      
 on 21 Nov 2018
        
      Edited: madhan ravi
      
      
 on 21 Nov 2018
  
      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]';
group=reshape(A,2,3,3);
CELL=cell(1,3);
for i = 1:size(group,3)
CELL{i}=group(:,:,i)';
end
celldisp(CELL)
command window:
>> 
CELL{1} =
    1.0000    2.0000
    1.1000    2.0000
    1.2000    2.0000
CELL{2} =
    1.0000    3.0000
    1.1000    3.0000
    1.2000    3.0000
CELL{3} =
    1.0000    4.0000
    1.1000    4.0000
    1.2000    4.0000
>> 
More Answers (2)
  Andrei Bobrov
      
      
 on 21 Nov 2018
        Cell = mat2cell(A,accumarray(findgroups(A(:,2)),1),size(A,2));
0 Comments
  Guillaume
      
      
 on 21 Nov 2018
        
      Edited: Guillaume
      
      
 on 21 Nov 2018
  
      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)
0 Comments
See Also
Categories
				Find more on Data Exploration in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

