How do I make different groups within a matrix?

8 visualizaciones (últimos 30 días)
Jaime Castiblanques
Jaime Castiblanques el 12 de Mzo. de 2021
Comentada: Jaime Castiblanques el 15 de Mzo. de 2021
I have a 2904x3 matrix where each column represents the x, y and z coordinates of some vectors. Some of these vectors have the same z-coordinate and I need to group those together. Any ideas?
  3 comentarios
Jaime Castiblanques
Jaime Castiblanques el 12 de Mzo. de 2021
Hi Mathieu,
This allows me to have all my z organised, so thank you for that. However, I need to have each of those z values associated to their correpondent x and y values. Is there any way of organizing the z values within the 2904x3 matrix I mentioned, while keeping the x and y coordinates that go with each z value?
Thanks,
Jaime
Adam Danz
Adam Danz el 12 de Mzo. de 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);

Iniciar sesión para comentar.

Respuesta aceptada

Veronica Taurino
Veronica Taurino el 12 de Mzo. de 2021
Editada: Veronica Taurino el 12 de Mzo. de 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
  6 comentarios
Veronica Taurino
Veronica Taurino el 15 de Mzo. de 2021
I think it may happen what I told you in the comment above, with dedicated link. Did you check it?
Jaime Castiblanques
Jaime Castiblanques el 15 de Mzo. de 2021
I can't thank you enough for this. It was very helpful!

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by