# How do I make different groups within a matrix?

12 views (last 30 days)

Show older comments

##### 3 Comments

Adam Danz
on 12 Mar 2021

Extending Mathieu NOE's suggestion, the 3rd output to unique is a grouping variable but you should use the stable flag to ensure that the grouping values correspond to each element of the vector.

% xyz is nx3 matrix of [x,y,z] values

[~,~,zgroup] = unique(xyz(:,3));

Alternatively, if you just want to sort the matrix according to the z column,

xyzSort = sortrows(xyz,3);

### Accepted Answer

Veronica Taurino
on 12 Mar 2021

Edited: Veronica Taurino
on 12 Mar 2021

How do you need to get arrays associated?

Try this:

clear all

close all

x= (50)*rand(50,1);

y= (50)*rand(50,1);

z= (50)*rand(50,1);

% I create 4 equal z coordinates:

z(12)=z(23);

z(34)=z(23);

z(1)=z(23);

z(45)=z(23);

z(23)

% Put all together

AA= [x,y,z];

% Look for index

[~, ind] = unique(AA(:, 3), 'rows');

% DUPLICATE INDEX

duplicate_index = setdiff(1:size(AA, 1), ind) % This finds the indexes of duplicates

% duplicate values

duplicate_value = AA(duplicate_index, :) % This extracts the arrays with duplicates

results:

z(23) =

12.6859 % the Z value I imposed

duplicate_index = % indexes of duplicates the script finds

12 23 34 45

duplicate_value = % array with same Z the script finds

19.6717 40.5660 12.6859

47.5017 3.6415 12.6859

11.9746 35.4336 12.6859

38.4967 19.0424 12.6859

### More Answers (0)

### See Also

### Products

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!