How can I get coordinates from a grouping inside of a matrix.
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Jonathan Salazar
el 29 de Jul. de 2017
Respondida: Image Analyst
el 29 de Jul. de 2017
I have a matrix with 5 columns: atom number, mol_tag, then the x y and z coordinates. The mol_tag seperate the atoms into globules by sharing a common value, I need a matrix that will give three coordinates from each grouping of mol_tag so that I can calculate the normal vector to each of the mol_tag groupings. thank you!
0 comentarios
Respuesta aceptada
Walter Roberson
el 29 de Jul. de 2017
mol_tags = YourMatrix(:,2)
unique_mol_tags = unique( mol_tags );
num_tags = length(unique_mol_tags);
mol_normals = zeros(num_tags, 3);
for K = 1 : num_tags
three_idx = find( mol_tags == unique_mol_tags(K), 3, 'first');
coords = YourMatrix(three_idx, 3:5);
this_normal = ..... something with the coords
mol_normals(K, :) = this_normal;
end
It is possible to code the coordinate finding part without any explicit loop, but I do not think the result would be any clearer, as it involves some advanced accumarray hacks.
0 comentarios
Más respuestas (1)
Image Analyst
el 29 de Jul. de 2017
If by the "three coordinates from each grouping of mol_tag" you mean the mean x, y, and z over all rows with that mol_tag value, you can use grpstats() if you have the Statistics and Machine Learning Toolbox
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!