필터 지우기
필터 지우기

How can I get coordinates from a grouping inside of a matrix.

조회 수: 3 (최근 30일)
Jonathan Salazar
Jonathan Salazar 2017년 7월 29일
답변: Image Analyst 2017년 7월 29일
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!

채택된 답변

Walter Roberson
Walter Roberson 2017년 7월 29일
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.

추가 답변 (1개)

Image Analyst
Image Analyst 2017년 7월 29일
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

카테고리

Help CenterFile Exchange에서 Elementary Math에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by