How can I get coordinates from a grouping inside of a matrix.
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Jonathan Salazar
il 29 Lug 2017
Risposto: Image Analyst
il 29 Lug 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 Commenti
Risposta accettata
Walter Roberson
il 29 Lug 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 Commenti
Più risposte (1)
Image Analyst
il 29 Lug 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 Commenti
Vedere anche
Categorie
Scopri di più su Elementary Math in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!